【问题标题】:Detecting Vowels vs Consonants In Python [duplicate]在Python中检测元音与辅音[重复]
【发布时间】:2013-12-12 03:06:09
【问题描述】:

我在这里犯了什么愚蠢的错误,使我无法确定用户输入的第一个字母是辅音?无论我输入什么,它都允许评估第一个字母是元音。

original = raw_input('Enter a word:')
word = original.lower()
first = word[0]

if len(original) > 0 and original.isalpha():
    if first == "a" or "e" or "i" or "o" or "u":
        print "vowel"
    else:
        print "consonant"
else:
    print "empty"

【问题讨论】:

  • 另一种方法是使用startswith() 方法。将单词分配给变量first 然后您可以进行比较: first == first.startswith(('a', 'e', 'i', 'o', 'u'));如果True 那么你就会知道这个词不是以辅音开头的。

标签: python string conditional conditional-statements


【解决方案1】:

您在if 语句中所做的是检查first == "a" 是否为真,然后检查"e" 是否为真,它总是如此,所以 if 语句总是计算为真。
你应该做的是:

if first == "a" or first == "e" ...

或者更好:

if first in "aeiou":

【讨论】:

    【解决方案2】:

    您的问题是first == "a" or "e" 被评估为(first == "a") or "e",所以您总是会得到'e',这是一个True 语句,导致"vowel" 被打印。另一种方法是:

    original = raw_input('Enter a word:')
    word = original.lower()
    first = word[0]
    
    if len(original) > 0 and original.isalpha():
        if first in 'aeiou':
            print "vowel"
        else:
            print "consonant"
    else:
        print "empty"
    

    【讨论】:

      【解决方案3】:

      变化:

      if first == "a" or "e" or "i" or "o" or "u":
      

      到:

      if first in ('a', 'e', 'i', 'o', 'u'):  #or `if first in 'aeiou'`
      

      first == "a" or "e" or "i" or "o" or "u" 总是 True 因为它被评估为

      (first == "a") or ("e") or ("i") or ("o") or ("u"),因为非空字符串始终为 True,因此它被评估为 True。

      >>> bool('e')
      True
      

      【讨论】:

      • 或者因为这都是单个字母,if first in 'aeiou':
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2021-10-10
      • 2012-11-28
      • 1970-01-01
      • 2020-10-30
      • 2020-06-20
      相关资源
      最近更新 更多