从空格输入数字(例如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
为什么在添加到列表后,字符串中的整数不执行正确的算术运算?
使用此:
listOfNumbers = [int(x) for x in input().split()]
这将使用空格分隔的数字列表,并自动使每个数字成为整数,同时将所有内容一次性变成一个列表。
只需使用split()方法拆分列表,然后就可以转换拆分列表中的条目。
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