我通過python寫了一個腳本,它提示用戶輸入一個字符串,然後對其進行編碼或解碼。 但是,其中一個用戶輸入單引號(this - >'),腳本停止。 我該如何解決這個問題。 我想接受單引號作爲輸入。 劇本是這樣的:如何處理包括單引號的字符串輸入
while True:
input = raw_input('Enter a word or sentence')
if input == 'done':break
n = raw_input('Enter an encode number')
print encode(input,n) #this function encodes the input by n and returns encoded words
裏有編碼功能Ord和CHR功能。
這是編碼功能
def encode(word,n):
"""
word: strings you wanna encode or decode
n: a number you wanna encode or decode by
"""
code = 0
rotate = ''
for letter in word:
if ord(letter) == ord(',') or ord(letter)== ord('.') or ord(letter) == ord(' ') or ord(letter) == ord('?') or ord(letter) == ("'"):
rotate += letter
continue
rotate += rotate_num(letter,n,letter.islower())
return rotate
def rotate_num(letter,n,lower):
"""
n: a number you wanna encode or decode by
lower:Assign True if the letter is lowercase, otherwiser False
"""
if lower:
a = 'a'
z = 'z'
else:
a = 'A'
z = 'Z'
code = ord(letter)+n
if code > ord(z):
code = code - 1 - ord(z)+ ord(a)
if code < ord(a):
code = ord(z) - (ord(a)-code-1)
return chr(code)
(該rotate_num功能應縮進。我錯過了複製)
的問題是輸入太長(他進入了太長的句子)。然而,其他的問題依然存在: 在編碼功能,我寫道:如果這封信是一個單引號, 它不應該被編碼, 但實際上,單引號進行編碼
的問題是在你的編碼功能,請張貼。 – FakeRainBrigand
你可以發佈編碼功能嗎?據我測試,「輸入」是正確的,是否有單引號。 – shengy
實際上,我很抱歉遲到發佈代碼 – SamuraiT