2012-09-01 73 views
-2

我一直在研究一个代码,在这个代码中我必须编写一个程序来模拟当鼠标进入厨房时发生什么事,当陷阱被设置并且没有设置时,它应该以多行输入读取,这描述厨房里发生的事情。Python理解错误

如果行设置陷阱。被输入,然后鼠标陷阱变成诱饵。如果行鼠标!被输入时,程序应该打印鼠标发生了什么。如果陷阱已设置,请打印Trap !.如果没有设置陷阱,则输出鼠标逃逸。对于所有其他输入行,该程序不应该执行任何操作。因为它应该保持从用户读取行直到用户输入空白行。一旦鼠标陷入陷阱中,陷阱不能用于捕捉另一只鼠标,除非它已被重置。

所以我制作了程序,但它不适用于“鼠标逃脱”。任何人都可以请引导我通过看我的代码:

a = raw_input("Enter line: ") 
space = "" 
trap_set = True 
while a != space: 
    a = raw_input("Enter line: ") 
    if 'Set the trap.' in a: 
     trap_set = True 
     print "Trap!" 
    else: 
     if 'Mouse!' in a: 
      trap_set = True 
      print "The mouse escaped." 

我想我的程序是这样运行的:

Enter line: Go to the fridge. 
Enter line: Set the trap. 
Enter line: Go to bed. 
Enter line: Mouse! 
Trap! 
Enter line: 

OR

Enter line: Make some dinner. 
Enter line: Wash the dishes. 
Enter line: Mouse! 
The mouse escaped. 
Enter line: Sweep the floor. 
Enter line: Set the trap. 
Enter line: Mouse! 
Trap! 
Enter line: Go to bed. 
Enter line: 

,这有什么,我不能工作出。

+4

你需要描述什么不起作用:你想要发生什么,以及发生了什么? (我注意到的第一件事是你有变量'trap_set'有点奇怪,但从来没有把它设置为True。) – BrenBarn

+0

设置你的标志是你的主要问题。 – tijko

回答

1

在这里混合了一些东西。如果你叫'老鼠!'在第一次调用时,它将失败,因为您必须先在条件中设置。

a = raw_input("Enter line: ") 
space = "" 
# did you want to pre-set the trap to True? # 
trap_set = False 
while a != space: 
    if 'Set the trap.' in a: 
     trap_set = True 
     # no reason to print trap if just setting # 
     # print "Trap!" # 
    elif 'Mouse!' in a: 
     if trap_set == False: 
      print "The mouse escaped." 
     elif trap_set == True: 
      print 'trap' 
      trap_set = False 
    a = raw_input("Enter line: ") 

最后两个条件句是你在哪里检查,看看是否“陷阱”被输入您的“鼠标”时设置。然后重置陷阱。

+0

所以你认为我应该如何解决它的任何提示,以获得正确的答案? – rocker789

+0

运行此代码,它应该做你想做的。如果我正确理解你。你必须重新设置陷阱:) – tijko

+0

非常感谢tijko你真棒 – rocker789

0

这应有助于:

a = raw_input("Enter line: ") 
space = "" 
trap_set = True 
while a != space: 
    if a == 'Set the trap.': 
     trap_set = True 
    elif a == 'Mouse!' and trap_set == False: 
     print "The mouse escaped." 
    elif a == 'Mouse!' and trap_set == True: 
     print 'Trap!' 
     trap_set = False 
    a = raw_input("Enter line: ") 

在你的条件,你需要的变量比较字符串常量,而不是周围的其他方式。

另外,您希望在最后再次询问输入,因为您没有检查第一个输入。在我的解决方案中,我还更改了trap_set,使其一旦触发就变为False。

希望这会有所帮助。

+0

''设置陷阱'。在一个'应该看看是否工作''设置陷阱。“'是'a'的一个子字符串,所以我不认为这是主要问题。 – BrenBarn

+0

对不起,你是对的。我会编辑这个。 – mattjegan

+0

是的,它的工作主要问题是如果在用户输入,如果我写了'设置陷阱'。那么它不应该打印“陷阱!”直接首先用户应该写'鼠标!'那么它应该打印陷阱! – rocker789

2

我对上面的tolo1377采取了稍微不同的方法。我不关心除了'Set the trap'和'Mouse'之外的任何输入。

a = raw_input("Enter line: ") 
space = "" 
trap_set = True 
while a != space: 
    a = raw_input("Enter line: ") 
    if 'Set the trap.' in a: 
     trap_set = True 
    elif 'Mouse' in a: 
     if trap_set: 
      print "Mouse trapped!" 
      trap_set = False 
     else: 
      print "The mouse escaped." 

你没有做任何事情在你的程序中,这些线路有用:“!Mouse

else: 
    if 'Mouse!' in a: 
     trap_set = True 
     print "The mouse escaped." 

要检查,如果字出现,这很好,但是你不检查陷阱是否设置。你需要检查陷阱设置,然后做一些事情,如果是的话。

+0

仍然是同样的问题!当我这样写时它不会显示我: 输入行:做一些晚餐。 输入行:清洗碗碟。 输入行:Mouse! 鼠标逃脱。 – rocker789

+2

难道不是这样做的吗?你没有设置陷阱... –

+0

当它没有设置陷阱和当用户输入Mous!应该打印'鼠标逃脱'。 – rocker789