ZeroDivisionError:浮点数除以零,如何打印某些内容,然后在用户第一次输入特定字符串时退出?

2024-09-29 22:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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(最近一次调用last):

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

这是我的密码

^{pr2}$

Tags: ofthein程序number列表作业line
2条回答

我不明白你为什么要把它分成len(squared) - 1它应该是len(squared)也许你认为结束输入,但你没有添加它的输入列表,所以没有必要。在

def avgSumOfSquares():
    input_list = []
    num_sum = 0             
    user_input = input("Enter number :")
    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.")     
    else:
        squared = [i ** 2 for i in input_list]
        num_sum = sum(squared)
        amount = len(squared)               
        average = num_sum / amount
        print("The average of the sum of the squares is: ", average)

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

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。在

相关问题 更多 >

    热门问题