【问题标题】:Code not working properly [duplicate]代码无法正常工作[重复]
【发布时间】:2016-02-09 04:28:42
【问题描述】:
所以它相当简单。给定一个字符串,我想打印出所有语法正确的字母。带有元音的“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”
【问题讨论】:
标签:
loops
python-3.x
for-loop
【解决方案1】:
您的问题是每次使用or 时都需要一个单独的条件。否则,您只是评估"e",它始终是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。
>>> 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 !
>>>
【解决方案2】:
把你的代码改成这个。
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 +" !")
您需要检查字母是否在字符数组中。如果你想要一个布尔表达式,那么 if 条件必须是
if l == "A" or l == "e" or l == "i" or l == "o" or l == "u":
【解决方案3】:
打印它是因为条件if l in "A" or "e" or "i" or "o" or "u": 总是返回最后一个字符“u”,因此条件变为真,所以要解决这个问题,你必须这样写,
if l in "A" or l in "e" or l in "i" or l in "o" or l in "u":
或者你也可以这样写成list,
if l in ["A","e","i","o","u"]: