我是Python新手。我正在写一个程序来区分一个单词是否以元音开头。问题是,程序只能正确处理大写字母作为输入。例如,如果我提供单词“Apple”作为输入,则结果为True
;但是,如果提供单词“apple”作为输入,则结果为False
。我如何解决它?
word = input ("Please Enter a word:")
if (word [1] =="A") :
print("The word begins with a vowel")
elif (word [1] == "E") :
print("The word begins with a vowel")
elif (word [1] == "I") :
print("The word begins with a vowel")
elif (word [1] == "O") :
print("The word begins with a vowel")
elif (word [1] == "U") :
print("The word begins with a vowel")
else:
print ("The word do not begin with a vowel")
答案 0 :(得分:4)
首先将单词完全转换为小写(或大写):
word = input("Please Enter a word:").lower() # Or `.upper()`
另外,要获得单词的第一个字母,请使用word[0]
,而不是word[1]
。列表在Python和几乎所有编程语言中都是零索引的。
你也可以压缩你的代码:
word = input("Please Enter a word:")
if word[0].lower() in 'aeiou':
print("The word begins with a vowel")
else:
print("The word do not begin with a vowel")
答案 1 :(得分:3)
通常您会在输入上使用str.lower()
(或str.upper()
)来规范化它。
Python3.3有一个名为str.casefold()
的新方法,它适用于unicode
答案 2 :(得分:1)
您可以在比较之前将输入转换为大写。
答案 3 :(得分:0)
您应该使用:
word[i] in 'AEIOUaeiou'
答案 4 :(得分:0)
元音检查是使用str.startswith完成的,它可以接受多个值的元组。 PEP 8 Style Guide for Python Code建议使用带有字符串切片的startswith以提高代码的可读性:
使用''。adsswith()和''。endswith()而不是字符串切片 检查前缀或后缀。
Conditional Expressions用于设置指示单词是否以元音开头的消息。然后我使用String Formatting方法准备消息。同样正如英语语法修正一样,我用“单词不以元音开头”替换了“单词不以元音开头”这句话。
word = input("Please Enter a word:")
is_vowel = 'does' if word.lower().startswith(tuple('aeiou')) else 'does not'
print("The word {} begin with a vowel".format(is_vowel))
答案 5 :(得分:0)
1)有许多方法可以做需要做的事情,比如Blender所说的。但是,您要做的是将第一个字母转换为高位,无论输入是高还是低。使用'capitalize'来做到这一点。
2)你还需要使用单词[0]而不是单词[1]来获得第一个字母
word = raw_input("Please Enter a word: ").capitalize()
if word [0] in "AEIOU" :
print("The word begins with a vowel")
else:
print ("The word does not begin with a vowel")
这将使第一个字母大写,其余的将保持不变。