繁体   English   中英

使用Try and Except块时出现'NoneType'错误

[英]'NoneType' Error when using a Try and Except Block

我有一个奇怪的问题尝试和除了块我用来捕捉无效的数据输入到我写的简单的黑杰克游戏.....

def PickNumberOfPlayers():
    global log

    try:
        inputs = int(input("How Many Players Would You Like?: "))
        PlayersNumber = inputs
        log.write("How Many Players Would You Like?: \n")
        return PlayersNumber

    except ValueError:
        print("Try Typing in A Valid Number")
        log.write("Try Typing in A Valid Number\n")
        PickNumberOfPlayers()

然后我有一个GameStart()方法,它启动了许多方法调用:

def GameStart():
    global ListOfPlayers

    for i in range(0, int(PickNumberOfPlayers())):
        name = input("What Would You Like This Players Name To Appear As?:")
        ListOfPlayers.update({name: Player(0, name)})

    for key, value in ListOfPlayers.items():
        value.AccountSetup()
        value.Bet()

    for key, value in ListOfPlayers.items():
        value.PlayerDeal()
    Dealer.Deal() 

当我运行代码并输入正确的值(有效整数)时,没有问题。 当我第一次输入无效数字(字符串或字符)时,我收到相应的消息“ 尝试键入有效数字 ,然后当我输入有效整数时,我得到错误 -

    for i in range(0, int(PickNumberOfPlayers())):
TypeError: int() argument must be a string or a number, not 'NoneType' 

任何想法?

当你在except调用PickNumberOfPlayers()时,你不会返回它的值。 请改为return PickNumberOfPlayers()

您应该修改PickNumberOfPlayers以始终返回int。

def PickNumberOfPlayers():
    global log

    while 1:
        try:
            return int(input("How Many Players Would You Like?: "))
        except ValueError:
            print("Try Typing in A Valid Number")
            log.write("Try Typing in A Valid Number\n")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM