Python中while循环中返回输入值的问题



我对我的Python代码有一个问题。我想在这个类中为Input.input_pos()函数返回一个值。如果我在运行程序时输入一个条件值,它会正确返回,但如果我输入其他东西,并且else条件或异常发生,函数循环(我打算这样做),但是当我再次输入一个条件值(6,7,8,9或10)时,它不再返回任何值。为什么呢?

我确信它不会返回值,因为我将该值用于另一个函数,并且当我打印它时,它在控制台中显示None。

我尝试在类内再次调用函数后使用continue关键字。这在某种程度上解决了问题,但使函数在我从条件值中输入一些东西时循环自己。

有人能告诉我如何使这种情况不发生,而不是返回值,即使它已经循环?

class Input():
def input_pos():
while True:
try:
postura = int(input("Postura "))
if postura == 6:
return 6
elif postura == 7:
return 7
elif postura == 8:
return 8
elif postura == 9:
return 9
elif postura == 10:
return 10
else:
print("debes escribir un número del 6 al 10")
Input.input_pos()
except ValueError:
print("Error, debes elegir un número del 6 al 10")
Input.input_pos()
except Exception:
print("Error, debes elegir un número del 6 al 10")
Input.input_pos()
break

尝试使用while重新赋值,直到输入成功,然后循环跳出并返回

class Input:
def input_pos(self):
postura = input("Postura: ")
while postura not in ["6", "7", "8", "9", "10"]:
postura = input("debes escribir un número del 6 al 10: ")
return int(postura)

print(Input().input_pos())

输出:

Postura: 1
debes escribir un número del 6 al 10: 4
debes escribir un número del 6 al 10: 67
debes escribir un número del 6 al 10: 6
6

试试这个:

class Input():
def input_pos(self):
while True:
try:
postura = int(input("Postura "))
if 6 <= postura <= 10:
return postura
else:
print("debes escribir un número del 6 al 10")
return self.input_pos()
except Exception:
print("Error, debes elegir un número del 6 al 10")
return self.input_pos()
break
print(Input.input_pos())

输出:

Postura as
Error, debes elegir un número del 6 al 10
Postura 2
debes escribir un número del 6 al 10
Postura 11
debes escribir un número del 6 al 10
Postura 8
8

最新更新