首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请帮我解决这个问题。TypeError:“int”对象不可迭代--计算时会出现此错误。我做错了什么?

请帮我解决这个问题。TypeError:“int”对象不可迭代--计算时会出现此错误。我做错了什么?
EN

Stack Overflow用户
提问于 2022-09-22 20:48:04
回答 2查看 47关注 0票数 0

任务是这样的:算法的输入是自然数N。算法在此基础上构建一个新的数字R,如下所示。

  1. 计算了数N的十进制表示法中所有奇数位的和S1。如果没有奇数,则认为S1的和等于0。
  2. 计算了站在奇数位置上的数N的十进制表示法的所有数字的和S2。这些位置从左到右编号,从1开始。
  3. 计算结果R为S1与S2差值的模量。例如,N= 4321。奇数S1 =3+1= 4.奇数S2 =4+2= 6的位置上的数字之和.算法的结果是R=6-4= 2.指定最小数,根据该算法将得到31.

这是我的代码:

代码语言:javascript
复制
for a in range(100):
    s1 = sum(int(x) for x in a if int(x)%2==1)
    s2 = int(a[0])
    R = abs(s1-s2)
    if R == 31:
        print(a, R)

这行代码moment(s1 = sum(int(x) for x in a if int(x) % 2))返回一个错误:

TypeError:'int‘对象不可迭代

我做错了什么,或者我如何编写一个程序来找出一个数字的所有奇数的和?

EN

回答 2

Stack Overflow用户

发布于 2022-09-22 21:04:35

你有:

代码语言:javascript
复制
for a in range(100):

因此,在下一行中,a将是第一次0,然后在第二次迭代时将是1等。aint类型。

下一行:

代码语言:javascript
复制
    s1 = sum(int(x) for x in a if int(x) % 2)

因为a是一个int,所以for x in a试图迭代一个整数,但这是不可能的。因此,您得到了错误TypeError: 'int' object is not iterable

票数 2
EN

Stack Overflow用户

发布于 2022-09-22 21:05:06

代码语言:javascript
复制
>     s1 = sum(int(x) for x in a if int(x) % 2)

您的短变量名称无助于澄清此代码的困难。让我们定义一个临时项目:

代码语言:javascript
复制
     digits = list(map(int, str(a)))
     s1 = sum(d  for d in digits  if d % 2)
     s2 = digits[0]

( list()调用不是绝对必要的,但我想您可能会发现它在调试过程中很有帮助。)

显然,s1表示“第一和”。我不知道“第二和”是如何融入OP代码的。如果您想让人们进行有益的协作,那么最好将s2重命名。目前尚不清楚幻数 31意味着什么。

请参考https://stackoverflow.com/help/minimal-reproducible-example。目前还不清楚您要解决的问题是什么,以及预期的输出是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73820518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档