私はライン上で47 print_data(データのエラー「範囲外の文字列インデックス」と別のエラーを取得し続ける理由を私は知らない。誰か理由を説明していただけますか?あなたの私のコードに誤りがありますか?文字列インデックスが範囲外ですか?
def open_file():
user_input = input('Enter a file name: ')
try:
file = open(user_input, 'r')
return file
except FileNotFoundError:
return open_file()
def read_data(file):
counter = [0 for _ in range(9)]
for line in file.readlines():
num = line.strip()
if num.isdigit():
i = 0
digit = int(num[i])
while digit == 0 and i < len(num):
i += 1
digit = int(num[i])
if digit != 0:
counter[digit - 1] += 1
return counter
def print_data(data):
benford = [30.1, 17.6, 12.5, 9.7, 7.9, 6.7, 5.8, 4.1, 4.6]
header_str = "{:5s} {:7s}{:8s}"
data_str = "{:d}:{:6.1f}% ({:4.1f}%)"
total_count = sum(data)
print(header_str.format("Digit", "Percent", "Benford"))
for index, count in enumerate(data):
digit = index + 1
percent = 100 * count/total_count
print(data_str.format(digit, percent, benford[index]))
def main():
file = open_file()
data = read_data(file)
print_data(data)
file.close()
if __name__ == "__main__":
main()
ありがとうございました。これは、正確なエラーですあなたの場合は
while digit == 0 and i < len(num): i += 1 digit = int(num[i])
:私は、私はエラーがこれに由来信じる
Traceback (most recent call last):
File "./lab08.py", line 52, in <module>
main()
File "./lab08.py", line 47, in main
data = read_data(file)
File "./lab08.py", line 26, in read_data
digit = int(num[i])
。 – user2357112
ファイルにサンプル行を付けることはできますか? – Rosh
エラーを再現できません:問題を引き起こすのに十分な入力ファイルが必要です。 – Prune