我幾乎已經解決了這個問題,但由於某種原因,第一個If語句和else語句對於任何大寫字母輸入都是正確的。因此,如果ASCII值落在65和90之間,則if語句聲明爲true並打印出該值,但是else語句也聲明爲true並打印出語句。如果我在第一個if語句的底部加上'continue',這個程序就完美無缺。不過,我不知道爲什麼它像那樣工作。你能幫我糾正我的邏輯缺陷,我不明白爲什麼這樣做。這裏是我的代碼和輸出:Python:凱撒密碼,如果語句和其他語句同時爲真?
k = int(raw_input("Please enter a value for k: ")) #Shifter number
original = raw_input("plaintext: ") #Message user wants ciphered
original_as_array = list(original) ##I am turning the input into an array
for i in range(0,len(original)): ##Now seperating each character to add k
char = original_as_array[i]
charint = ord(char)
if charint >= 65 and charint <=90:
cipher_int = ((charint-65 + k) % 26)+65
code_char = chr(cipher_int)
print code_char,
if charint >= 97 and charint <=122:
cipher_int = ((charint-97 + k) % 26)+97
code_char = chr(cipher_int)
print code_char,
else:
print char,
示例輸出只有上限:
Please enter a value for k: 13
plaintext: PLEASE HELP
C P Y L R E N A F S R E U H R E Y L C P
啊...... :)輝煌非常感謝你! – yoshyosh 2011-04-24 19:05:26