Python while循环永不结束(在numworks计算器上)

Python while循环永不结束(在numworks计算器上),python,Python,刚刚抓到一个集成了python(numworks)的计算器 我正在编写一个python程序,其中包含一个函数来检查输入是否是一个数字(float) 当我输入正确的浮点数时,一切正常,但当捕捉到异常时,行为如下: except块运行正常 然后while循环重新启动,再次询问我的输入,输入一个infite循环并冻结。没有时间再次输入我的输入 我不熟悉Python,我很确定这是一个简单的语法。。。但我没能解决这个问题 谢谢你的帮助 代码如下: #名称控制 def inputFloat(文本): r

刚刚抓到一个集成了python(numworks)的计算器

我正在编写一个python程序,其中包含一个函数来检查输入是否是一个数字(float)

当我输入正确的浮点数时,一切正常,但当捕捉到异常时,行为如下:

  • except块运行正常
  • 然后while循环重新启动,再次询问我的输入,输入一个infite循环并冻结。没有时间再次输入我的输入
我不熟悉Python,我很确定这是一个简单的语法。。。但我没能解决这个问题

谢谢你的帮助

代码如下:

#名称控制
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循环退出)。如果发生异常,则循环将继续并重新提示。