Python游戏; 为什么我不能重新调用我的输入和if / else函数?

Python game; Why can't I re-call my input and if/else function?

我仍然在学习Python,但我之前用Python编程的朋友说这应该可以正常工作,但它不会吗?

在此之前的所有代码都是我正在制作的基本"逃离房间"游戏的开始故事。直到此处的代码工作,(描述游戏的基本打印功能)。

我向玩家提供他们在一个房间里的场景,他们可以做以下两件事之一:

1
2
3
def intro_room_input():
    intro_action = input("What would you like to do? (Please enter either: 1 or 2)")
    return intro_action;

这两个函数用于选择1或2时,下一个if / elif函数运行这些函数
如果他们选择1:

1
2
3
4
5
6
7
8
def intro_room_result1():

print(
   """
    (Story stuff for the result of option 1. Not important to the code)
   """
)

    return;

如果他们选择2,此功能将会播出

1
2
3
4
5
6
7
8
9
def intro_room_result2():

    print(
   """
    (Story stuff for the result of option 2. Not important to the code)

   """
)

    return;

这将是获取玩家输入并从那里继续故事的功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def intro_action_if(string):

    if string =="1":      
        intro_room_result1()
    elif string =="2":
        intro_room_result2()
    else:
        print("I'm sorry, that wasn't one of the options that was available..."+'
'
+
       "For this action, the options must be either '1' or '2'"+'
'
+
       "Let me ask again...")
        intro_room_input()
        intro_action_if(string)
    return;

最后一个intro_room_input运行正常,它会重新运行上一个输入,但是当你实际输入1或2时,它不会对它们做任何事情。它不想重新运行if / elif / else函数来给出结果。

最后我有一个主要运行一切:

1
2
3
4
5
6
7
def main():
    string = intro_room_input()
    intro_action_if(string)
    return;


main()

请帮忙,我不知道这段代码有什么问题!?


问题出在您的intro_action_if()中。 当您调用函数再次获取值时,您忘记更改string值。

1
2
3
4
#intro_room_input()            #wrong

string = intro_room_input()    #right
intro_action_if(string)

如您所见,即使在您的代码中您要求用户inputreturned,您也忘记使用返回的值重新分配string。 因此它保留了您之前给出的相同输入并将旧值传递给intro_action_if()