int对象不可迭代?

3zz*_*zzy 16 python int loops

inp = int(input("Enter a number:"))

for i in inp:
    n = n + i;
    print (n)
Run Code Online (Sandbox Code Playgroud)

...抛出一个错误: 'int' object is not iterable

我想通过添加每个数字找出总数,例如,110.1 + 1 + 0 = 2.我该怎么做?

谢谢

Ale*_*lli 20

首先,丢失该调用int- 您将一串字符转换为整数,这不是您想要的(您希望将每个字符视为自己的数字).更改:

inp = int(input("Enter a number:"))
Run Code Online (Sandbox Code Playgroud)

至:

inp = input("Enter a number:")
Run Code Online (Sandbox Code Playgroud)

现在这inp是一串数字,你可以逐位循环.

接下来,分配一些初始值n- 当你现在代码站立时,你会得到一个,NameError因为你永远不会初始化它.大概你想要n = 0for循环之前.

接下来,再次考虑字符和整数之间的差异.你现在有:

n = n + i;
Run Code Online (Sandbox Code Playgroud)

除了不必要的分号(Python是基于缩进的语法)之外,它试图将字符 i加到 整数 n - 这是行不通的!所以,变成了

n = n + int(i)
Run Code Online (Sandbox Code Playgroud)

将字符'7'转换为整数7,依此类推.


Gav*_*n H 8

尝试:

for i in str(inp):
Run Code Online (Sandbox Code Playgroud)

这将迭代字符串表示中的字符.一旦你拥有了每个角色,就可以像使用单独的角色一样使用它.


joh*_*ies 6

也许您正在尝试

for i in range(inp)
Run Code Online (Sandbox Code Playgroud)

我刚遇到这个错误,因为我没有使用range()


Mic*_*zyk 5

好吧,您想处理表示数字的字符串,迭代数字,而不是数字本身(这是一个抽象实体,可以用不同的方式书写,例如罗马数字中的“CX”或十六进制的“0x6e”(均为 110)管他呢)。

所以:

inp = input('Enter a number:')

n = 0
for digit in inp:
     n = n + int(digit)
     print(n)
Run Code Online (Sandbox Code Playgroud)

请注意,n = 0是必需的(在进入循环之前的某个地方)。您不能获取不存在的变量的值(并且 的右侧n = n + int(digit)获取 的值n)。如果n那时确实存在,它可能包含与您当前的需求完全无关的东西,从而导致意外行为;你需要防范这种情况。

此解决方案不尝试确保用户提供的输入实际上是一个数字。我将把这个问题留给你去思考(提示:你需要的一切都在Python 教程中)。