希望有人可以帮助我。 我想我需要使用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()
答案 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循环的开头