在下面的代码中,您将看到它要求“移位”值.我的问题是我想将输入限制为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
我怎么这么容易?
解决方法:
使用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 :("
你还希望在int()调用周围有一个try-except块,以防你得到一个ValueError(如果他们输入一个例子).
请注意,如果使用Python 2.x,则需要使用raw_input()而不是input().后者将尝试将输入解释为Python代码 – 这可能非常糟糕.