Python int对象不可编辑?

Python int对象不可编辑?,python,int,loops,Python,Int,Loops,。。。引发错误:'int'对象不可编辑 我想把每一个数字加起来算出总数,例如110。1 + 1 + 0 = 2. 我该怎么做 谢谢试试: inp = int(input("Enter a number:")) for i in inp: n = n + i; print (n) 它将迭代字符串表示中的字符。一旦你有了每个字符,你就可以把它当作一个单独的数字来使用。for。。在语句中,您希望使用定义了迭代器的类型。简单int类型没有迭代器 好的,您希望处理表示数字的字符串,在数

。。。引发错误:
'int'对象不可编辑

我想把每一个数字加起来算出总数,例如110。1 + 1 + 0 = 2. 我该怎么做

谢谢

试试:

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

for i in inp:
    n = n + i;
    print (n)

它将迭代字符串表示中的字符。一旦你有了每个字符,你就可以把它当作一个单独的数字来使用。

for。。在
语句中,您希望使用定义了迭代器的类型。简单int类型没有迭代器

好的,您希望处理表示数字的字符串,在数字上迭代,而不是数字本身(这是一个抽象实体,可以用不同的方式书写,如罗马数字中的“CX”或“0x6e”十六进制(两者都表示110)或其他任何形式)

因此:

for i in str(inp):
注意,
n=0
是必需的(在进入循环之前的某个地方)。您不能获取不存在的变量的值(并且
n=n+int(数字)
的右侧获取
n
的值)。如果当时确实存在
n
,它可能包含与您当前需求完全无关的内容,导致意外行为;你需要警惕这一点


此解决方案不试图确保用户提供的输入实际上是一个数字。我将把这个问题留给您考虑(提示:您所需要的都在其中)。

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

致:

既然
inp
是一个数字串,您可以逐位循环它

接下来,为
n
分配一些初始值——当您现在编写代码时,您将得到一个
namererror
,因为您从未初始化它。大概您希望
n=0
for
循环之前

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

inp = input("Enter a number:")
除了不必要的分号(Python是一种基于缩进的语法)之外,它还试图将字符i和整数n相加——这行不通!所以,这个变成了

n = n + i;

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

旁注:如果要获得所有数字的总和,只需执行以下操作即可

n = n + int(i)

正如吉尔斯已经提到的那样

print sum(int(digit) for digit in raw_input('Enter a number:'))

当你在某件事情上循环时,关键字是“IN”,只要把它看作是某件事情的列表。不能循环使用普通整数。因此,这是不可容忍的

接受您的输入,并确保它是一个字符串,以便它是可编辑的

然后执行列表理解并将每个值更改回数字

现在,如果需要,可以对所有数字求和:

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

n = 0
for i in str(inp):
    n = n + int(i);
    print n
或者,如果您确实希望在执行时看到输出:

inp = [int(i) for i in str(input("Enter a number:"))]
print sum(inp)
你可以试着改变 inp中的i的
进入
范围内的i(1,inp):
迭代不能使用单个int。相反,您需要为它提供一个运行范围。

不要将其设置为
int()
,而将其设置为
range()
将解决此问题

def printadd(x,y):
    print x+y
    return x+y

inp = [int(i) for i in str(input("Enter a number:"))]
reduce(printadd,inp)
也许你是想

inp = range(input("Enter a number: "))
这将打印您的输入值(inp)次,要仅打印一次,请执行以下操作: 对于范围内的i(inp-inp+1) 印刷品(一)


我之所以出现这个错误,是因为我没有使用range()

OP-s问题的一个可能答案(“我想通过添加每个数字来计算总数,例如110.1+1+0=2。我该怎么做?”)是使用内置函数


嗯..上面写着TypeError:不支持+的操作数类型:'int'和'str'在相加时转换回int?当你把它加到整数时,它现在是一个字符串。所以在这种情况下,你可以说int(i)+n或者其他什么,如果你把这些数字放在一起,那么它就是110。我不确定11是从哪里来的。@Trent:这不起作用range()函数需要一个整数,哪个inp是string这会起作用,太好了,我建议将它作为一个函数,如果op作为知识,inp是一个全局变量,保持n为局部变量,这样在完成并再次调用时它会重置为零
def printadd(x,y):
    print x+y
    return x+y

inp = [int(i) for i in str(input("Enter a number:"))]
reduce(printadd,inp)
inp = range(input("Enter a number: "))
for i in range(inp)
num = int(input('Enter a number: ')
nums_sum = 0

while num:
    num, reminder = divmod(num, 10)
    nums_sum += reminder