質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

924閲覧

プログラムを実行したい

80ZX7OR0Bib6DNk

総合スコア12

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/20 00:07

編集2019/02/20 00:33

こんにちは。
・以下のコードを実行入力したところうまく実行されません。
どういったエラーなのかわかりません。
教えてください。よろしくお願いします。

・実行結果

Traceback (most recent call last): File "pyroad.py", line 40, in <module> pyroadCount = sum(1 for line in open('pyroad.py')) # pyroad.pyの行数は除外 File "pyroad.py", line 40, in <genexpr> pyroadCount = sum(1 for line in open('pyroad.py')) # pyroad.pyの行数は除外 UnicodeDecodeError: 'cp932' codec can't decode byte 0x96 in position 927: illegal multibyte sequence

です。

・ちなみにソースコードは以下になります。
https://pycarnival.com/pyroad/
このサイトの一つ目をそのままコピペしました。

・コード

import os import datetime def allFileListGet(): path = '.' file_list = [] for root, dirs, files in os.walk(path): for file in files: file_list.append(os.path.join(root, file)) return file_list def pyFileListGet(allFileList): pyFileList = [] for file_name in allFileList: if file_name[-3:] == '.py': pyFileList.append(file_name) return pyFileList def returnLines(pyList): line_sum = 0 for file_name in pyList: lines_count = sum(1 for line in open(f'{file_name}')) line_sum += lines_count return line_sum def fileWrite(data): f = open('pyroad.txt', 'a') now = datetime.datetime.now() f.write(f'{data},{now.year},{now.month},{now.day},{now.hour},{now.minute},{now.second}\n') f.close() pyroadCount = sum(1 for line in open('pyroad.py')) # pyroad.pyの行数は除外 allLines = returnLines(pyFileListGet(allFileListGet())) - pyroadCount rankList = ['二等兵', '一等兵', '上等兵', '伍長', '軍曹', '曹長', '准尉', '少尉', '中尉', '大尉', '少佐', '中佐', '大佐', '准将', '少将', '中将', '大将', '元帥'] levelLinesList = [1000, 2000, 3000, 5000, 6000, 7000, 8000, 9000, 10000, 12000, 14000, 16000, 18000, 20000, 25000, 30000, 50000] if allLines < levelLinesList[0]: print(f'{allLines}行Pythonを書いているぞ!') print(f'お前は{rankList[0]}でまだ新米パイソニスタだ。\n書け!書けば分かる!') print('ごちゃごちゃ考えるな。1行でもコードを書け!') elif allLines > levelLinesList[-1] - 1: print(f'{allLines}行もPythonを書いているとは...') print(f'あなた様は{rankList[-1]}です。') print('その調子でがんばってください。') else: for i, _ in enumerate(levelLinesList): # 小さいほうから総当りの方法 if allLines > levelLinesList[i] - 1 and allLines < levelLinesList[i+1]: print(f'{allLines}行Pythonを書いているぞ!') print(f'お前は{rankList[i+1]}パイソニスタだ!') print('ごちゃごちゃ考えるな。1行でもコードを書け!') break # データの書き込み fileWrite(allLines)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwind918

2019/02/20 00:12 編集

コードは<code>を使用してください。
guest

回答1

0

ベストアンサー

記載のコードで問題なく動作しました。
name 'os' is not definedというのは、osという名前が定義されていないということです。
1行目のimport osの記載があれば本来動くはずなので、実行したファイルの1行目が欠けていないか確かめてみてください。

投稿2019/02/20 00:22

Udomomo

総合スコア1524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

80ZX7OR0Bib6DNk

2019/02/20 00:33

早速の回答有難うございます。 もう一度やり直したところ、40行目にエラー?のようなものが出ました
80ZX7OR0Bib6DNk

2019/02/20 00:34

実行結果を質問の実行結果の部分に記載させていただきました。 よろしくお願いいたします。
firedfly

2019/02/20 00:47

あらゆるエラーについて人に訊くわけにはいきません。 まずは「UnicodeDecodeError: 'cp932' codec can't decode byte 0x96 in position 927: illegal multibyte sequence」で検索してみましょう。
---stax---

2019/02/20 00:55

firedflyさんのアドバイスとおり検索すると文字コードに関する記述がされた記事が見つかると思います。 ヒントはopen()の部分に少しだけ追記すれば動作すると思います!
80ZX7OR0Bib6DNk

2019/02/20 01:06

回答ありがとうございます。 調べて、encoding="utf-8" を追加したところうまく動作しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問