编写一个Python函数,接受一个字符串作为输入。 该函数必须返回字符串中出现的数字0-9的总和,忽略所有其他字符。如果字符串中没有数字,则返回0。
我的代码:
user_string = raw_input("enter the string: ")
new_user_string = list(user_string)
addition_list = []
for s in new_user_string:
if ( not s.isdigit()):
combine_string = "".join(new_user_string)
print ( combine_string)
else:
if ( s.isdigit()):
addition_list.append(s)
test = "".join(addition_list)
output = sum(map(int,test))
print ( output )
输出应为:
Enter a string: aa11b33
8
我的输出:
enter the string: aa11b33
aa11b33
aa11b33
1
2
aa11b33
5
8
答案 0 :(得分:4)
这看起来很像家庭作业......
getsum = lambda word: sum(int(n) for n in word if n.isdigit())
getsum('aa11b33')
Out[3]: 8
getsum('aa')
Out[4]: 0
解释这是如何逐件工作的:
n.isdigit()
仅由一个或多个数字组成,则函数True
将返回n
,否则返回false。 (Documentation)for n in word
将遍历可迭代word
中的每个项目。由于word
是一个字符串,因此python将每个字符视为一个单独的项目。sum(int(n) for n in word...)
将每个字符转换为int
并获取所有字符的总和,而后缀if n.isdigit()
会过滤掉所有非数字字符。因此,最终结果将只取字符串word
中所有单个数字字符的总和。lambda x: some expression using x
构造一个匿名函数,该函数将一些值x
作为参数,并返回冒号后表达式的值。为了给这个函数一个名字,我们可以把它放在赋值语句的右边。然后我们可以像普通函数一样调用它。通常最好使用普通的def getsum(x)
函数定义,但是lambda
表达式有时候很有用,如果你有一个一次性的函数,你只需要用作函数的参数。通常在python中,如果你能找到一种避免它们的方法,那就更好了,因为它们不被认为是非常易读的。这是一个完整的例子:
def sumword(word):
return sum( int(n) for n in word if n.isdigit() )
word = raw_input("word please: ")
print(sumword(word))
答案 1 :(得分:1)
应该是
user_string = raw_input("enter the string: ")
new_user_string = list(user_string)
addition_list = []
for s in new_user_string:
if ( not s.isdigit()):
combine_string = "".join(new_user_string)
else:
if ( s.isdigit()):
addition_list.append(s)
test = "".join(addition_list)
output = sum(map(int,addition_list))
print output
你得到的输出有两个原因。
答案 2 :(得分:0)
Python关心缩进:
user_string = raw_input("enter the string: ")
new_user_string = list(user_string)
addition_list = []
for s in new_user_string:
if ( not s.isdigit()):
combine_string = "".join(new_user_string)
#print ( combine_string)
else:
if ( s.isdigit()):
addition_list.append(s)
test = "".join(addition_list)
output = sum(map(int,test))
print ( output ) #<------ change here
还删除了你的内部打印声明,因为它不是你的输出。