[英]How to calculate the average for user input? -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:")
這是我的代碼,唯一的問題是平均值。 它給了我一個 'ZeroDivisionError: float division zero' for my 'avg = sum / x' 所以它基本上是說我的 x 為零,我不知道為什么或如何解決它。 我幾乎什么都試過了。 請幫忙。
您的算法除以汽車數量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):")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.