How to let Python recognize both lower and uppercase input?

前端 未结 6 1834
野性不改
野性不改 2020-12-11 21:28

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 up

相关标签:
6条回答
  • 2020-12-11 21:35

    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:

    Use ''.startswith() and ''.endswith() instead of string slicing to check for prefixes or suffixes.

    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".

    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))
    
    0 讨论(0)
  • 2020-12-11 21:42

    You could convert the input to upper case before comparing.

    0 讨论(0)
  • 2020-12-11 21:47

    You should use:

    word[i] in 'AEIOUaeiou'
    
    0 讨论(0)
  • 2020-12-11 21:51

    Usually you would use str.lower() (or str.upper()) on the input to normalise it.

    Python3.3 has a new method called str.casefold() which works properly for unicode

    0 讨论(0)
  • 2020-12-11 21:52

    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

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

    This will make the first letter in upper case and the rest will remain as is.

    0 讨论(0)
  • 2020-12-11 21:55

    Convert the word entirely to lowercase (or uppercase) first:

    word = input("Please Enter a word:").lower()  # Or `.upper()`
    

    Also, to get the first letter of your word, use word[0], not word[1]. Lists are zero-indexed in Python and almost all programming languages.

    You can also condense your code by quite a bit:

    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")
    
    0 讨论(0)
提交回复
热议问题