gpt4 book ai didi

python - ZeroDivisionError : float division by zero, 如何在用户首次输入特定字符串时打印某些内容然后退出?

转载 作者:行者123 更新时间:2023-12-01 04:07:50 28 4
gpt4 key购买 nike

我正在做一项作业,要求我编写一个计算列表平方平均值的程序。

因此,如果程序正常,它将显示:

avgSumOfSquares()
Enter next number: 3.27
Enter next number: -1.9
Enter next number: 6
Enter next number: -1
Enter next number: end
The average of the sum of the squares is: 12.825725
12.825725
avgSumOfSquares()
Enter next number: end
No numbers were entered.

但是,当我输入 end 时,我的程序告诉我 Traceback(最近一次调用最后一次):

File "<pyshell#9>", line 1, in <module> 
avgSumOfSquares()
File , line 34, in avgSumOfSquares
average = num_sum / amount
ZeroDivisionError: float division by zero

这是我的代码

def avgSumOfSquares():
input_list = []
user_input = 0
num_sum = 0

while user_input != "end":

input_list.append(float(user_input))
user_input = input("Enter next number :")

squared = [i ** 2 for i in input_list]

num_sum = sum(squared)
amount = len(squared) - 1

if len(input_list) == 0:
print("No numbers were entered.")

average = num_sum / amount

print("The average of the sum of the squares is: ", average)

最佳答案

它失败了,因为对于第二个数字,input_list 的长度为 1。因此,ammount 将为 0。您应该将平均检查器放在elif block 如下:

while user_input != "end":
input_list.append(float(user_input))
user_input = input("Enter next number :")

if len(input_list) == 0:
print("No numbers were entered.")
elif len(input_list) > 1:
squared = [i ** 2 for i in input_list]

num_sum = sum(squared)
amount = len(squared) - 1
average = num_sum / amount

print("The average of the sum of the squares is: ", average)

这应该可以解决您的问题,但我不知道为什么您将 ammount 定义为 len(squared) - 1。 3 个数字的平均值是 3 个数字的总和除以 3,而不是 2。如果您正确计算平均值,elif 可能是 else 相反。

关于python - ZeroDivisionError : float division by zero, 如何在用户首次输入特定字符串时打印某些内容然后退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347237/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com