在While循环中尝试和除外

时间:2014-10-09 00:54:50

标签: python

我很难评估此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()

3 个答案:

答案 0 :(得分:1)

return语句离开函数,返回其值。一旦遇到该陈述(当player123时),任何循环(或函数中的其他控制结构)都会被“破坏”你不再参加get_player_input职能的事实。

except语句与它无关:只是处理无法解析为整数的输入。

答案 1 :(得分:1)

删除中断返回后,请用户输入e并使用breakreturn

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'

我留给你完成这个功能......