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

click.prompt搭配IntRange类型时如何支持空值输入返回None?

问题原因

你遇到的无限循环根源是click.IntRange默认会校验输入非空,用户输入空值时会直接触发类型校验失败,强制要求重新输入,代码永远走不到终止循环的判断分支。

解决方案

使用click.Optional类型包装器包裹IntRange,让类型校验规则支持空值输入并返回None,即可同时保留范围校验能力、支持空输入终止流程:

import click

numbers = []
while True:
    num = click.prompt(
        "Enter a number",
        # Optional包装后支持空值返回None,同时保留IntRange的范围校验能力
        type=click.Optional(click.IntRange(1, 10)),
        default=None,
        show_default=False # 隐藏默认值提示,输出效果和你预期的完全一致
    )
    if num is None:
        break
    numbers.append(num)

print(f"List of numbers: {numbers}")

效果说明

修改后运行完全符合预期:

Enter a number: 1
Enter a number: 2
Enter a number:
List of numbers: [1, 2]

如果用户输入超出1-10范围的数值,依然会触发IntRange的范围校验逻辑要求重新输入,不会丢失校验能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:48:01