我正在编写一个简单的 python 脚本,它接受一个数字,将其转换为二进制,并返回二进制数字的总和。这是我到目前为止所拥有的。
#!/usr/bin/python
def sum2(n):
a = str(bin(n))
b = a.replace('0b', '')
return sum([map(int, x) for x in b])
n = int(raw_input("Input number>"))
print sum2(n)
在简单的英语中,我将n转换为二进制,然后将其转换为字符串。我砍掉0b(来自bin())并将二进制字符转换为整数列表,然后尝试sum()它们。
当试图弄清楚如何将数字相加时,我搜索了一下,发现我应该能够sum()一个整数列表。当我尝试这样做时,我最终得到了这个回溯。
Traceback (most recent call last):
File "D:\scripts\sum2n1.py", line 9, in <module>
print sum2(x)
File "D:\scripts\sum2n1.py", line 6, in sum2
return sum([map(int, x) for x in b])
TypeError: unsupported operand type(s) for +: 'int' and 'list'
所以我发现sum()需要一个“可迭代”来完成它的工作。我四处搜索,发现有一个可以调用的 iter() 函数,但它似乎不起作用。
There's also __iter__() which doesn't work either.
谁能告诉我我做错了什么?我还是个初学者。提前致谢。
(不,这不是我的作业。)