代码无法正常工作

时间:2016-02-09 04:28:43

标签: loops python-3.x for-loop

所以它相当简单。给定一个字符串我想打印出所有语法正确的字母。带有元音的'an'和所有其他字母的'a'。

我现在似乎无法做到这一点。

my_name = 'Alexander'

for l in my_name:
    if l in "A" or "e" or "i" or "o" or "u": 
        print("give me an " + l + " !")
    else:
        print('give me a '+l +" !") 

问题: 所有字母都打印出“an”

3 个答案:

答案 0 :(得分:1)

您的问题是每次使用or时都需要单独的条件。否则,您只是评估始终为"e"的{​​{1}}。

只需检查它是否在这样的列表中:

True

如果检查字符串的布尔值,则始终为my_name = 'Alexander' for l in my_name: if l.lower() in ["a", "e", "i", "o", "u"]: #str.lower() is to check regardless of capitalization print("give me an " + l + " !") else: print('give me a '+l +" !")

True

所以代码总是会输入>>> bool("e") True >>>

if

答案 1 :(得分:0)

将您的代码更改为此。

>>> for l in my_name:
...     if l.lower() in ["a", "e", "i", "o", "u"]: #str.lower() is to check regardless of capitalization
...         print("give me an " + l + " !")
...     else:
...         print('give me a '+l +" !")
... 
give me an A !
give me a l !
give me an e !
give me a x !
give me an a !
give me a n !
give me a d !
give me an e !
give me a r !
>>> 

您需要检查字母是否包含在字符数组中。如果你想要一个布尔表达式,那么if条件必须是

my_name = 'Alexander'

for l in my_name:
    if l.lower() in ["a","e","i","o","u"]:
        print("give me an " + l + " !")
    else:
        print('give me a '+l +" !")

答案 2 :(得分:0)

正在打印它,因为条件if l in "A" or "e" or "i" or "o" or "u":总是返回最后一个字符“u”,因此条件变为true所以要解决此问题,你必须这样写,

if l in "A" or l in "e" or l in "i" or l in "o" or l in "u":

或者你也可以在列表中这样写,

if l in ["A","e","i","o","u"]: