我是编程的全新人选。我正在制作一个简单的电梯模拟器。我有基本的结构,工作得很好,但在用户输入他们的选择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: "))
答案 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作为函数参数。