私は、ユーザーがテキストファイルにsalesを入力し、プログラムがファイルを読み取り、各販売カテゴリの合計金額を出力するプログラムを作成しています。量がフロートに解析することができない場合はIOError間違ったファイル名とValueErrorを用:プログラムは2つの例外を持っている必要がありますPythonで印刷
Alice;Lodging;49.99;10/12/2016
Bob;Dining;8.42;10/13/2016
Charles;Lodging;55.76;10/14/2016
David;Dining;19.95;10/15/2016
Eve;Rental;105.99;10/16/2016
Frank;Rental;raft;10/17/2016
:ここでは、テキストファイルの例を示します。 ValueErrorでは、その行をスキップしてプログラムを続行する必要があります。ここで
は、これまでの私のコードです:
from collections import defaultdict
my_dict = defaultdict(float)
filename = str(input(("Sales file: ")))
try:
with open(filename) as f:
for line in f.readlines():
_, key, val, _ = line.split(';')
try:
my_dict[key] += float(val)
except ValueError:
print ('The amount %s, cannot be converted to a float!', line.strip())
except IOError:
print ("No such file or directory:", filename)
sys.exit()
私はそれを実行するたびに、私はこれを取得:
Sales file: sales.txt
The amount %s, cannot be converted to a float! Frank;Rental;raft;10/17/2016
私のコードが間違っていますか?
その行の3番目のセクションにあるものを見てください。そこには番号はありません;単に「raft」と書かれています。 – user2357112
ランダムなものは何ですか?テキストファイルの "raft"? – Douglas
あなたのインデントも修正してください。あなたの 'try/except'ブロックが壊れています。 – roganjosh