我已经在线阅读了几页,使用“ while True”并用“ break”手动中断while循环是一个不好的做法。在这种情况下,我不想使用“ while True”,我想知道是否有可能。
while True:
x = input()
try:
x = float(x)
break
except ValueError:
continue
我尝试这样做:
while x is not float:
x = input()
try:
x = float(x)
except ValueError:
continue
但是循环永远不会中断。 是否有可能的解决方案,还是将其保留为“ while True”循环更好?
答案 0 :(得分:1)
根据@Enzo的建议,您可以使用isinstance来检查x
是否是float
的实例
#Define x as None here
x = None
#Run loop until you find x which is a float
while not isinstance(x, float):
x = input()
try:
#If x can be cast to a float, the loop will break
x = float(x)
except ValueError:
continue
答案 1 :(得分:1)
如果这是整个循环,则使用break
并没有太大问题。您应尽量避免使用break
的主要原因是因为它可能会使较大的循环或内部分支较多的循环(if
等)难以遵循。
我认为Python没有做到这一点的简单方法,因此使用break
进行简单循环很有效。其他答案中建议的解决方案(使用x
的占位符值)也可以,但我个人认为它的可读性较差。
答案 2 :(得分:1)