我正在编写一个简单的Python(shell)程序,要求输入。我要找的是字符串的一定长度(len)。如果字符串不是最小值,我想抛出一个异常并将用户带回输入提示再次尝试(仅针对给定数量的尝试,比如3)。
我的代码基本上是到目前为止
x=input("some input prompt: ")
if len(x) < 5:
print("error message")
count=count+1 #increase counter
等...
- 这就是我被困住的地方,我希望抛出错误,然后回到我的输入......对Python有点新意,所以非常感谢帮助。这将成为Linux机器上脚本的一部分。
答案 0 :(得分: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
答案 1 :(得分: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