两个几乎相同的 python 文件给出不同的输出
Two almost identical python files giving different outputs
我在学校学习 python 计算课程和加密相关任务 我和一个朋友遇到了一个相当奇怪的错误:
我们每个人都有自己的程序副本,其中一个在 if 语句中使用 "or" 来决定程序是加密还是解密,这是唯一的区别,有没有人知道为什么会这样影响程序?
该程序打算从用户那里获取输入,然后 return 加密字符串,其中每个字符在字母表中移动了 5 个字母,解密选项与此相反,工作和 none 工作计划如下:
工作计划
mode = input("Do you want to encrypt or decrypt\t")
x=1
while x == 1:
Raw_input = input('Write Text: ')
Raw_input = Raw_input.lower()
output = []
printOut = str()
if mode == "decrypt":
for character in Raw_input:
number = ord(character) + 91
if number < 193:
number += 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])-96)
printOut = printOut + character
elif mode == "encrypt":
for character in Raw_input:
number = ord(character) - 91
if number > 26:
number -= 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])+96)
printOut = printOut + character
print(printOut)
程序无效
mode = input("Do you want to encrypt or decrypt\t")
x=1
while x == 1:
Raw_input = input('Write Text: ')
Raw_input = Raw_input.lower()
output = []
printOut = str()
if mode == "decrypt" or "d":
for character in Raw_input:
number = ord(character) + 91
if number < 193:
number += 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])-96)
printOut = printOut + character
elif mode == "encrypt" or "e":
for character in Raw_input:
number = ord(character) - 91
if number > 26:
number -= 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])+96)
printOut = printOut + character
print(printOut)
它似乎只是对问题代码不起作用的加密,它将轻松解密工作代码 returns。
在此先感谢您提供的任何帮助:)
if mode == "decrypt" or "d":
总是 True,你可能是说
if mode == "decrypt" or mode == "d":
所以第一个分支总是被采用。同样
elif mode == "encrypt" or mode == "e":
if mode == 'encrypt' or 'e':
将始终评估为 True
因为 'e'
是 True
您需要使用:
if mode == 'encrypt' or mode == 'e':
或进行更全面的检查:
if mode.lower().strip() in ['encrypt', 'e']:
我在学校学习 python 计算课程和加密相关任务 我和一个朋友遇到了一个相当奇怪的错误: 我们每个人都有自己的程序副本,其中一个在 if 语句中使用 "or" 来决定程序是加密还是解密,这是唯一的区别,有没有人知道为什么会这样影响程序? 该程序打算从用户那里获取输入,然后 return 加密字符串,其中每个字符在字母表中移动了 5 个字母,解密选项与此相反,工作和 none 工作计划如下:
工作计划
mode = input("Do you want to encrypt or decrypt\t")
x=1
while x == 1:
Raw_input = input('Write Text: ')
Raw_input = Raw_input.lower()
output = []
printOut = str()
if mode == "decrypt":
for character in Raw_input:
number = ord(character) + 91
if number < 193:
number += 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])-96)
printOut = printOut + character
elif mode == "encrypt":
for character in Raw_input:
number = ord(character) - 91
if number > 26:
number -= 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])+96)
printOut = printOut + character
print(printOut)
程序无效
mode = input("Do you want to encrypt or decrypt\t")
x=1
while x == 1:
Raw_input = input('Write Text: ')
Raw_input = Raw_input.lower()
output = []
printOut = str()
if mode == "decrypt" or "d":
for character in Raw_input:
number = ord(character) + 91
if number < 193:
number += 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])-96)
printOut = printOut + character
elif mode == "encrypt" or "e":
for character in Raw_input:
number = ord(character) - 91
if number > 26:
number -= 26
output.append(number)
length = len(output)
for counter in range (length):
character = chr((output[counter])+96)
printOut = printOut + character
print(printOut)
它似乎只是对问题代码不起作用的加密,它将轻松解密工作代码 returns。
在此先感谢您提供的任何帮助:)
if mode == "decrypt" or "d":
总是 True,你可能是说
if mode == "decrypt" or mode == "d":
所以第一个分支总是被采用。同样
elif mode == "encrypt" or mode == "e":
if mode == 'encrypt' or 'e':
将始终评估为 True
因为 'e'
是 True
您需要使用:
if mode == 'encrypt' or mode == 'e':
或进行更全面的检查:
if mode.lower().strip() in ['encrypt', 'e']: