Python程序的行为不符合预期

时间:2018-01-09 23:48:26

标签: python logic

我用Python编写了我的第一个短程序。该程序应在第三次错误猜测后停止。该程序在第一个问题时按预期工作,并在三次错误猜测后自行停止。

然而,我无法理解为什么,在第二个问题之后,在第三个错误猜测之后,第一个问题会重复出现。

easy_text = '''Hello __1__!'  In __2__ this is particularly easy; all you 
have to do is type in: __3__ "Hello __1__!" Of course, that isn't a very 
useful thing to do. However, it is an example of how to output to the user 
using the __3__ command, and produces a program which does something, so it 
is useful in that capacity..'''

def split_string():
    global easy_text_splitted
    easy_text_splitted = easy_text.split(" ")
    return None

def level1():
    print """You will get 3 guesses per problem

    The current paragraph reads as such:"""
    print easy_text
    return first_question(3)

def first_question(guesses):
    while guesses > 0:
        split_string()
        first_answer = raw_input("What should be substituted in for __1__?")
        if first_answer.lower() == "world":
            easy_text_splitted[1] = first_answer
            easy_text_splitted[19] = first_answer
            new_easy_text = " ".join(easy_text_splitted)
            print new_easy_text
            second_question(3)
        else:
            guesses -= 1
            print "That's not the answer I expected. You have " + 
            str(guesses) + " guess(es) left"
            return first_question(guesses)

def second_question(guesses):
    while guesses > 0:
        split_string()
        second_answer = raw_input("What should be substituted in for 2?")
        if second_answer.lower() == "python":
            easy_text_splitted[4] = second_answer
            new_easy_text = " ".join(easy_text_splitted)
            print new_easy_text
        else:
            guesses -= 1
            print "That's not the answer I expected. You have \n " + 
            str(guesses) + " guess(es) left"
            return second_question(guesses)

def level_selection(index):
    level = raw_input("Choose the desired level of difficulty: easy, \n 
    medium, or hard ")
    if level.lower() == "easy":
        return level1()
    if level.lower() == "medium":
        return level2
    if level.lower() == "hard":
        return level3 
    else:
        print "Error"
        index -= 1
        if index > 0:
            return level_selection(index)
    return "Bye!"

print level_selection(3)


level2 = "You selected medium"
level3 = "You selected hard"

1 个答案:

答案 0 :(得分:0)

当调用guesses时,first_questionsecond_question的价值是什么,当它返回时它是相同的,所以循环继续,并重复第一个问题。

使用调试器可以帮助您了解其工作原理。