我在让我的程序识别elif语句时遇到了麻烦



所以当我运行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":

最新更新