计算算术平均值时 Python 代码中的零除法错误

zero division error in python code while calculating arithmetic mean

提问人:uhhyem 提问时间:11/9/2023 更新时间:11/9/2023 访问量:57

问:

a=True
k=0 #amount of numbers
s=0 #sum of numbers
print("Enter multiple numerical values. Entering will be completed when you enter 0")
while a==True:
    c=int(input())
    if c>0 or c<0:
        continue
    elif c==0:
        break
    if c!=0:
        s=s+c
        k=k+1
    else:
        a=False
print(str(s/k))

我正在学习如何用 Python 语言编码。我试图编写一个计算算术平均值的程序,但当我尝试将 S(即数字之和)除以 K(即数字的数量)时,会出现零除法错误。但是,k 不等于零。

Python 数学

评论

4赞 Sayse 11/9/2023
如果你在 C 不是 0 时继续,然后在 0 时中断,那么 K 什么时候有机会改变?
3赞 Barmar 11/9/2023
我想你误解了什么。continue
1赞 juanpa.arrivillaga 11/9/2023
c>0 or c<0相当于c != 0
0赞 John Gordon 11/9/2023
continue并不意味着“继续这个循环迭代”,而是意味着“中止这个循环迭代,开始下一次迭代”。

答:

1赞 JonSG 11/9/2023 #1

目前,您的代码遵循以下两种路径之一:

如果等于你脱离了循环c0break

如果不等于 然后进行循环的下一次迭代。c0(c>0 or c<0)continue

因此,问题归结为递增且从未执行的代码,然后当您转到时,最终会出现除以 0 的异常。ksprint(s/k)

如果第一个条目是,您仍然会在此处获得异常,但这会更像您想要执行的操作:0

k=0 #amount of numbers
s=0 #sum of numbers

print("Enter multiple numerical values. Entering will be completed when you enter 0")
while True:
    c = int(input())

    if c == 0:
        break

    s = s + c
    k = k + 1

print(s/k)

评论

1赞 jakebake 11/9/2023
这可能是解决您问题的最佳答案。我还要补充一点,对于您将来使用的 if/else 语句,该结构通常具有尽可能多的 elif。如果你没有用 else 结束它,那么在 elif 之后加上 if' 并不是一个好的代码。if>elif>else