我对if-else语句有疑问

时间:2019-09-26 15:19:07

标签: python python-3.x

每当我运行以下代码时,它总是运行else语句,而不是if。当我没有or运算符时,它可以完美工作,但是我需要使用它。我不知道该怎么办!

ALTER TABLE userVendor
ADD CONSTRAINT myrelation
FOREIGN KEY (DataSource, userId) 
REFERENCES user(DataSource, userId)

5 个答案:

答案 0 :(得分:4)

该语句不起作用,因为or并未执行您认为的操作。表达式('Pikachu' or 'pikachu')的计算结果为单个字符串'Pikachu'。然后==仅与此进行比较。

您可能想要的是:

if FavPokemon in ('Pikachu', 'pikachu'):

答案 1 :(得分:2)

print('What is your favourite Pokemon?')
 FavPokemon = input()
 if FavPokemon == 'Pikachu' or FavPokemon == 'pikachu':
     print('Me too!')
 else:
     print('Cool! ' + FavPokemon + ' is a good Pokemon. My favourite is Pikachu though!')

这就是您的代码所需要的。您的if语句需要更改。 If x == (a or b)之前的表达式将始终为true。您没有在检查FavPokemon变量实际上是Pikachu还是pikachu,而是在检查条件(a or b)是真实的,在这种语法中,它始终是真实的

请参见https://www.w3schools.com/python/python_conditions.asp

答案 2 :(得分:1)

编程语言不是自然语言,并且具有不同(且更为严格)的语法。

在自然语言中,我们都知道“如果a等于b或c”实际上意味着“如果a等于a或a等于b”,但是在编程语言中,形式上类似的语句“如果a = = b或c”被解析为“ if(表达式)==(其他表达式)”。然后评估每个表达式(将其替换为当前的最终值),然后才进行相等性测试。所以

if a == b or c:

是真的:

d = b or c
if a == d:

现在,表达式b or c返回具有真实值的bc的第一个。由于在Python中将非空字符串作为真实值,因此您的代码如下:

if FavPokemon == ('Pikachu' or 'pikachu'):

是真的:

name = ('Pikachu' or 'pikachu')
if FavPokemon == name:

并且由于'Pikachu'是一个非空字符串,因此最终显示为:

name = 'Pikachu'
if FavPokemon == name:

或更简单地说:

if FavPokemon == 'Pikachu':

一般规则是,如果要在多个条件下进行测试,则必须明确地编写它,即:

if a == b or a == c:

if a == b and x != y:

现在,如果要测试一个对象(字符串或任何对象)是否属于对象集合(元组,列表等)的一部分,则可以使用in运算符:

a = 5
if a in (4, 5, 6):
    # ...

但是在您的情况下,由于您要针对同一个单词的大写或不大写版本进行测试,因此您可以将用户的输入(FavPokemon)转换为“规范化”版本,然后针对字符串的“规范化”版本,即代替:

if FavPokemon in ('Pikachu', 'pikachu'):

您可以写:

 FavPokemon = FavPokemon.lower()
 if FavPokemon == 'pikachu':

请注意,这将比in版本严格一些,因为它将接受“ pIkachU”或“ PIKACHU”或仅大写/小写的任意组合-但是对于您的用例,通常是期望的。

答案 3 :(得分:0)

工作代码:

print('What is your favourite Pokemon?')
FavPokemon = input()
if (FavPokemon == 'Pikachu' or FavPokemon == 'pikachu'):
    print('Me too!')
else:
    print('Cool! ' + FavPokemon + ' is a good Pokemon. My favourite is Pikachu though!')

有用链接 python-or-operator/

答案 4 :(得分:-3)

错误提示

在编写if语句时,您在语法上犯了一个小错误。你写了

if FavPokemon == ('Pikachu' or 'pikachu'):

此处您将'Pikachu' or 'pikachu'放在括号内,并在括号之外用FavPokemon赋值运算符进行了检查。这样做会导致错误。无法检查情况。

正确的代码

正确的代码是将整个==放在括号中。这样,它会检查 FavPokemon == 'Pikachu' or FavPokemon =='pikachu' FavPokemon还是 { {1}} "Pikachu",可以为您提供正确的结果。

正确的代码将是:

FavPokemon