我有一个if语句,它总是正确的,程序永远不会忽略它



我正在制作一个小程序,允许用户输入航班规格,它将计算价格。我已经实现了一个小的错误捕获器,但是由于某些原因,这个错误捕获器总是正确的:

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()

相关内容

最新更新