2016-01-29 26 views
-2

https://www.codecademy.com/en/courses/python-beginner-P5YtY/1/6?curriculum_id=4f89dab3d788890003000096如果条件没有在这是codeacademy

def plane_ride_cost(city): 

    if city== "Tampa" or "tampa": 
     return 220 
    elif city== "Charlotte" or "charlotte": 
     return 183 
    elif city== "Pittsburgh" or "pittsburgh": 
     return 222 
    elif city== "Los Angeles" or "los angeles": 
     return 474 

任务之一在此代码,它提交给codeacedemy返回220代码时正常工作仅是第一个返回值,但它什么都没有检查我猜?

+2

代码执行为'城市==(真或真)' - >'city == true'。你不能做'somevalue == val或val或val或','or'首先被解析/执行并简化为一个布尔值true/false。你需要'city ==“Tampa”或city ==“tampa”'例如请阅读:https://docs.python.org/2/reference/expressions.html第5.15节“运算符优先级” –

回答

0

你可以做

if city == "Tampa" or city == "tampa": 

或者

if city in ("Tampa", "tampa"): 

字符串的另一个选择是使用lower方法(如果你想不区分大小写comparisson)

if city.lower() == "tampa": 
+0

我介绍了你。 – saarrrr

3

您需要确保检查城市价值的对阵双方值:

if city == "Tampa" or city == "tampa": 
    # do stuff 

否则,Python会将此解释为,如果(city == "Tampa") or ("tampa"),其中后者将始终评估为True

另外,如果你要检查多个条件在列表中,你可以把值的数组:

tampa = ["Tampa", "tampa"] 
if city in tampa: 
    # do stuff 
0

你不能在同一时间检查两个不同值的城市值。

def plane_ride_cost(city): 
    if city == "Tampa" or city == "tampa": 
     return 220 
    elif city == "Charlotte" or city == "charlotte": 
     return 183 
    elif city == "Pittsburgh" or city == "pittsburgh": 
     return 222 
    elif city == "Los Angeles" or city == "los angeles": 
     return 474 

OR

def plane_ride_cost(city): 
    if city in ["Tampa","tampa"]: 
     return 220 
    elif city in ["Charlotte","charlotte"]: 
     return 183 
    elif city in ["Pittsburgh","pittsburgh"]: 
     return 222 
    elif city in ["Los Angeles","los angeles"]: 
     return 474 
0

您可以使用:

if city in ["Tampa", "tampa"]: 
    #code 

if city.lower() == "tampa": 
    #code