我很难评估此while
循环。
根据我的理解,任何值NOT 1,2,3都将测试布尔True
并重新启动循环。
我的问题是为什么值1,2,3测试布尔False
并结束循环?
我认为 except:
声明与它有关。
def get_player_input():
while True:
print
player = raw_input( "Enter 1 for Rock 2 for paper or 3 for Scissors: " )
try:
player = int(player)
if player in ( 1, 2, 3 ):
return player
except ValueError:
pass
print "Please enter a number from 1 to 3."
get_player_input()
答案 0 :(得分:1)
return
语句离开函数,返回其值。一旦遇到该陈述(当player
为1
,2
或3
时),任何循环(或函数中的其他控制结构)都会被“破坏”你不再参加get_player_input
职能的事实。
except
语句与它无关:只是处理无法解析为整数的输入。
答案 1 :(得分:1)
删除中断返回后,请用户输入e
并使用break
或return
def get_player_input():
while True:
print
player = raw_input( "Enter 1 for Rock 2 for paper or 3 for Scissors or e to exit: " )
if player == "e":
print("Goodbye")
break # or return
try:
player = int(player)
if player in (1, 2, 3 ):
print "yay"
except ValueError:
pass
print "Please enter a number from 1 to 3."
答案 2 :(得分:1)
您的计划是正确的。记住你需要2来玩石头剪刀。您有一个接受一个玩家输入的功能。现在你需要接受两个输入并进行比较并重新计算结果:
def oneBetterThanTwo(one, two):
# finish this function
return True # or False
players = ['player1', 'player2']
inps = [get_player_input() for p in players]
print (players[0] if oneBetterThanTwo(*inps) else players[1]), 'won'
我留给你完成这个功能......