2017-01-16 71 views
-4

编写一个python程序,询问用户一个单词,然后使用这些指令计算和打印输入单词的元音值: 假设您根据以下内容计算单词的元音值说明:需要元音检查程序帮助

 
a 5 points 
e 4 points 
i 3 points 
o 2 points 
u 1 point. 

我的代码:

word = str(input("Enter a word:")) 

def vowel(Word): 
    global word 
    Word = word 
    score = 1 

    if "a" or "A" in word: 
     score += 5 
    elif "e" or "E" in word: 
     score += 4 
    elif "i" or "I" in word: 
     score += 3 
    elif "o" or "O" in word: 
     score += 2 
    elif "u" or "U" in word: 
     score += 1 

    print("Your word scored",score,"in the vowel checker") 

print(vowel(word))  

编辑:FOR循环

字=输入( “输入一个单词:”)

DEF元音(Wo_rd): 全局字 Wo_rd =字 得分= 0 对于char在word.lower(): 如果炭== 'a' 或 “A”: 得分+ = 5 elif char ==“e”or“E”: score = = 4 elif char ==“i”或“I”: score + = 3 elif char ==“o”or“O”: score + = 2 elif char ==“u”或“U”: 得分+ = 1 a =“您的单词得分”,得分“,在单词检查器测试中” 返回一个

打印(元音(字))

+4

那么您需要哪些代码帮助? – depperm

+0

字= STR(输入( “输入一个单词:”)) DEF元音(字): 全局字 字=字 得分= 1 如果 “A” 的 “A” 字或: 得分+ = 5 elif的以字为 “E” 或 “E”: 得分+ = 4 elif的或 “I” 字的 “i”: 得分+ = 3 elif的 “○” 或 “O” 字: 得分+ = 2 elif“u”or“U”in word: 得分+ = 1 print(“您的单词得分”,得分“,在元音检查器中) print(元音字) – JackAnderson

+0

显示有问题的代码和完整的错误信息(Traceback) – furas

回答

3
word = str(input("Enter a word:")) 

def vowel(word): 
    score = 1 

    for character in word: 
     character = character.lower() 
     if character == 'a': 
      score += 5 
     elif character == 'e': 
      score += 4 
     elif character == 'i': 
      score += 3 
     elif character == 'o': 
      score += 2 
     elif character == 'u': 
      score += 1 

    print("Your word scored",score,"in the vowel checker") 

vowel(word) 

注意事项:

  • 在Python中,字符串是可迭代的,这样你就可以在每个字符循环。
  • 注意,你不必(也不应该)使用global
  • 采用character.lower()简化了我们的条件语句。
  • 而不是打印在vowel函数的输出,你可以,而不是仅仅return score并把打印语句中的最后一行。

P.S.鉴于这个问题,一个词的分数是不是应该从0开始,而不是1?

+0

因此你的例子包括大写和小写字母,还是只接受小写字母?是的,你说得分应该是0 – JackAnderson

+0

@JackAnderson我的例子适用于大写和小写字母。 'character = character.lower()'将每个字母转换为小写字母,这简化了我们的条件。这使我们必须检查“a”,而不是像原始代码中的“a”或“A”。 – pbaranay

+1

在word.lower()中使用'for字符更有效率,因为你只需要调用'lower()'。当然,还有其他方法可以提高效率 –

1

首先,如果你是路过字vowel我不知道为什么你使用全局。您呼叫vowel一个print所以元音内应返回一个字符串,而不是打印字符串本身。接下来通过使用for循环,可以检查该单词的每个字符,并增加哪怕一个元音的多个occurances出现得分。

word = str(input("Enter a word:")) 

def vowel(word): 
    score = 1 
    for c in word: 
    if "a" == c.lower(): 
     score += 5 
    elif "e" == c.lower(): 
     score += 4 
    elif "i" == c.lower(): 
     score += 3 
    elif "o" == c.lower(): 
     score += 2 
    elif "u" == c.lower(): 
     score += 1 

    return "Your word scored "+str(score)+" in the vowel checker" 

print(vowel(word))