繁体   English   中英

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

[英]Why aren't the integers in the string performing the correct arithmetic operations when getting appended to a list?

从空格分隔的数字(例如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])

它表明 output 是:

1
2
3
4
11111111110
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()生成器将始终分配该范围内的下一个 integer ,而不管i当前设置为什么。 如果您希望能够跳过元素,则应使用while循环:

i = 0
while i < len(x)-1:
    ...
    i += 1

请注意,您的代码仅适用于 1 或 2 位数字。 您应该使用更通用的方法来查找数字之间的边界来处理任意数量的数字。

Barmar 已经解释了您的代码的问题

您还可以使用

n=int(input())
x=input().split(' ')
print(list(map(int, x)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM