-2

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

如果线路设置陷阱。进入,然后鼠标陷阱成为诱饵。如果线鼠标!输入,程序应该打印鼠标发生的事情。如果设置了陷阱,则打印出 Trap!。如果未设置陷阱,则打印出 The mouse escaped.. 对于所有其他输入行,程序不应执行任何操作。因为它应该一直读取用户的行,直到用户输入一个空行。一旦老鼠被困在陷阱里,除非它被重置,否则陷阱不能用来捕捉另一只老鼠。

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

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: 

或者

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

3 回答 3

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!' 出现,这很好,但是您并没有检查是否设置了陷阱。您需要检查陷阱是否已设置,如果是,则执行某些操作。

于 2012-09-01T06:22:28.863 回答
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: ")

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

于 2012-09-01T06:37:54.717 回答
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 。

希望这可以帮助。

于 2012-09-01T06:18:43.277 回答