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 = 0在for循环之前.
接下来,再次考虑字符和整数之间的差异.你现在有:
n = n + i;
Run Code Online (Sandbox Code Playgroud)
除了不必要的分号(Python是基于缩进的语法)之外,它试图将字符 i加到 整数 n - 这是行不通的!所以,这变成了
n = n + int(i)
Run Code Online (Sandbox Code Playgroud)
将字符'7'转换为整数7,依此类推.
尝试:
for i in str(inp):
Run Code Online (Sandbox Code Playgroud)
这将迭代字符串表示中的字符.一旦你拥有了每个角色,就可以像使用单独的角色一样使用它.
好吧,您想处理表示数字的字符串,迭代数字,而不是数字本身(这是一个抽象实体,可以用不同的方式书写,例如罗马数字中的“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 教程中)。