我正在制作一个小程序,允许用户输入航班规格,它将计算价格。我已经实现了一个小的错误捕获器,但是由于某些原因,这个错误捕获器总是正确的:
import time
def main():
AMS_DESTINATION = "Schipol, Amsterdam"
GLA_DESTINATION = "Glasgow, Scotland"
AMS_PRICE = 150.00
GLA_PRICE = 80.00
flightSpecification = str(input("Please enter your flight specification: "))
flightDestination = flightSpecification[0:3]
print(flightDestination)
if flightDestination.lower() != 'ams' or 'gla': # This if statement is always true // Why??
print("Please enter a valid flight specification!")
time.sleep(2)
main()
def flightCalculations():
if flightDestination.lower() == 'ams':
userDestination = AMS_DESTINATION
if flightDestination.lower() == 'gla':
userDestination = GLA_DESTINATION
main()
如果"flightSpecification"的前三个字母等于"ams"或"gla",我只需要它完全忽略这一点。谢谢
你本想做这个
if flightDestination.lower() not in ['ams', 'gla']:
# ...
你做了
if flightDestination.lower() != 'ams' or 'gla'
分解为
if (condition1) or (condition2)
其中条件1是CCD_ 1而条件2是'gla'
。
条件2是一个非空字符串,因此它始终为True。和
if (anything) or True:
总是正确的。
flightCalculations()
在任何地方都没有被调用。并且函数在局部范围内改变了变量。因此,在函数末尾添加一行return user Destination
。也可以在显示飞行目的地结果的打印语句后调用函数,如Ret = flightCalculations()