首页 文章

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

提问于
浏览
0

我有一个我的计算机类的作业,其中一个问题要求我们编写一个代码来计算数字的平均值,直到它到达一个字母(字母表) .

这是描述:

此函数接收一个包含数字或字母的字符串作为输入 . 该函数应返回一个浮点数,其中包含从字符串中第一个位置开始的字符串中的所有数字计算的平均值,并考虑所有数字,直到找到一个字母或直到到达字符串的结尾 . 如果没有数字,则函数应返回值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

例如,如果CodeWrite输入 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
    

相关问题