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

如何修改Python内置input函数,使其默认校验输入为整数?

如何让Python内置input函数自动校验整数输入并循环要求重新输入?

问题背景

我想修改项目中的Python内置input函数,让它在输入内容非整数时自动循环,要求用户重新输入。我已经能用自定义函数实现这个需求:

def getInput():
    while True:
        try: x = int(input()); break
        except ValueError: print("Number not integer. Try again.")
    return x

numberOfNodes = getInput()

但尝试定义def __input__():时无法修改内置函数,想知道有没有方法重写内置input,让它默认具备上述校验功能。

解决方案

1. 重写内置input函数

你可以通过builtins模块直接替换内置的input函数,让全局范围内的input都具备整数校验功能:

import builtins

# 可选:保存原input函数,方便后续恢复
original_input = builtins.input

def input(prompt=""):
    while True:
        user_input = original_input(prompt)
        try:
            return int(user_input)
        except ValueError:
            print("Number not integer. Try again.")

# 使用示例
numberOfNodes = input("Enter number of nodes: ")

注意:这种方式会全局替换input函数,项目中其他模块调用input时也会触发这个校验逻辑,如果不需要全局生效,更推荐使用自定义函数的方式,避免影响其他功能。

2. 优化自定义函数(更稳妥)

如果不想全局修改内置函数,你的自定义getInput已经是很好的方案,还可以优化下提示信息的灵活性:

def get_integer_input(prompt="Enter an integer: "):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("Number not integer. Try again.")

numberOfNodes = get_integer_input("Enter number of nodes: ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:50:21