将大量数字切入其数字然后在Python中添加它们

时间:2011-09-05 13:32:20

标签: python

我正在尝试创建一个程序,无论用户输入什么数字,都会添加组成该数字的数字,如果它们总和为10,那就很好,如果没有,那么他们做错了。我想这应该很简单。虽然我在分割它们之后努力将这些数字加在一起。你知道我要做什么吗?

这是我的尝试:

    num=raw_input("input number?")
num.split() = a
if sum(a) == 10:
  print num + "is a valid number."
else:
  print num + "is invalid!"

谢谢。

3 个答案:

答案 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()