繁体   English   中英

如何在没有空格的数字串中添加每个数字

[英]How to add each digit in a string of numbers with no spaces

我目前正在尝试在字符串输入中获取一系列数字,然后将这些数字转换为要打印的总数。 从概念上讲,这应该很容易,但我无法弄清楚。 我搜索了 Stack,但找不到适合我当前问题的解决方案。

这是我目前的进展:

def main():
numbers= input("Enter a sequence of numbers with no spaces:")
numbers= list(numbers)
total= ""
for i in numbers:
    total= total + i

print(total)

主要的()

我的逻辑是将数字序列分成一个列表,然后在循环中添加数字,然后生成总数。 不幸的是,这只返回原始字符串,所以我决定放:

对于我的数字:

i= eval(i)
total= total + i

对于我的数字:

i= int(i)
total= total + i

这将返回一个错误,指出 i 需要是一个字符串,但这只会导致另一个连接。

有谁知道如何生产我正在寻找的东西? 即“1234”= 10。

字符串本身是可迭代的,因此您可以对其进行迭代并将每个字符转换为 int,然后使用 sum 将它们相加。

>>> numbers= input("Enter a sequence of numbers with no spaces:")
Enter a sequence of numbers with no spaces:1234567
>>> sum([int(i) for i in numbers])
28

或丢失外部[]以使其成为生成器表达式。 无论哪种方式它都可以工作,但是对于像这样的小输入,可以说生成器的开销可能会超过其在内存使用方面的好处。

无需将字符串转换为列表,因为它已经是可迭代的。 相反,只需执行以下操作:

numbers = input(‘Enter numbers: ‘)
total = 0

for char in numbers:
    total += int(char)

print(total)

这会遍历字符串中的每个字符,将其转换为整数,并将其添加到总数中。

只是在这里添加一个答案。 如果您接受的字符串是逗号分隔的,那么如果它是 python 2.7,那么这里是一个单行

 sequence = map(int, input().split(','))

否则为python3,

sequence = list(map(int, input().split(',')))

我希望它能为已经给出的答案添加一些东西。

暂无
暂无

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

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