Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我无法让程序识别elif语句_Python - Fatal编程技术网

Python 我无法让程序识别elif语句

Python 我无法让程序识别elif语句,python,Python,因此,当我运行python程序并在其中输入“D”或“D”时,它会像输入“b”或“b”一样输出结果。elif语句被完全忽略了,我不知道为什么。另外,当我输入一个不是bd或D的分类代码时,它仍然会通过第一个if块。提前感谢您的帮助!:) customerName=input(“请输入您的姓名:”) 年龄=整数(输入(“请输入您的年龄:”) 代码=输入(“请输入您的分类代码:”) numOfDays=int(输入(“请输入您租用车辆的天数:”) 初始里程表=int(输入(“请输入车辆上的初始里程表读数

因此,当我运行python程序并在其中输入“D”或“D”时,它会像输入“b”或“b”一样输出结果。elif语句被完全忽略了,我不知道为什么。另外,当我输入一个不是bd或D的分类代码时,它仍然会通过第一个if块。提前感谢您的帮助!:)

customerName=input(“请输入您的姓名:”)
年龄=整数(输入(“请输入您的年龄:”)
代码=输入(“请输入您的分类代码:”)
numOfDays=int(输入(“请输入您租用车辆的天数:”)
初始里程表=int(输入(“请输入车辆上的初始里程表读数:”)
finalOdometer=int(输入(“请输入车辆上的最终里程表读数:”)
如果代码==“B”或“B”:
如果年龄<25岁:
KM驱动=最终里程表-初始里程表
kmDrivenCharge=kmDriven*0.30
总成本=20.00*numOfDays+(10*numOfDays)
totalCost=totalCost+kmDrivenCharge
其他:
KM驱动=最终里程表-初始里程表
kmDrivenCharge=kmDriven*0.30
总成本=20.00*numOfDays
totalCost=totalCost+kmDrivenCharge
打印(“\n”)
打印(“摘要:”)
打印(“\n”)
打印(“客户名称:”,客户名称)
打印(“客户年龄:,年龄”)
打印(“客户分类代码:”,代码)
打印(“车辆租用天数:”,numOfDays)
打印(“租赁期开始时车辆的里程表读数:”,初始里程表)
打印(“租赁期结束时车辆的里程表读数:”,最终里程表)
打印(“租赁期间行驶的公里数:”,kmDriven)
打印(“\n”)
打印(“总成本:”、“$”、“{0:.2f}”。格式(总成本))
elif代码==“D”或“D”:
如果年龄<25岁:
KM驱动=最终里程表-初始里程表
公里/天=公里/天
如果每天公里数>100:
kmDrivenCharge=((每天公里数-100)*0.30)*numfoodies
其他:
kmDrivenCharge=0
总成本=numOfDays*50.00+(numOfDays*10.00)
totalCost=totalCost+kmDrivenCharge
其他:
KM驱动=最终里程表-初始里程表
公里/天=公里/天
如果每天公里数>100:
kmDrivenCharge=((每天公里数-100)*0.30)*numfoodies
其他:
kmDrivenCharge=0
总成本=个工作日*50.00
totalCost=totalCost+kmDrivenCharge
打印(“\n”)
打印(“摘要:”)
打印(“\n”)
打印(“客户名称:”,客户名称)
打印(“客户年龄:,年龄”)
打印(“客户分类代码:”,代码)
打印(“车辆租用天数:”,numOfDays)
打印(“租赁期开始时车辆的里程表读数:”,初始里程表)
打印(“租赁期结束时车辆的里程表读数:”,最终里程表)
打印(“租赁期间行驶的公里数:”,kmDriven)
打印(“\n”)
打印(“总成本:”、“$”、“{0:.2f}”。格式(总成本))
其他:
打印(“\n”)
打印(“错误:分类代码无效”)
打印(“\n”)
打印(“无效代码:”,代码)
打印(“客户名称:”,客户名称)
打印(“客户年龄:,年龄”)

您的问题在于if语句本身

if code == "B" or "b":
“b”永远是真的。 例如,尝试制作此程序:

if "b":
   print("hey this string wasn't empty")
所以你需要写的是:

 if code == "B" or code == "b":

如果出现以下情况,您的问题出现在初始版本中:

if code == "B" or "b" :

这是有效的python,但不是按照您认为的方式操作。Python正在评估
语句两边的真实性。左侧是有效的、直接的比较,但右侧不是实际的比较。相反,解释器正在评估字符串值
b
是否真实。由于非空字符串被认为是真实的,比较的右侧总是计算为True,因此if语句总是被执行。

code==“D”或code==“D”
或更优雅地说:
code.lower()==“D”
.或
在'bB'中编码
是第一个
if
语句中的
总是计算为
True
-因此永远不会得到
elif
您的答案和@LeviNoecker的答案会很好地结合在一起。感谢所有的回复!我更改了初始的if语句,现在它工作正常。再次感谢,我真的很感激!
if code == "B" or "b" :