任务是这样的:算法的输入是自然数N。算法在此基础上构建一个新的数字R,如下所示。
这是我的代码:
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‘对象不可迭代
我做错了什么,或者我如何编写一个程序来找出一个数字的所有奇数的和?
发布于 2022-09-22 21:04:35
你有:
for a in range(100):因此,在下一行中,a将是第一次0,然后在第二次迭代时将是1等。a是int类型。
下一行:
s1 = sum(int(x) for x in a if int(x) % 2)因为a是一个int,所以for x in a试图迭代一个整数,但这是不可能的。因此,您得到了错误TypeError: 'int' object is not iterable。
发布于 2022-09-22 21:05:06
> s1 = sum(int(x) for x in a if int(x) % 2)您的短变量名称无助于澄清此代码的困难。让我们定义一个临时项目:
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。目前还不清楚您要解决的问题是什么,以及预期的输出是什么。
https://stackoverflow.com/questions/73820518
复制相似问题