为什么字符串中的整数在附加到列表后不执行正确的算术运算?

问题描述 投票:-1回答:3

从空格输入数字(例如1 2 3 10 20)的字符串输入中,数字将存储在列表中。

n=int(input())
x=input()
for i in range(len(x)-1):
    if x[i]!=" " and x[i+1]!=" ":
        k=x[i]*10+x[i+1]
        z.append(k)
        i=i+1
        continue
    elif x[i]!=" " and x[i+1]==" ":
        z.append(x[i])
    else:
        continue
for i in range(n):
    print(z[i])

显示输出为:

1
2
3
4
11111111110
0

为什么在添加到列表后,字符串中的整数不执行正确的算术运算?

python string list
3个回答
1
投票

使用此:

listOfNumbers = [int(x) for x in input().split()]

这将使用空格分隔的数字列表,并自动使每个数字成为整数,同时将所有内容一次性变成一个列表。


0
投票

只需使用split()方法拆分列表,然后就可以转换拆分列表中的条目。


0
投票

x[i]是字符串,而不是数字。乘以字符串时,它会复制该字符串。因此,当x[i] == '1'x[i+1] == '0'时,k=x[i]*10+x[i+1]k设置为'11111111110'

您需要执行k = int(x[i])*10 + int(x[i+1])

另一个问题是,您无法通过执行i = i + 1来跳过元素。您要在一个范围内进行迭代,因此range()生成器将始终分配该范围内的下一个整数,而不管当前i的设置是什么。如果希望能够跳过元素,则应使用while循环:

i = 0
while i < len(x)-1:
    ...
    i += 1
© www.soinside.com 2019 - 2024. All rights reserved.