将大量数字切分为数字,然后在Python中添加它们
我正在尝试制作一个程序,在这个程序中,无论用户输入什么数字,组成该数字的数字都会被添加,如果它们的总和为10,那么它是好的,如果不是,那么它们就做错了。我想这应该很简单。虽然在我把这些数字分开后,我很难把它们加在一起。你知道我要做什么吗 这是我的尝试:将大量数字切分为数字,然后在Python中添加它们,python,Python,我正在尝试制作一个程序,在这个程序中,无论用户输入什么数字,组成该数字的数字都会被添加,如果它们的总和为10,那么它是好的,如果不是,那么它们就做错了。我想这应该很简单。虽然在我把这些数字分开后,我很难把它们加在一起。你知道我要做什么吗 这是我的尝试: num=raw_input("input number?") num.split() = a if sum(a) == 10: print num + "is a valid number." else: print num +
num=raw_input("input number?")
num.split() = a
if sum(a) == 10:
print num + "is a valid number."
else:
print num + "is invalid!"
谢谢。split.num()没有任何作用num.split()。您需要将num
中的数字字符转换为它们所代表的数字,这可以通过列表理解来实现:
digits = [int(c) for c in num]
然后sum
该表达式的结果。如果使用raw\u input()
提示用户,此函数返回一个字符串(在您的情况下由数字组成),如果需要对其进行计算,则必须先使用int()
对其进行转换。以下是您的代码的外观:
num = raw_input('input number: ')
if sum(int(i) for i in num) == 10:
print "OK"
else:
print "FAILED"
请记住,在Python2.x
中,有两个函数,raw\u input()
返回字符串,input()
返回整数(如果给定其他内容,则返回失败),而在Python3.x
中,raw\u input()
函数已被input()
替换 或者您可以使用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),并返回返回值列表。查看此操作,因为raw\u input
返回一个字符串。这是一个愚蠢的问题,但您在其中引入了“i”,python如何知道您引用的是输入中的每一个数字?除此之外,非常感谢您的回答,它非常完美,并且对我帮助很大。@rooney:您可以想象,python的阅读已经足够深入,可以看到在(int(i)代表i in num)
,i
中依次是每个值。基本上,它在包含正确值i
的上下文中多次执行表达式int(i)
。请记住,您不必在Python中预先声明变量,它会根据需要查找变量,因此列表理解和生成器表达式的语法就是这样。谢谢Fredrik!!!只是出于好奇-有没有其他方法可以通过使用迭代来实现?我想更多地接触它!非常感谢澳大利亚!