我想从用户那里获取输入,但只接收数字。在Python中

我想从用户那里获取输入,但只接收数字。在Python中,python,input,numbers,Python,Input,Numbers,我正在尝试做一个程序,一个用户将输入他的手机。我希望他能够只写数字,如果他写了一封信,那么它要么删除他刚才写的字符,要么“锁定”他的键盘,只写数字。我目前正在使用try/except来工作,但我仍然想知道是否有一个库或函数允许我仅向用户授予某些密钥的访问权限。 提前谢谢你 您可以使用while循环输入,直到用户只输入数字: def getInput(): value = input("Please enter number: ") while not value.isnumeri

我正在尝试做一个程序,一个用户将输入他的手机。我希望他能够只写数字,如果他写了一封信,那么它要么删除他刚才写的字符,要么“锁定”他的键盘,只写数字。我目前正在使用try/except来工作,但我仍然想知道是否有一个库或函数允许我仅向用户授予某些密钥的访问权限。
提前谢谢你

您可以使用
while
循环输入,直到用户只输入数字:

def getInput():
    value = input("Please enter number: ")
    while not value.isnumeric():
        print("Invalid number")
        value = input("Please enter valid number: ")
    return int(value)
getInput()
您不能“限制”用户可以使用
input()
函数本身键入的键。您可以(据我所知,实际上我没有尝试)在使用
curses
模块的类unix系统上获得此结果,但您需要一些外部库才能使其在Windows上工作。而且在所有情况下,它都需要更多的编码(curses并不是一个简单、现代的UI库)


作为旁注,电话号码可以包含非数字字符(想想国际电话号码);-)

不能停止这样的输入,但可以使用try-except语句
再次请求输入或返回打印错误

try:
    user_input = int(input("Number input: "))
except ValueError:
    user_input = int(input("Number input: "))
类似地,如果希望重复此操作直到用户输入数字,则可以使用while循环和break

while True:
    try:
        user_input = int(input("Number input: "))
        if int(user_input):
            break
    except ValueError:
        print("Input is not an number")
    

为什么不使用一个循环来验证所有字符都是数字呢?这会验证他写每个字符的时候还是在他完成整个输入之后?我对编程非常陌生,所以我不确定我所想的是什么能够用于python。我想说的是,当他写一个字符时,如果是数字或其他东西,如果不是数字,我会检查他是否删除最后一个字符,或者“锁定”字符中的字母keyboard@NikolasIatrou是的,我明白你想表达的意思。我只是建议了另一种方法,你可以这样做。据我所知,在运行时处理用户输入不是件容易的事。如果您知道如何根据需要解决问题,请也告诉我们。如果我能够找到解决方案,我一定会上传它!这是真的,它可能包含非数字字符,但我想如果我能找到一个解决方案,限制他使用数字字符,我可以允许他使用2-3个字符。无论如何,非常感谢您的时间,我将检查诅咒模块!非常感谢您的回复。