我的代码:
VowelsInString = False
String = 'bbbb000'
if 'a' or 'e' or 'i' or 'o' or 'u' in String:
VowelsInString = True
elif 'a' or 'e' or 'i' or 'o' or 'u' not in String:
VowelsInSting = False
因此,我希望当它运行时,if语句将被跳过,而VowelsInString将保持False,但是在运行代码时,VowelsInString的值为True。
我希望在键入元音检查器(如果有参数)时可能做错了,因为我对读取字符串中的字符的概念还很陌生。如果有人能帮助我调试此代码,我将不胜感激。
如果不是这样,那么我想再次感谢您是否有人可以帮助我告诉我我做错了什么。
答案 0 :(得分:1)
'a' or 'e' or 'i' or 'o' or 'u' in String:
评估为
('a') or ('e') or ('i') or ('o') or ('u' in String)
。
由于'a'在python中是真实的,因此其值为True
。
你可以写
if 'a' in String or 'e' in String ...
或
def has_vowel(String):
for s in String:
if s in 'aeiou':
return True
或者也许
if any(s in String for s in 'aeiou'):
或(信用证为Onyambu):
import re
...
re.search('[aeiou]',string)
答案 1 :(得分:0)
您的情况是重言式
if 'a':
print("I am always going to print")
答案 2 :(得分:0)
好像您正在将角色本身视为布尔对象。
它正在检测'a'为True并返回true。
尝试更多类似的东西:
if any(i in '<string>' for i in ('a','b','c')):
答案 3 :(得分:0)
'a' or 'e' or 'i' or 'o' or 'u' in String
始终为真。您的意思是:
if 'a' in String or 'e' in String or ...:
或者,使用any
:
if any(c in String for c in 'aeiou'):