Python while循环永不结束(在numworks计算器上)
刚刚抓到一个集成了python(numworks)的计算器 我正在编写一个python程序,其中包含一个函数来检查输入是否是一个数字(float) 当我输入正确的浮点数时,一切正常,但当捕捉到异常时,行为如下:Python while循环永不结束(在numworks计算器上),python,Python,刚刚抓到一个集成了python(numworks)的计算器 我正在编写一个python程序,其中包含一个函数来检查输入是否是一个数字(float) 当我输入正确的浮点数时,一切正常,但当捕捉到异常时,行为如下: except块运行正常 然后while循环重新启动,再次询问我的输入,输入一个infite循环并冻结。没有时间再次输入我的输入 我不熟悉Python,我很确定这是一个简单的语法。。。但我没能解决这个问题 谢谢你的帮助 代码如下: #名称控制 def inputFloat(文本): r
- except块运行正常
- 然后while循环重新启动,再次询问我的输入,输入一个infite循环并冻结。没有时间再次输入我的输入
#名称控制
def inputFloat(文本):
ret=''
当ret不浮动时:
尝试:
ret=浮动(输入(文本+“(nombre)”)
除值错误外:
打印(“saise incorrect.”)
回程网
#试验
def test():
打印(输入浮点(“saisir nombre”))
#附加菜单
尽管如此:
打印(“[1]测试”)
打印(“[0]退出者”)
choix=输入(“Choisir une功能:”)
如果choix==“0”:
打印(“au revoir.”)
打破
elif choix==“1”:
测试()
干杯
PS:infos关于环境:计算器使用MicroPython 1.9.4(源代码)
编辑
下面是代码的干净工作版本,包含了你们的所有建议。
把它推到计算器上:就像一个符咒
#姓名控制
def inputFloat(文本):
尽管如此:
尝试:
返回浮点(输入(文本+“(nombre)”)
除值错误外:
打印(“saise incorrect.”)
持续
#试验
def test():
打印(输入浮点(“saisir nombre”))
#附加菜单
尽管如此:
打印(“[1]测试”)
打印(“[0]退出者”)
choix=输入(“Choisir une功能:”)
如果choix==“0”:
打印(“au revoir.”)
打破
elif choix==“1”:
测试()
打破
我认为最简单的方法是:
def input_float():
尽管如此:
尝试:
返回浮点(输入(“给我们一个数字:”)
除:
打印(“这不是一个数字。”)
您还可以使用递归版本:
def input_float():
尝试:
返回浮点(输入(“给我们一个数字:”)
除:
打印(“这不是一个数字。”)
返回输入_float()
当ret不浮动时
-ret
将永远不会浮动。也许您的意思是而不是isinstance(ret,float)
。首先表达式ret不是float
表示变量ret
的值不是float
类型本身。你的意思可能是,而不是instance(ret,float)
。但即使这样也没有必要。您可以完全不使用ret
变量,只需编写而为True:
并将ret=
替换为return
。然后,如果输入的值成功转换为浮点值,则将返回该值(函数以及while循环退出)。如果发生异常,则循环将继续并重新提示。