限制python中的原始输入

限制python中的原始输入,python,raw-input,Python,Raw Input,如何限制用户可以在原始输入中键入的字符数?我的问题可能有一些简单的解决方案,但我就是想不出来。一个简单的解决方案是添加一条重要的消息,然后使用切片获得前40个字符: some_var = raw_input("Input (no longer than 40 characters): ")[:40] 另一种方法是检查输入长度是否有效: some_var = raw_input("Input (no longer than 40 characters): ") if len(some_var)

如何限制用户可以在原始输入中键入的字符数?我的问题可能有一些简单的解决方案,但我就是想不出来。

一个简单的解决方案是添加一条重要的消息,然后使用切片获得前40个字符:

some_var = raw_input("Input (no longer than 40 characters): ")[:40]
另一种方法是检查输入长度是否有效:

some_var = raw_input("Input (no longer than 40 characters): ")

if len(some_var) < 40:
    # ...
some_var=raw_输入(“输入(不超过40个字符):”)
如果len(某些变量)<40:
# ...
您应该选择哪一种?这取决于您的实现,如果您希望接受输入但“截断”它,请使用第一种方法。如果要首先验证(如果输入长度正确),请使用第二种方法。

尝试以下方法:

while True:
    answer = raw_input("> ")
    if len(answer) < 40:
        break
    else:
        print("Your input should not be longer than 40 characters")
为True时:
答案=原始输入(“>”)
如果len(答案)<40:
打破
其他:
打印(“您的输入不应超过40个字符”)

我喜欢做一个通用验证器

def get_input(prompt,test,error="Invalid Input"):
    resp = None
    while True:
         reps = raw_input(prompt)
         if test(resp):
            break
         print(error)
    return resp

x= get_input("Enter a digit(0-9):",lambda x:x in list("1234567890"))
x = get_input("Enter a name(less than 40)",lambda x:len(x)<40,"Less than 40 please!")
x = get_input("Enter a positive integer",str.isdigit)
def get_输入(提示、测试、错误=“无效输入”): resp=无 尽管如此: reps=原始输入(提示) 如果测试(resp): 打破 打印(错误) 返回响应 x=获取输入(“输入数字(0-9):”,lambda x:x在列表中(“1234567890”))
x=获取输入(“输入名称(小于40)”,λx:len(x)可能的重复您想要@Ruben发布的重复,或者如果您不想允许输入超过40个字符,那么您需要查看一个字符一个字符地计数,请参阅:谢谢@Alex Thornton,我们试图同时进行相同的编辑:pIt不应取决于实现,而应取决于给出b的实现更好的用户体验我的意思是,取决于实现的是他处理输入的方式。如果OP想要为超过40个字符的输入重新编程,请使用@bigbind或@JoranBeasley方法。