我可以使用try除非没有错误

时间:2016-02-01 16:09:45

标签: python python-2.7 while-loop try-except

希望有人可以帮助我。 我想我需要使用try和except函数来完成我需要的工作,但我不会为发生的异常创建错误。

当用户输入a1时,它会查看a1字典并找到一个x,因此它不会将while循环视为true。所以它转移到了其他地方。我需要再次重新解决问题,并从while循环的顶部重新开始。是否有可能因为某些事情是假的而触发异常?

这是我正在使用的

board = {'a1':'x','a2':'_','a3':'_','b1':'_','b2':'_','b3':'_','c1':' ','c2':' ','c3':' '}


def o_move():
    print 'im over at o now'



def x_move():

    ans = raw_input('Player x please Enter a location: ') #ask user for location
    f = board[ans] #current value of dictionary location selected

    while f is '_' or f is ' ':
        board[ans] == 'x' #writes the user location selected to the dictionary
        o_move() #everything was good, move on
        break #break the loop 
    else:

        print 'space not available Try again'   
        ans = raw_input('Player x please Enter a location: ') #ask again



x_move()

2 个答案:

答案 0 :(得分:1)

更简单的方法是,如果第一次没有选择有效的移动,则让函数x_move()自行调用。这样,您就不必编写两个raw_input()语句。

以下是您的代码可以简化的一种方式:

board = {'a1':'x','a2':'_','a3':'_','b1':'_','b2':'_','b3':'_','c1':' ','c2':' ','c3':' '}

def o_move():
    print 'im over at o now'

def x_move():
    ans = raw_input('Player x please Enter a location: ')
    open_positions = ['_', ' ']

    if board[ans] in open_positions:
        board[ans] = 'x'
        o_move()
    else:
        print 'space not available Try again'   
        x_move()

x_move()

答案 1 :(得分:0)

而不是

ans = raw_input('...')

同样,你应该把:

else:
    Print 'space not available, try again'
    x_move()

那应该再将它发送到while循环的开头