每当我运行以下代码时,它总是运行else语句,而不是if。当我没有or运算符时,它可以完美工作,但是我需要使用它。我不知道该怎么办!
ALTER TABLE userVendor
ADD CONSTRAINT myrelation
FOREIGN KEY (DataSource, userId)
REFERENCES user(DataSource, userId)
答案 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
)是真实的,在这种语法中,它始终是真实的
答案 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
返回具有真实值的b
或c
的第一个。由于在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