如何在Python中计算数字的平均值
我在计算机课上有一个作业,其中一个问题要求我们写一段代码,计算数字的平均值,直到遇到一个字母为止。
这是题目的描述:
这个函数接收一个字符串作为输入,字符串里可以包含数字或字母。函数应该返回一个浮点数,表示从字符串的第一个位置开始计算的所有数字的平均值,直到遇到一个字母或者字符串的末尾。如果字符串里没有数字,函数应该返回
0.0
。
所以我写了以下代码:
def avgUntilLetter (st):
digits1 = [int(x) for x in st if x.isdigit()]
total = sum(digits1)
if digits1:
avg = float(total) / len(digits1)
return avg
if st.isalpha():
return 0.0
举个例子,如果我输入 avgUntilLetter('123a456')
,我应该得到 2.0
作为返回值。因为我是在计算所有数字的平均值,我需要在代码中添加什么才能修复这个问题呢?
1 个回答
1
你现在是把所有的数字都算上了,而不是只算开头的那些。你需要在遇到第一个不是数字的字符时就停止计算。
最简单的方法就是一个一个地检查所有字符,当你遇到第一个不是数字的字符时就跳出循环:
def avgUntilLetter(st):
total = count = 0
for x in st:
if not x.isdigit():
break
count += 1
total += int(x)
if not count:
return 0.0
return float(total) / count
这里的count
用来记录我们在开头找到了多少个数字;如果它还是0
,那就说明开头没有找到数字。
示例:
>>> def avgUntilLetter(st):
... total = count = 0
... for x in st:
... if not x.isdigit():
... break
... count += 1
... total += int(x)
... if not count:
... return 0.0
... return float(total) / count
...
>>> avgUntilLetter('123a456')
2.0