2

所以我正在编写一个程序,输入一个 3 # 数字并将其分开。我无法弄清楚如何完全添加单独的数字?

例如:用户输入 345

我的程序会将 # 分开为 3、4、5,但我如何将这些数字加在一起?

到目前为止,这是我的代码,

#set variable
val = raw_input("Type your three digit number please: ")


print 'The first digit is {}'.format(val[0])
print 'The second digit is {}'.format(val[1])
print 'The third digit is {}'.format(val[2])


#set variable
total = [val[0] +val [1] + val[2]]
total_value = total

print 'The sum of the three digits is' total_value
4

6 回答 6

6

将所有数字的数字相加的一种简单方法是:

In [3]: sum(map(int, val))
Out[3]: 12

在这里,map(int, val)遍历 的字符val并将它们中的每一个转换为int,并将所有这些ssum(...)相加。int

这种方法的好处是它适用于任意位数。

您的原始代码不起作用的原因是val[0]etc 是strings,因此使用+简单地将这些字符串连接在一起。要添加数值,您必须int先将字符转换为:

In [5]: int(val[0]) + int(val[1]) + int(val[2])
Out[5]: 12
于 2013-03-22T09:49:09.360 回答
3

您必须将各个组件转换为数字才能添加它们:

total = int(val[0]) + int(val[1]) + int(val[2])

或者,更简洁:

total = sum(int(x) for x in val)
于 2013-03-22T09:49:13.427 回答
2

一个优雅的解决方案是使用 python 的内置函数mapsum

val = raw_input("Type your three digit number please: ")
total = sum(map(int, val))
print 'The sum of the three digits is', total
于 2013-03-22T09:48:42.067 回答
1

你只需要这样做:

total = int(val[0]) + int(val[1]) + int(val[2])

由于其中的数字val是字符,因此必须先将它们转换为整数。请注意,您的代码中没有[ ]影响到的值total(您不需要列表,您需要单个值)。

于 2013-03-22T09:48:13.743 回答
1

尝试这个:

res = raw_input("Enter value: ")
print sum(map(int, res))
于 2013-03-22T09:48:42.460 回答
0

我认为您要寻找的答案是这样的:

a = int(input("3 digit number:"))
x = a // 100
y = a // 10 % 10
z = a % 10
print (x + y + z)

我是一个完全的菜鸟,它是菜鸟学习的一个 ez 问题,但是在寻找 ez 答案时,我在任何地方都找不到它(这里)问题是添加“三个”数字的总和......我挂断了如果数字是 5 或 6 长,不知道如果没有定义数字,代码会是什么样子。

回答:

a = int(input("enter a few numbers:"))
conversion = str(a)
number =[]
for i in conversion:
    a = int(i)
    number.append(a)
print (sum(number))

或如我面前所示:

number = map(int, str(input('Enter a number: ')))
print(sum(number))

但在我正确理解这一点之前,我还有很长的路要走

于 2019-04-25T10:11:51.427 回答