所以我正在编写一个输入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
答案 0 :(得分:6)
将所有数字的数字加在一起的简短方法是:
In [3]: sum(map(int, val))
Out[3]: 12
此处,map(int, val)
会对val
的字符进行迭代,并将每个字符转换为int
,sum(...)
将所有int
加在一起。
这种方法的好处在于它适用于任意数量的数字。
原始代码不起作用的原因是val[0]
等字符串,因此使用+
只需将这些字符串连接在一起即可。要添加数值,您必须先将字符转换为int
:
In [5]: int(val[0]) + int(val[1]) + int(val[2])
Out[5]: 12
答案 1 :(得分:3)
您必须将各个组件转换为数字才能添加它们:
total = int(val[0]) + int(val[1]) + int(val[2])
或者,更简洁:
total = sum(int(x) for x in val)
答案 2 :(得分:2)
一个优雅的解决方案是使用python的内置函数map和sum:
val = raw_input("Type your three digit number please: ")
total = sum(map(int, val))
print 'The sum of the three digits is', total
答案 3 :(得分:1)
你必须这样做:
total = int(val[0]) + int(val[1]) + int(val[2])
由于val
中的数字是字符,因此必须先将它们转换为整数。
请注意,在您的代码中,[ ]
对total
影响的值不会{{1}}(您不想要列表,只需要一个值)。
答案 4 :(得分:1)
试试这个:
res = raw_input("Enter value: ")
print sum(map(int, res))
答案 5 :(得分:0)
我认为您要寻找的答案是这样的:
a = int(input("3 digit number:"))
x = a // 100
y = a // 10 % 10
z = a % 10
print (x + y + z)
我是一个菜鸟,它是菜鸟学习的ez问题,但是当寻找ez答案时,我在任何地方都找不到它(here)问题是将“三个”数字的总和相加。 .. 如果数字是5或6个长字符,我就挂断电话了。如果没有定义数字,代码会是什么样子。
answer:
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))
但是我仍然有路要走,直到我正确理解为止