Python:识别幸福数字时忽略空行

时间:2014-02-16 03:30:51

标签: python

任务(来自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: ''

这让我觉得我没有成功地忽略空行。我是在正确的轨道上吗?如果是这样,我应该对代码做出什么改变?

感谢您的帮助!

1 个答案:

答案 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()