将大数拆分成各个数字并相加(Python)
我正在尝试制作一个程序,用户输入一个数字后,程序会把这个数字的每一位数字加起来。如果加起来的结果是10,那就很好;如果不是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 个回答
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
中,有两个函数,raw_input()
返回字符串,而 input()
返回整数(如果输入其他类型则会出错)。而在 Python 3.x
中,raw_input()
函数已经被 input()
替代了。
4
split.num()
这个写法没什么作用。num.split()
是可以用的,但它不能解决问题,因为它是按照空格来分割的。你想要的是把 num
中的数字字符转换成它们所代表的数字,这个可以通过列表推导式来实现:
digits = [int(c) for c in num]
然后把这个表达式的结果加起来。
6
或者你可以使用 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
(函数, 序列) 会对序列中的每一个项目调用这个函数,并返回一个包含所有返回值的列表。你可以查看 docs.python.org 了解更多。这是因为 raw_input
返回的是一个字符串。