Python无法解释的无效文字错误(字符串末尾的解决方案el alpha char)

时间:2014-10-15 22:46:38

标签: python python-3.4

所以我看了关于这个错误的其他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。

1 个答案:

答案 0 :(得分:1)

字母字符l(el)不是1(一)是您尝试转换的字符串“3141592l”中的最后一个字符!
同样有趣的是,在你的例子中,readlines()将在每一行附加一个“\ n”。