Python理解错误

时间:2012-09-01 06:09:29

标签: python string if-statement while-loop

我一直在编写一个代码,我必须编写一个程序来模拟当陷阱设置和未设置时鼠标进入厨房时会发生什么,它应该读入多行输入,描述会发生什么在厨房里。

如果该行设置陷阱。进入,然后鼠标陷阱被诱饵。如果行鼠标!进入后,程序应该打印鼠标会发生什么。如果设置了陷阱,请打印出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: 

这就是我无法解决的问题。

3 个答案:

答案 0 :(得分: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."

你没有在你的计划的这些方面做任何有用的事情:

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

您正在检查单词“Mouse!”出现,这很好,但是你没有检查是否设置了陷阱。您需要检查陷阱是否已设置,然后执行某些操作。

答案 1 :(得分: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: ")

最后两个条件是您在检查“鼠标”输入时是否设置了“陷阱”的位置。然后重置陷阱。

答案 2 :(得分: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。

希望这有帮助。