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

Python 如何在没有空格的数字串中添加每个数字,python,python-3.x,Python,Python 3.x,我目前正试图在字符串输入中获取一系列数字,然后将这些数字转换为要打印的总数。从概念上讲,这应该很容易,但我很难搞清楚。我搜索了堆栈,但找不到适合我当前问题的解决方案 这是我目前的进展: def main(): numbers= input("Enter a sequence of numbers with no spaces:") numbers= list(numbers) total= "" for i in numbers: total= total + i print(tota

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

这是我目前的进展:

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)
main()

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

以数字表示的i:

i= eval(i)
total= total + i
i= int(i)
total= total + i

以数字表示的i:

i= eval(i)
total= total + i
i= int(i)
total= total + i
这将返回一个错误,指出我需要是一个字符串,但这只会导致另一个串联


有人知道如何制作我想要的东西吗?ie“1234”=10。

字符串本身是一个iterable,因此您可以对其进行迭代,将每个字符转换为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(',')))

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

试着把
total=0
作为你的起点。对于int,
+
操作是加法。对于字符串,
+
操作是串联,这意味着将两个字符串连接成一个新字符串。那么你就要重新连接你刚刚分开的绳子了。您还需要将
i
转换为int以添加到现有的总数中。感谢这项工作做得很好,我肯定把事情复杂化了。再次感谢,一旦它让我知道这是正确的答案。谢谢,我已经在其他示例中使用了拆分函数,但是由于它没有分隔符,这使事情变得复杂,无论如何感谢您的输入!但是,按照您使用的方式,您将无法区分一位数字和多个数字。所有的代码都是一样的。谢谢你的输入!