python - 简单的电梯模拟器...工作完美然后突然停止。为什么?

时间:2015-04-20 14:42:01

标签: python

我是编程的全新人选。我正在制作一个简单的电梯模拟器。我有基本的结构,工作得很好,但在用户输入他们的选择3或4次命令行刚关闭。我的代码有问题吗?或者有一些关于命令行的东西会在一段时间后自动关闭吗?

floor_select = int(raw_input("Please select floor 1-10:  "))
current_floor = 1

while floor_select > current_floor:
    current_floor += 1
    print "You are currently on floor:  " + str(current_floor)

    if floor_select == current_floor:
        print "You have arrived at floor " + str(current_floor)
        floor_select = int(raw_input("Please select floor 1-10:  "))

while floor_select < current_floor:
    current_floor -= 1
    print "You are currently on floor:  " + str(current_floor)

    if floor_select == current_floor:
        print "You have arrived at floor " + str(current_floor)
        floor_select = int(raw_input("Please select floor 1-10:  "))

2 个答案:

答案 0 :(得分:2)

您在第一次迭代时点击了while个循环之一,然后在达到条件并为floor_select获得另一个用户输入后,您仍然 while循环。因此,如果您在第二个while循环中并且您的新输入需要第一个while循环,则您的程序将结束,因为while循环将终止。

在不再满足不等式条件后,您不能指望重新进入第一个或第二个while循环。解决方法是将代码放在实际功能中,并在电梯模拟器中到达所需的楼层后再次调用您的功能。

答案 1 :(得分:0)

正如其他人已经指出的那样,你并没有遍历整个构造。所以,一旦你上升并退出你的程序退出。

我同意Donkey Kong的说法,他说你需要使用函数定义。我个人会将其结构化为:

def goup(target_floor, current_floor):
    # insert contents of first while loop here
    return current_floor

def godown(target_floor, current_floor):
    # insert contents of second while here
    return current_floor

if __name__ =='__main__':
    # your set up code (first two lines)
    while floor_select != -1:
        if floor_select < current_floor:
            current_floor = godown(floor_select, current_floor)
        elif floor_select > current_floor :
            current_floor = goup(floor_select, current_floor)
        else:   # must be ==
            print ("Already there!")
        # get user input
        floor_select = int(raw_input("Please select floor 1-10:  "))

并删除从函数中的while循环获取用户输入。

编辑:添加current_floor作为函数参数。