如何修改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
相关产品推荐
相关产品推荐

