在下面的代码中,您会看到它要求“移位”值。我的问题是我想将输入限制为1到26。
For char in sentence:
if char in validLetters or char in space: #checks for
newString += char #useable characters
shift = input("Please enter your shift (1 - 26) : ")#choose a shift
resulta = []
for ch in newString:
x = ord(ch) #determines placement in ASCII code
x = x+shift #applies the shift from the Cipher
resulta.append(chr(x if 97 <= x <= 122 else 96+x%122) if ch != \
' ' else ch) # This line finds the character by its ASCII code
我该如何轻松地做到这一点?
答案 0 :(得分:4)
使用while
循环继续询问他们输入,直到您收到您认为有效的内容:
shift = 0
while 1 > shift or 26 < shift:
try:
# Swap raw_input for input in Python 3.x
shift = int(raw_input("Please enter your shift (1 - 26) : "))
except ValueError:
# Remember, print is a function in 3.x
print "That wasn't an integer :("
如果您获得try-except
(例如,如果他们输入int()
),您还希望在ValueError
来电时设置a
屏蔽。< / p>
请注意,如果您使用Python 2.x,则需要使用raw_input()
而不是input()
。后者将尝试将输入解释为Python代码 - 这可能非常糟糕。
答案 1 :(得分:4)
另一种实施方式:
shift = 0
while not int(shift) in range(1,27):
shift = input("Please enter your shift (1 - 26) : ")#choose a shift
答案 2 :(得分:2)
while True:
result = raw_input("Enter 1-26:")
if result.isdigit() and 1 <= int(result) <= 26:
break;
print "Error Invalid Input"
#result is now between 1 and 26 (inclusive)
答案 3 :(得分:2)
尝试这样的事情
acceptable_values = list(range(1, 27))
if shift in acceptable_values:
#continue with program
else:
#return error and repeat input
可以放入while循环但是你应该限制用户输入,这样它就不会变成无限
答案 4 :(得分:1)
使用if条件:
if 1 <= int(shift) <= 26:
#code
else:
#wrong input
或if-condition的while循环:
shift = input("Please enter your shift (1 - 26) : ")
while True:
if 1 <= int(shift) <= 26:
#code
#break or return at the end
shift = input("Try Again, Please enter your shift (1 - 26) : ")