这个Python测验让我发疯

时间:2017-11-11 01:52:00

标签: python

我是StackOverflow的新手(第一次发帖),也是使用python进行编码的新手。目前通过Udacity注册课程。我很难完成这个课程的项目,并决定来这里看看是否有人可以提供帮助。

该项目是创建一个有4个空白的测验,需要玩家正确回答。要求使用正确答案进行测验打印,但我很难将其正确打印出来。

我的代码如下。非常感谢我能得到的任何帮助或建议。

谢谢!

    easy_quiz = "If you ever get stuck, check out the __1__ for common 
    problems students face when attempting this project. If you need 
    additional help, you can schedule a 1:1 appointment with one of our 
    __2__ to get you un-stuck. This project should be __3__. If at any time 
    it becomes not fun, take a step back, deep breath, and ask for __4__!. 
    \n\n"
    easy_answers = ["forums", "mentors", "fun", "help"]

    medium_quiz = "Game must have 3 or more levels and each level contains 4 or more __1__ to fill in. Immediately after running the program, user is prompted to select a difficulty level from easy / __2__ / hard. Once a level is selected, game displays a fill-in-the-blank and a prompt to fill in the first one. When player guesses __3__, new prompt shows with correct answer in the previous blank and a new prompt for the next blank. When player guesses __4__, they are prompted to try again. \n"
medium_answers = ["blanks", "medium", "correctly", "incorrectly"]

hard_quiz = "__1__ are used as __2__ to automate tasks which are likely to be repeated. Functions produce the appropriate output (typically with a __3__ statement) from the appropriate input (function parameters). Your code should take advantage of __4__ and variable names should reflect the values they store. \n"  
hard_answers = ["Functions", "tools", "return", "variables"]

blanks = ["__1__", "__2__", "__3__", "__4__"]

difficulty = raw_input("\nChoose your difficuty level = easy, medium, or hard? ")
print "" 
if difficulty == "easy":
    quiz = easy_quiz
    answers = easy_answers
    print "You chose easy!\n\nYou will have 5 guesses to fill in each blank. Good Luck!!\n \n" + easy_quiz

elif difficulty == "medium":
    quiz = medium_quiz
    answers = medium_answers
    print "You chose medium!\n\nYou will have 5 guesses to fill in each blank. Good Luck!!\n \n" + medium_quiz

elif difficulty == "hard":
    quiz = hard_quiz
    answers = hard_answers
    print "You chose hard!\n\nYou will have 5 guesses to fill in each blank. Good Luck!!\n \n" + hard_quiz

def word_in_pos(word, parts_of_speech):
    for pos in parts_of_speech:
        if pos in word:
            return pos
    return None

def play_game(quiz, parts_of_speech): 
    replaced = []
    i = 0
    quiz = quiz.split() 
    for word in quiz:
        replacement = word_in_pos(word, parts_of_speech)
        if replacement != None:
            user_input = raw_input("Type an answer for: " + replacement + " " )
            word = word.replace(replacement, user_input)
            replaced.append(word)
            guesses = 0
            while user_input != answers[i]:
                guesses = guesses + 1 
                print "Incorrect, try again \n" + " ".join(replaced)
                user_input = raw_input("Type an answer for: " + replacement + " ")
                if guesses == 4:
                    return "\nGame Over! Better luck next time. \n"
            print "Correct \n" + " ".join(replaced)
            i = i + 1 
            word = word.replace(replacement, user_input)
            replaced.append(word)
        else:
            replaced.append(word)
    replaced = " ".join(replaced)
    return replaced

print play_game(quiz, blanks) 

1 个答案:

答案 0 :(得分:0)

以下是play_game()方法的工作版本:

def play_game(quiz, parts_of_speech):
    replaced = []
    i = 0
    quiz = quiz.split()
    for word in quiz:
        replacement = word_in_pos(word, parts_of_speech)
        if replacement is not None:
            user_input = raw_input("Type an answer for: " + replacement + " " )
            guesses = 0
            while user_input != answers[i]:
                guesses = guesses + 1
                if guesses == 5:
                    return "\nGame Over! Better luck next time. \n"
                print "Incorrect, try again \n" + " ".join(replaced) + " " + replacement
                user_input = raw_input("Type an answer for: " + replacement + " ")
            replaced.append(user_input)
            print "Correct \n" + " ".join(replaced)
            i = i + 1
        else:
            replaced.append(word)
    replaced = " ".join(replaced)
    return replaced

主要的变化是延迟修改replaced列表,直到给出正确的答案。这简化了许多代码,无需使用word变量。