2012-04-04 49 views
0

除了一步之外,我已经完成了所有功课。探索迷宫(使用python 2.7)

我以不同的方式做了,但它以某种方式提供了正确的答案。 无论如何,我必须探索一个maz,所以我完成了所有的工作,除了这个任务的一部分(Q COMMAND)之外,所有的东西都完全正确。

我需要使用字符串方法.upper()

2.2.6顶级接口 interact()是如在引言中描述的denes文本基本用户界面 顶层功能。 请注意,当用户退出时或者在找到完成平方时 时,应该退出交互功能。

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 
+1

问题“为什么不退出?”?你期望发生什么?为什么Python 2.7很重要?你能否在你没有选择解决最后一部分的方式上发表一些细节?你能发布两三行迷宫文件吗? – octopusgrabbus 2012-04-04 13:03:02

回答

0

你的问题还不是特别清楚,但是我猜测,“问题”是,如果用户回答“Y”代替“Y”当被问及是否确信他们要退出,然后循环将继续。

如果是这样的问题,您应该只是更换行:

if m == 'y': 
    break 

有:

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

因为无论在用户键入 “Y” 或 “Y”,循环仍然会被打破。

+0

但我不得不使用这个,因为我的老师说: 在交互功能中的用户输入应该在请求用户命令时转换为大写。已经在字符串method.upper() 例如'asdf'.upper() - >'ASDF' 当退出交互时,[y]意味着退出是默认选项,所以基本上如果用户键入'N',他们不应该退出,任何其他输入应该退出。 例如。 “你确定要退出吗? [y]或n:''N' - >不退出 '你确定要退出吗? [y]或n:''Y' - >退出 '你确定要退出吗? [y]或n:''asdf' - >退出 – Alzaeemah 2012-04-04 19:53:12