我正在尝试创建一个程序,无论用户输入什么数字,都会添加组成该数字的数字,如果它们总和为10,那就很好,如果没有,那么他们做错了。我想这应该很简单。虽然我在分割它们之后努力将这些数字加在一起。你知道我要做什么吗?
这是我的尝试:
num=raw_input("input number?")
num.split() = a
if sum(a) == 10:
print num + "is a valid number."
else:
print num + "is invalid!"
谢谢。
答案 0 :(得分:5)
或者您可以使用map
功能:
In [1]: a="1234567890"
In [2]: map(int,a)
Out[2]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
In [3]: sum(map(int,a))
Out[3]: 45
map(function,sequence)为每个序列的项调用函数(item),并返回返回值列表。请参阅docs.python.org这是有效的,因为raw_input
会返回一个字符串。
答案 1 :(得分:4)
split.num()
没有做任何事情。 num.split()
有效,但不解决问题,因为它在空格上分裂。你想要的是将num
中的数字字符转换为它们代表的数字,你可以用列表理解来做:
digits = [int(c) for c in num]
然后sum
表达式的结果。
答案 2 :(得分:2)
您正在使用raw_input()
来提示用户,此函数返回一个字符串(在您的情况下由数字组成),如果您需要对它们进行计算,则必须使用int()
进行转换之前。以下是您的代码的外观:
num = raw_input('input number: ')
if sum(int(i) for i in num) == 10:
print "OK"
else:
print "FAILED"
请记住,在Python 2.x
中,有2个函数,raw_input()
返回一个字符串,input()
返回整数(如果给出了其他内容则失败),而在{{ 1}} Python 3.x
函数已替换为raw_input()
。