如何计算用户输入的平均值?python

2024-09-28 01:31:54 发布

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

这些问题要求我们创建一个Python程序,要求用户输入车辆数量、停车时间和停车费,并计算其总费用和总平均费用。我能找到所有我需要的东西,除了总平均数

sum = 0.00
fee = 0
avg = 0

x = int(input("Number of cars:"))

while x > 0:
    y = float(input("Duration of parking:"))
    if y <= 3:
        fee = 2
        print("Fee: 2")
    elif 3 < y <= 23
        fee = 2 + (0.05 * y)
    elif y == 24:
        fee = 10
        print("Fee: 10")
    x = x - 1
    sum = sum + fee
    avg = sum / x
print("Total fees:", sum)
print("Average:")

这是我的代码,唯一的问题是平均值。它为我的‘avg=sum/x’提供了一个‘零除法误差:浮点除法零’,所以它基本上是说我的x是零,我不知道为什么或者如何解决它。我几乎什么都试过了。请帮忙


Tags: of用户程序input数量时间avgsum
3条回答

您的算法按车辆数进行除法,x,但相同的变量用于递减

提议:

  • 请求车辆编号并将其存储到另一个变量
  • 计算完所有费用后,仅在最后进行平均计算

例如:

n_cars = x = int(input("how many cars?")

while x > 0:
    # more stuff
    ...
    sum += fee

...
avg = sum / n_cars
...

下面是一个更简单的工作实现,代码更短、更清晰:

import math

MIN_FEE = 2.0
MAX_FEE = 10

x = int(input("How many cars?: "))
cost = 0

for _ in range(x):
    y = float(input("Parking duration for car: "))
    fee = min(math.ceil(max(MIN_FEE, (y + 1) * 0.5)), MAX_FEE)
    print(f"Parking fee (RM): {fee}")
    cost += fee

print("Total Fee (RM):", cost)
print("Average (RM):", cost / x)

请注意,通常不需要对同一块进行多次复制粘贴,这是不可读的

问题是每次迭代都会减少x,最终会变成0,因此会出现错误

使用for循环迭代n输入,或者使用两个对象,一个用于迭代,另一个用于计算平均值

此外,还需要计算while循环外的平均值

试试这个:

sum = 0.00
fee = 0
avg = 0

x = int(input("How many cars?: "))
z = x

while x > 0:
    y = float(input("Parking duration for car: "))
    if y <= 3:
        fee = 2
        print("Parking fee (RM): 2")
    elif 3 < y <= 4:
        fee = 2.50
        print("Parking fee (RM): 2.50")
    elif 4 < y <= 5:
        fee = 3
        print("Parking fee (RM): 3")
    elif 5 < y <= 6:
        fee = 3.50
        print("Parking fee (RM): 3.50")
    elif 6 < y <= 7:
        fee = 4
        print("Parking fee (RM): 4")
    elif 7 < y <= 8:
        fee = 4.50
        print("Parking fee (RM): 4.50")
    elif 8 < y <= 9:
        fee = 5
        print("Parking fee (RM): 5")
    elif 9 < y <= 10:
        fee = 5.50
        print("Parking fee (RM): 5.50")
    elif 10 < y <= 11:
        fee = 6
        print("Parking fee (RM): 6")
    elif 11 < y <= 12:
        fee = 6.50
        print("Parking fee (RM): 6.50")
    elif 12 < y <= 13:
        fee = 7
        print("Parking fee (RM): 7")
    elif 13 < y <= 14:
        fee = 7.50
        print("Parking fee (RM): 7.50")
    elif 14 < y <= 15:
        fee = 8
        print("Parking fee (RM): 8")
    elif 15 < y <= 16:
        fee = 8.50
        print("Parking fee (RM): 8.50")
    elif 16 < y <= 17:
        fee = 9
        print("Parking fee (RM): 9")
    elif 17 < y <= 18:
        fee = 9.50
        print("Parking fee (RM): 9.50")
    elif 18 < y <= 24:
        fee = 10
        print("Parking fee (RM): 10")
    x = x - 1
    sum = sum + fee

avg = sum / z
print("Total Fee (RM):", sum)
print("Average (RM):")

相关问题 更多 >

    热门问题