将大数拆分成各个数字并相加(Python)

0 投票
3 回答
3324 浏览
提问于 2025-04-17 01:29

我正在尝试制作一个程序,用户输入一个数字后,程序会把这个数字的每一位数字加起来。如果加起来的结果是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 返回的是一个字符串。

撰写回答