我正在进行CodeEval挑战并解决了以数字列表作为输入的问题,然后输出每行数字的总和。这里是我的代码,使某些你明白我的意思:从字符串中删除第一个字符
import sys
test_cases = open(sys.argv[1], 'r')
for test in test_cases:
if test:
num = int(test)
total =0
while num != 0:
total += num % 10
num /= 10
print total
test_cases.close()
我试图改写这个地方花费数作为一个字符串,切片各为0指数,然后将这些在一起(好奇,想看看什么时间和内存的差别是 - 全新的编码,并试图找到多种方式做的事情为好)
不过,我被困在得到这个执行并具备以下条件:
import sys
test_cases = open(sys.argv[1], 'r')
for test in test_cases:
sums = 0
while test:
sums = sums + int(str(test)[0])
test = test[1:]
print sums
test_cases.close()
我收到一个“ValueError:无效文字int()与基地10:“””
样品输入是一个文本文件,它看起来像这样:
3011
6890
8778
1844
42
8849
3847
8985
5048
7350
8121
5421
7026
4246
4439
6993
4761
3658
6049
1177
感谢您可以提供任何帮助!
而不是让一个字符,并创造新的没有第一个字符的字符串,你可以迭代字符串来处理char字符后的字符。它更有效率。我的意思是:'对于测试中的char:sum + = int(char)'而不是'while test:...'。 – GingerPlusPlus
谢谢,我也会试一试。 – Abraxas