任务(来自 codeeval)是读取一个包含几个不同数字的文件,如果是一个满意的数字则打印 1,如果不是一个满意的数字则打印 0。任务的一部分是忽略该项目 (num
)(如果它是空行)。这是我的代码:
import sys
test_cases = open(sys.argv[1], 'r')
for num in test_cases:
if num=="":
pass
else:
liszt=[]
while num>1:
newnum=str(num)
total=0
for i in newnum:
total+=int(i)**2
if total not in liszt:
liszt.append(total)
num=total
else:
print 0
break
else:
print 1
test_cases.close()
我收到一条引用 total+=int(i)**2
行的错误消息,内容如下:
ValueError: invalid literal for int() with base 10: ''
这让我觉得我没有成功地忽略空行。我走在正确的轨道上吗?如果是这样,我应该对代码进行哪些更改?
感谢您的帮助!
最佳答案
为了确保不处理空行和新行,您只需添加:
if num.strip():
num = num.rstrip('\n')
# DO SOMETHING HERE...
# ...
所以你会得到:
import sys
test_cases = open(sys.argv[1], 'r')
for num in test_cases:
if num.strip():
num = num.rstrip('\n')
# DO SOMETHING HERE...
# ...
test_cases.close()
关于Python:识别快乐数字时忽略空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21806935/