【发布时间】:2022-10-22 15:14:42
【问题描述】:
以下函数采用输入提示参数。 它要求用户输入1或者2, 并在输入其他内容时打印“无效输入”。然后该函数再次要求用户输入。我想知道是否有不涉及 try/except 语句或递归的更清洁的解决方案。
def input_params(prompt):
while True:
try:
user_input = int(input(prompt))
if user_input == 1 or user_input == 2:
return user_input
else:
print("Invalid Input")
input_params(prompt)
except ValueError:
pass
【问题讨论】:
-
这段代码最糟糕的部分是你将递归和循环结合起来,和您没有返回递归调用的返回值。解决这个问题,然后您可以担心是否正确处理来自对
int的调用的潜在ValueErrors。 -
为什么
x首先是函数的参数,当您立即将其替换为用户输入时? -
你将如何解决这个问题?你会在
inputParams()递归之后说return x, y吗? -
需要明确的是,该功能的目的仅仅是提示用户输入直到他们输入
1或2? -
@chepner,此代码是较大部分的一部分,需要 x 参数才能工作,我相信您可以在任何解决方案中忽略它
标签: python