0

私は1つのステップを除いて宿題のすべてをしました。

私は別の方法でそれをしました、しかしそれはどういうわけかある種の正しい答えを与えました。とにかく、私はmazを探索する必要があるので、このタスクの一部(Q COMMAND)を除いて、すべてを完全に正しく実行しました。

文字列方式を使用する必要があります.upper()

2.2.6トップレベルインターフェイス interact()は、はじめに説明したように、テキストベースのユーザーインターフェイスを定義するトップレベル関数です。ユーザーが終了するか、フィニッシュスクエアが見つかった場合、インタラクション関数は終了する必要があることに注意してください。

def interact():
    mazefile = raw_input('Maze File: ')
    maze = load_maze(mazefile)
    position = (1, 1)
    poshis = [position]

    while True:
        #print poshis, len(poshis)
        print 'You are at position', position
        command = raw_input('Command: ')
        #print command

        if command == '?':
            print HELP
        elif command == 'N' or command == 'E' or command == 'S'or command == 'W':
            mov = move(maze, position, command)
            if mov[0] == False: #invalid direction
                print "You can't go in that direction" 
            elif mov[1] == True:#finished
                print 'Congratulations - you made it!'
                break
            else: #can move, but not finished
                position = mov[2]
                poshis.append(position) 

        elif command == 'R': # reseting the maze to the first pos
            position = (1, 1)
            poshis = [position]
        elif command == 'B': # back one move
            if len(poshis) > 1:
                poshis.pop()
                position = poshis[-1]

        elif command == 'L': # listing all possible leg dir
            toggle = 0
            result = ''
            leg_list = get_legal_directions(maze, poshis[-1])
            for Legal in leg_list:
                if toggle:
                    result += ', '
                    result += Legal
                else:
                    result += Legal
                if not toggle:
                    toggle = 1
            print result

        elif command == 'Q': #quiting 
            m = raw_input('Are you sure you want to quit? [y] or n: ')
            if m == 'y':
                break

            #print 'Are you sure you want to quit? [y] or n: '
            #if raw_input == 'y':
              #  break

        else: #invalid input
            print 'Invalid Command:', command
4

1 に答える 1

0

あなたの質問は特に明確ではありませんが、「問題」は、ユーザーが本当に終了したいかどうか尋ねられたときに「y」ではなく「Y」と答えると、ループが続くことだと思います.

それが問題である場合は、次の行を置き換えるだけです。

if m == 'y':
    break

と:

if m.upper() == 'Y':
    break

ユーザーが「y」または「Y」のどちらを入力しても、ループは中断されるためです。

于 2012-04-04T15:23:50.607 に答える