任务(来自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: ''
这让我觉得我没有成功地忽略空行。我是在正确的轨道上吗?如果是这样,我应该对代码做出什么改变?
感谢您的帮助!
答案 0 :(得分:1)
为了确保您不处理空行和新行,您只需添加:
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()