如何在Python中计算数字的平均值

0 投票
1 回答
1521 浏览
提问于 2025-05-01 02:00

我在计算机课上有一个作业,其中一个问题要求我们写一段代码,计算数字的平均值,直到遇到一个字母为止。

这是题目的描述:

这个函数接收一个字符串作为输入,字符串里可以包含数字或字母。函数应该返回一个浮点数,表示从字符串的第一个位置开始计算的所有数字的平均值,直到遇到一个字母或者字符串的末尾。如果字符串里没有数字,函数应该返回 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

撰写回答