所以我看了关于这个错误的其他SO问题和答案:
ValueError: invalid literal for int() with base 10
所有这些都是因为一个空字符串,一个代表一个浮点数的字符串,或一个带有额外引号的字符串。
我收到一个应该代表整数的字符串的错误。
我想知道是否有人解释为什么会这样?
输入文件:
1
10
123456789
3141592l
这是我的代码:
import time
start_time = time.time()
import sys, math
correct_set = {'0','1','2','3','4','5','6','7','8','9'}
test = open(sys.argv[1])
for n in test.readlines():
result_set = set()
i = 1
while True:
current = str(int(n) * i)
done = False
for char in current:
if char not in result_set:
result_set.add(char)
if result_set == correct_set:
print(i)
done = True
break
if done:
break
i += 1
print('time: {0} seconds'.format(time.time() - start_time))
输出:
10
9
3
Traceback (most recent call last):
File "C:/Users/shane/PycharmProjects/acm-practice/magic multiple/magic.py", line 11, in <module>
current = str(int(n) * i)
ValueError: invalid literal for int() with base 10: '3141592l'
如果我在那里添加一个印刷品(repr(n)),我得到:
'3141592l'
预期。
我也尝试过dir(n),它给出了与之前迭代相同的结果。
任何见解都将受到赞赏。
哦..我在Windows 8上运行pycharm中的python 3.4。
答案 0 :(得分:1)
字母字符l(el)不是1(一)是您尝试转换的字符串“3141592l”中的最后一个字符!
同样有趣的是,在你的例子中,readlines()将在每一行附加一个“\ n”。