Python 在函数中运行try和except并重新运行会导致非类型返回。我该如何解决这个问题?
我正在开发一个简单的程序,允许用户在掷硬币时下注一些虚拟货币。一切正常,但用户输入错误时除外。Python 在函数中运行try和except并重新运行会导致非类型返回。我该如何解决这个问题?,python,function,try-catch,Python,Function,Try Catch,我正在开发一个简单的程序,允许用户在掷硬币时下注一些虚拟货币。一切正常,但用户输入错误时除外。例如:如果一个问题要求回答y/n,而用户将“d”或其他内容作为回答,程序将使用except ValueError并重新运行该函数。但是,当函数重新运行并且用户最终正确输入某些内容时,将导致进一步的错误 Error: > AttributeError: 'NoneType' object has no attribute 'lower' 代码: .lower()仅在字符串上运行,使用input
例如:如果一个问题要求回答y/n,而用户将“d”或其他内容作为回答,程序将使用except ValueError并重新运行该函数。但是,当函数重新运行并且用户最终正确输入某些内容时,将导致进一步的错误
Error:
> AttributeError: 'NoneType' object has no attribute 'lower'
代码:
.lower()仅在字符串上运行,使用input()定义变量使其不注册为字符串。相反,试试这样的方法
def set_choice():
choice = input("Want to bet on a coin toss?", 'y','n')
def choice():
choice = set_choice()
return choice
choice = choice.lower()
调试提示:
每次打印选择,这样你就可以看到为什么它会崩溃!您可以稍后将打印对账单取出
我发现的是:get\u choice()
未返回任何值。在get_选项中,如果输入无效,它实际上不会返回任何内容。哦,不!因此,您将返回None,对None调用.lower()将抛出异常 解决方案:
如果输入无效,则第二次运行get_choice时,您处于正确的轨道上。一个小小的调整:不只是运行get_choice,而是返回get_choice get_bet()中也有类似的错误,只是一个提示,您可以用相同的方法解决它
总的来说,这场比赛很棒。我不确定这是真的。输入函数返回一个字符串。另外,您的示例也不太有效,因为输入只接受一个参数。@JamesHuang您设置了一个函数来运行输入,另一个函数来返回选项,我更新了我的答案。
def set_choice():
choice = input("Want to bet on a coin toss?", 'y','n')
def choice():
choice = set_choice()
return choice
choice = choice.lower()