Python:识别快乐数字时忽略空行

标签 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: ''

这让我觉得我没有成功地忽略空行。我走在正确的轨道上吗?如果是这样,我应该对代码进行哪些更改?

感谢您的帮助!

最佳答案

为了确保不处理空行和新行,您只需添加:

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/

相关文章:

python - 如何检查字符串是否是 python 中的可调用名称?

python - pyodbc.尝试打开jet数据库时出错

Python Scapy 与 dpkt

Python - 当数据不是数字时如何从 csv 文件制作条形图

python - 计算 pandas 列中条目的频率,然后使用 X 轴字符串标签将它们绘制成图

python - 如何显示来自网络的图像?

python - 使用 open cv 检测弧的中心

python - 为什么 np.argwhere 的结果形状与其输入不匹配?

python - 为什么改变字体大小后没有立即改变?

python - 使用日历键盘选择两个日期 Python Telegram Bot