You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

代码说明

  1. 用while True创建无限循环,直到输入符合要求才退出。
  2. 先获取原始字符串输入,用isdigit()判断是否为纯数字,避免直接转int报错。
  3. 输入是数字后转为整数,再依次判断年龄是否小于限制、大于100,不符合则打印提示并继续循环。
  4. 所有条件都满足时,返回该整数年龄,自动退出循环。

内容的提问来源于stack exchange,提问作者beginner_in_python_1000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:50:25