I am new to Python. I am writing a program that distinguishes whether or not a word starts with a vowel. The problem is, that the program is only able to correctly handle uppercase letters as input. For example, if I provide the word "Apple" as input, the result is True
; however, if the word "apple" is provided as input, the result is False
. How do I fix it?
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")
You could convert the input to upper case before comparing.
Convert the word entirely to lowercase (or uppercase) first:
Also, to get the first letter of your word, use
word[0]
, notword[1]
. Lists are zero-indexed in Python and almost all programming languages.You can also condense your code by quite a bit:
The check for vowels is done using str.startswith which can accept a tuple of multiple values. PEP 8 Style Guide for Python Code recommends the use of startswith with over string slicing for better readability of code:
Conditional Expressions are used to set the message indicating whether the word starts with a vowel or not. Then I used the String Formatting method to prepare the message. Also just as a English grammar correction thing I replaced the sentence "The word do not begin with a vowel" with "The word does not begin with a vowel".
1) There are many ways to do what needs to be done, like what Blender said. However, what you are trying to do is to convert the first letter to upper whether the input is upper or lower. Use 'capitalize' to do this.
2) You also need to use word[0], instead of word[1] to get the first letter out
This will make the first letter in upper case and the rest will remain as is.
You should use:
Usually you would use
str.lower()
(orstr.upper()
) on the input to normalise it.Python3.3 has a new method called
str.casefold()
which works properly for unicode