为什么即使在字符串中没有元音的情况下,如果在字符串中执行'a'或'e'或'i'或'o'或'u'语句,为什么仍执行?

时间:2018-07-30 19:04:15

标签: python python-3.x

我的代码:

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。

我希望在键入元音检查器(如果有参数)时可能做错了,因为我对读取字符串中的字符的概念还很陌生。如果有人能帮助我调试此代码,我将不胜感激。

如果不是这样,那么我想再次感谢您是否有人可以帮助我告诉我我做错了什么。

4 个答案:

答案 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')):

请参阅:How to check a string for specific characters?

答案 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'):