初学者Python程序员在这里,努力使用逻辑OR运算符



在Python IDLE上编写了下面的代码片段,并在下面得到了正确的答案:

>>> cars = ["audi", "bmw", "daimler", "toyota", "vw"]
>>> for car in cars:
if "a" in car:
print(car.title())
else:
print(car.upper())

结果:

Audi
BMW
Daimler
Toyota
VW

然后我更改了代码,以便我可以打印没有元音 UPPER 的汽车和其余的标题,如下所示,但我打印了所有汽车标题:

>>> cars = ["audi", "bmw", "daimler", "toyota", "vw"]
>>> for car in cars:
if "a" or "e" in car:
print(car.title())
else:
print(car.upper())

结果:

Audi
Bmw
Daimler
Toyota
Vw

有人可以帮忙说出最后一个代码块有什么问题吗,目标是打印所有没有元音完全大写的汽车,其余的作为标题。

谢谢。

if "a" or "e" in car将始终True,因为a在逻辑上是True的。 请尝试:

if "a" in car or "e" in car:
print(car.title())
else:
print(car.upper())

或者,如果您想检查更多字符并希望避免多个or,您可以使用any

# any will return True if `car` contains one of the chars in the provided list.
if any(map(lambda c: c in car,["a","e"])):
print(car.title())
else:
print(car.upper())

TBH 你不是很清楚或语句没有问题,但这是传递 or in if 语句的理想方式,我已经为你制作了代码。

cars = ["audi", "bmw", "daimler", "toyota", "vw"]
for car in cars:
if "a" in car or 'e' in car or 'i' in car or 'o' in car or 'u' in car:
print(car.title())
else:
print(car.upper()) 

输出为:

Audi
BMW
Daimler
Toyota
VW
Process finished with exit code 0

希望对您有所帮助

你的表达:

"a" or "e" in car

相当于:

"a" or ("e" in car)

总是"a",一个真实的值。这就是为什么它对所有事情都执行title()

相反,您应该使用:

if "a" in car or "e" in car

或者(半开玩笑(,因为每个问题都可以通过向其抛出更多正则表达式来解决:

if re.search("[ae]", car) is not None: # needs import re

最新更新