【发布时间】:2011-04-24 18:52:47
【问题描述】:
我几乎已经解决了这个问题,但由于某种原因,第一个 If 语句和 else 语句对于任何大写字母输入都是正确的。因此,如果 ASCII 值介于 65 和 90 之间,则 if 语句声明为 true 并打印出该值,但 else 语句也声明为 true 并打印出一条语句。如果我将“继续”放在第一个 if 语句的底部,则该程序可以完美运行。但是我不知道为什么它会这样工作。你能帮我纠正我的逻辑缺陷吗,我不明白为什么要这样做。这是我的代码和输出:
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
【问题讨论】:
标签: python if-statement encryption