Python-TypeError:&int&对象不可迭代 [英] Python - TypeError: 'int' object is not iterable

查看:0
本文介绍了Python-TypeError:&int&对象不可迭代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我的代码:

import math

print("Hey, lets solve Task 4 :)")

number1 = input("How many digits do you want to look at? ")
number2 = input("What would you like the digits to add up to? ")

if number1 == 1:
    cow = range(0,10)
elif number1 == 2:
    cow = range(10,100)
elif number1 == 3:
    cow = range(100,1000)
elif number1 == 4:
    cow = range(1000,10000)
elif number1 == 5:
    cow = range(10000,100000)
elif number1 == 6:
    cow = range(100000,1000000)
elif number1 == 7:
    cow = range(1000000,10000000)
elif number1 == 8:
    cow = range(10000000,100000000)
elif number1 == 9:
    cow = range(100000000,1000000000)
elif number1 == 10:
    cow = range(1000000000,10000000000)

number3 = cow[-1] + 1

n = 0
while n < number3:
    number4 = list(cow[n])
    n += 1

我希望创建一个循环,以便对于列表中的每个元素,它将被分解为它的每个字符。例如,假设数字137在列表中,则它将转换为[1,3,7]。然后我想把这些数字加在一起(我还没有开始,但我知道怎么做了)。

但是,我一直收到此错误消息:

TypeError: 'int' object is not iterable

我做错了什么?

推荐答案

您的线路有问题:

number4 = list(cow[n])

它尝试获取返回一个整数的cow[n],并使其成为一个列表。这不起作用,如下所示:

>>> a = 1
>>> list(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>

也许您打算将cow[n]放在列表中:

number4 = [cow[n]]

请看下面的演示:

>>> a = 1
>>> [a]
[1]
>>>

另外,我想解决两件事:

  1. 您的While-语句末尾缺少:
  2. 这样使用input被认为是非常危险的,因为它将其输入计算为真正的Python代码。这里最好使用raw_input,然后使用int将输入转换为整数。

要分割数字,然后按您希望的方式将其相加,我将首先将数字设置为字符串。然后,由于字符串是可迭代的,您可以使用sum

>>> a = 137
>>> a = str(a)
>>> # This way is more common and preferred
>>> sum(int(x) for x in a)
11
>>> # But this also works
>>> sum(map(int, a))
11
>>>

这篇关于Python-TypeError:&amp;int&amp;对象不可迭代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆