所以当我运行python程序并在它要求分类代码的地方输入"D"或"D"时,它会输出结果,就好像我输入了"b"或"b"。elif语句被完全忽略了,我不知道为什么。同样,当我输入一个分类码,不是b b D或D,它仍然通过第一个if块。提前感谢你对我的帮助!:)
customerName = input("Please enter your name: ")
age = int(input("Please enter your age: "))
code = input("Please enter your classification code: ")
numOfDays = int(input("Please enter the number of days you rented a vehicle: "))
initialOdometer = int(input("Please enter the initial odometer reading on the vehicle: "))
finalOdometer = int(input("Please enter the final odometer reading on the vehicle: "))
if code == "B" or "b" :
if age < 25:
kmDriven = finalOdometer - initialOdometer
kmDrivenCharge = kmDriven * 0.30
totalCost = 20.00 * numOfDays + (10 * numOfDays)
totalCost = totalCost + kmDrivenCharge
else:
kmDriven = finalOdometer - initialOdometer
kmDrivenCharge = kmDriven * 0.30
totalCost = 20.00 * numOfDays
totalCost = totalCost + kmDrivenCharge
print("n")
print("SUMMARY:")
print("n")
print("Customer's Name:",customerName)
print("Customer's Age:",age)
print("Customer's classification code:",code)
print("Number of days the vehicle was rented:",numOfDays)
print("The vehicle's odometer reading at the start of the rental period:",initialOdometer)
print("The vehicle's odometer reading at the end of the rental period:",finalOdometer)
print("The number of kilometers driven during the rental period:",kmDriven)
print("n")
print("total Cost:","$","{0:.2f}".format(totalCost))
elif code == "D" or "d" :
if age < 25:
kmDriven = finalOdometer - initialOdometer
kmPerDay = kmDriven / numOfDays
if kmPerDay > 100:
kmDrivenCharge = ((kmPerDay - 100) * 0.30) * numOfDays
else:
kmDrivenCharge = 0
totalCost = numOfDays * 50.00 + (numOfDays * 10.00)
totalCost = totalCost + kmDrivenCharge
else:
kmDriven = finalOdometer - initialOdometer
kmPerDay = kmDriven / numOfDays
if kmPerDay > 100:
kmDrivenCharge = ((kmPerDay - 100) * 0.30) * numOfDays
else:
kmDrivenCharge = 0
totalCost = numOfDays * 50.00
totalCost = totalCost + kmDrivenCharge
print("n")
print("SUMMARY:")
print("n")
print("Customer's Name:",customerName)
print("Customer's Age:",age)
print("Customer's classification code:",code)
print("Number of days the vehicle was rented:",numOfDays)
print("The vehicle's odometer reading at the start of the rental period:",initialOdometer)
print("The vehicle's odometer reading at the end of the rental period:",finalOdometer)
print("The number of kilometers driven during the rental period:",kmDriven)
print("n")
print("total Cost:","$","{0:.2f}".format(totalCost))
else :
print("n")
print("ERROR: Invalid Classification Code")
print("n")
print("Invalid Code:", code)
print("Customer Name:", customerName)
print("Customer Age:", age)
您的问题在您的初始if:
if code == "B" or "b" :
这是有效的python,但不是像你想象的那样操作。Python正在评估or
语句两边的真实性。左边是一个有效的,直接的比较,但右边不是一个实际的比较。相反,解释器正在计算字符串值b
是真还是假。因为非空字符串被认为是真值,所以比较的右边总是求值为True,所以if语句总是被执行。
你的问题在于if语句本身。
if code == "B" or "b":
"b"总是为真。例如,试着编写这个程序:
if "b":
print("hey this string wasn't empty")
所以你需要写的是:
if code == "B" or code == "b":