如何将指定代码封装为get_user_answer函数并在main()中调用?
封装用户输入验证函数的实现与调用
先修正你原代码里的两处语法错误:
input(">>",)多了多余的逗号,应写成input(">>")range(1, len(something):缺少闭合括号,且因为range是左闭右开区间,若要包含len(something)这个值,得写成range(1, len(something)+1)
接下来按照你要求的get_user_answer(n: int, p: str) -> int格式封装函数,其中:
n对应原代码里的len(something),即输入允许的最大值p是给用户的输入提示文本
完整函数实现
def get_user_answer(n: int, p: str) -> int: while True: user_input = input(p) try: # 尝试将输入转为整数 user_input = int(user_input) except ValueError: # 转换失败时直接回到循环开头,重新获取输入 continue # 判断输入是否在1到n的有效范围内(包含n) if user_input in range(1, n + 1): return user_input
在main()函数中调用的示例
def main(): # 假设原代码中something的长度为5,直接传入n=5 valid_answer = get_user_answer(n=5, p=">> ") print(f"你输入的有效数字是:{valid_answer}") if __name__ == "__main__": main()
补充说明
- 用
continue替代原代码的pass,转换失败时直接重启循环,逻辑更直观 range(1, n+1)确保用户输入能取到n,和你原代码的预期范围一致- 符合条件时用
return直接返回结果并跳出循环,替代原代码的break逻辑
内容的提问来源于stack exchange,提问作者Linz
相关产品推荐
相关产品推荐

