如何用Python while循环实现符合要求的ask_user年龄验证函数?
修正后的代码及问题解析
你的代码存在的问题
- 一开始就将
input()的结果转为int,如果用户输入非数字内容,会直接触发ValueError,无法进入错误处理逻辑。 age.isdigit用法错误:age已经是整数类型,没有isdigit()方法;就算是字符串,也需要加括号调用方法(isdigit())。- while循环内没有重新获取用户输入,会一直重复判断最初的输入值,陷入死循环。
- while的
else块位置错误,该逻辑永远不会执行,应该在输入符合要求时直接返回结果。
正确实现代码
def ask_user(age_limit: int) -> int: while True: age_input = input("What is your age?") # 首先判断输入是否为纯数字格式 if not age_input.isdigit(): print("Wrong input!") continue # 转换为整数 age = int(age_input) # 判断年龄范围 if age < age_limit: print("Too young!") elif age > 100: print("Too old!") else: # 符合所有条件,返回年龄 return age
代码说明
- 用
while True创建无限循环,直到输入符合要求才退出。 - 先获取原始字符串输入,用
isdigit()判断是否为纯数字,避免直接转int报错。 - 输入是数字后转为整数,再依次判断年龄是否小于限制、大于100,不符合则打印提示并继续循环。
- 所有条件都满足时,返回该整数年龄,自动退出循环。
内容的提问来源于stack exchange,提问作者beginner_in_python_1000
相关产品推荐
相关产品推荐

