0

我正在编写一个要求输入的简单 Python (shell) 程序。我正在寻找的是一定长度(len)的字符串。如果字符串不是最小值,我想抛出一个异常并让用户回到输入提示再试一次(只有给定的尝试次数,比如 3 次)。

我的代码基本上是到目前为止

x=input("some input prompt: ")
if len(x) < 5:
print("error message")
count=count+1 #increase counter

ETC...

- 这是我卡住的地方,我希望抛出错误,然后返回我的输入......对 Python 来说是一种新的,所以非常感谢帮助。这将成为 Linux 机器上脚本的一部分。

4

2 回答 2

1

循环对此很有效。

您可能还想使用raw_input而不是输入。输入函数将输入解析并作为 python 运行。我猜您是在向用户询问各种密码,而不是要运行的 python 命令。

在 python 中也没有 i++,例如使用 i += 1 。

使用 while 循环:

count = 0
while count < number_of_tries:
    x=raw_input("some input prompt: ") # note raw_input
    if len(x) < 5:
        print("error message")
        count += 1    #increase counter ### Note the different incrementor
    elif len(x) >= 5:
       break

if count >= number_of_tries:
    # improper login
else:
    # proper login

或使用 for 循环:

for count in range(number_of_tries):
    x=raw_input("some input prompt: ")  # note raw_input
    if len(x) < 5:
        print("error message") # Notice the for loop will
    elif len(x) >= 5:          # increment your count variable *for* you ;)
       break

if count >= number_of_tries-1: # Note the -1, for loops create 
    # improper login           # a number range out of range(n)from 0,n-1
else:
    # proper login
于 2013-10-18T22:38:52.120 回答
0

您想要一个while循环而不是您的if,因此您可以根据需要多次请求另一个输入:

x = input("some input prompt: ")
count = 1
while len(x) < 5 and count < 3:
    print("error message")
    x = input("prompt again: ")
    count += 1 # increase counter

# check if we have an invalid value even after asking repeatedly
if len(x) < 5:
    print("Final error message")
    raise RunTimeError() # or raise ValueError(), or return a sentinel value

# do other stuff with x
于 2013-10-18T22:43:47.977 回答