Python 为什么字符串中的整数在被追加到列表时没有执行正确的算术运算?
从以空格分隔的数字(如1、2、3、10、20)的字符串输入中,这些数字将存储在一个列表中 n=初始输入 x=输入 对于rangelenx-1中的i: 如果x[i]!=和x[i+1]!=: k=x[i]*10+x[i+1] z、 附录 i=i+1 持续 elif x[i]!=和x[i+1]==: z、 附录[i] 其他: 持续 对于我在兰根: printz[i] 这表明输出是:Python 为什么字符串中的整数在被追加到列表时没有执行正确的算术运算?,python,string,list,Python,String,List,从以空格分隔的数字(如1、2、3、10、20)的字符串输入中,这些数字将存储在一个列表中 n=初始输入 x=输入 对于rangelenx-1中的i: 如果x[i]!=和x[i+1]!=: k=x[i]*10+x[i+1] z、 附录 i=i+1 持续 elif x[i]!=和x[i+1]==: z、 附录[i] 其他: 持续 对于我在兰根: printz[i] 这表明输出是: 1 2 3 4 11111111110 0 为什么字符串中的整数在被追加到列表时没有执行正确的算术运算?x[i]是一个
1
2
3
4
11111111110
0
为什么字符串中的整数在被追加到列表时没有执行正确的算术运算?x[i]是一个字符串,而不是一个数字。将字符串相乘时,它会复制该字符串。所以当x[i]='1'和x[i+1]='0'时,k=x[i]*10+x[i+1]将k设置为'11110'
你需要做k=intx[i]*10+intx[i+1]
另一个问题是,不能通过执行i=i+1跳过元素。您正在迭代一个范围,因此范围生成器将始终指定该范围内的下一个整数,而不管我当前设置为什么。如果希望能够跳过元素,则应使用while循环:
请注意,您的代码仅适用于1或2位数的数字。您应该使用更通用的方法来查找数字之间的边界,以处理任意数量的数字。Barmar已经解释了代码中的问题 您还可以使用 n=初始输入 x=输入。拆分“” printlistmapint,x
问题是什么?!提供你的
i = 0
while i < len(x)-1:
...
i += 1