如何让Python识别低位和大写输入?

时间:2012-10-04 02:38:10

标签: python uppercase lowercase

我是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")

6 个答案:

答案 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")

这将使第一个字母大写,其余的将保持不变。