Python 无法连接';str';和';int';对象,但我可以通过自己的空闲运行它吗?
我使用以下代码在Python 2.7.10上运行:Python 无法连接';str';和';int';对象,但我可以通过自己的空闲运行它吗?,python,Python,我使用以下代码在Python 2.7.10上运行: import sys with open(sys.argv[1], 'r') as input: test_cases = input.read().strip().splitlines() for test in test_cases: orig_number = test iteration = 0 while True: if str(orig_number) == str(orig_n
import sys
with open(sys.argv[1], 'r') as input:
test_cases = input.read().strip().splitlines()
for test in test_cases:
orig_number = test
iteration = 0
while True:
if str(orig_number) == str(orig_number)[::-1]:
print iteration, orig_number
break
iteration += 1
orig_number = orig_number + int(str(orig_number)[::-1])
它将顺利运行,但在Python2.7.3的CodeEval上运行时,它会不断返回
cannot concatenate 'str' and 'int' objects
在最后一行,但我不明白为什么它会返回,因为这两个部分似乎都是int。您正在循环包含字符串的
测试用例
,因此首先您不需要使用str
将其转换为字符串,您需要将其转换为int
,作为代码的结尾
此外,您也可以简单地作为一种更具python风格的方式,在文件对象上循环,而不是读取和剥离,然后使用splitline
:
import sys
with open(sys.argv[1], 'r') as input:
for test in input:
orig_number = test.strip()
iteration = 0
while True:
if orig_number == orig_number[::-1]:
print iteration, orig_number
break
iteration += 1
orig_number = int(orig_number) + int(orig_number[::-1])
还请注意,由于将字符串
转换为int
可能会引发异常,因此可以使用try except
语句处理此类问题
try:
orig_number = int(orig_number) + int(orig_number[::-1])
except ValueError:
# raise exception or do stuff
我不确定这在哪里起作用,但很明显,
orig_number
不是int
。当您从文件中读取内容,然后对其执行strip()
/splitlines()
操作时,您会得到一个字符串列表
因此,在for
循环中,test
是一个字符串,因此orig\u number
也是一个字符串
您不需要显式地将它们转换为str
,您应该在尝试添加之前将orig\u编号
转换为int
,然后将它们转换回str
以保存在orig\u编号
中。例如:
import sys
with open(sys.argv[1], 'r') as input:
test_cases = input.read().strip().splitlines()
for orig_number in test_cases:
iteration = 0
while True:
if orig_number == orig_number[::-1]:
print iteration, orig_number
break
iteration += 1
orig_number = str(int(orig_number) + int(orig_number[::-1]))
因为没有提供任何示例输入,所以很难知道您要做什么,但是
orig_number
是一个字符串。请注意,因为它是一个字符串str(orig\u number)
只返回orig\u number
。很抱歉,这是一个多行,每行放一个数字,这必须颠倒,然后加上它自己,直到数字是一个回文。这在第8行返回了一个新的错误,检查数字,它颠倒说int没有属性getitem,但否则我从来没有想过单独做剥离。我肯定会开始实现简单的答案,它完美地满足了我的需要。我一直在假设,如果输入是一个数字,它已经是一个整数了,不管我如何改变它,我需要远离它。