Python While循环忽略If语句
我正在生成“键值”,这将帮助函数加密和解密完成它们的工作 正在运行'if ans==e'语句,并返回输出,但忽略'k=True'语句,导致程序在encrypt函数上进入无限循环。有人知道它为什么这样做吗Python While循环忽略If语句,python,Python,我正在生成“键值”,这将帮助函数加密和解密完成它们的工作 正在运行'if ans==e'语句,并返回输出,但忽略'k=True'语句,导致程序在encrypt函数上进入无限循环。有人知道它为什么这样做吗 ans = input("Would you like to decrypt or encrypt your message (e/d)? ") key = Generate.gen.keys(self) k = False while not k: if ans == "e":
ans = input("Would you like to decrypt or encrypt your message (e/d)? ")
key = Generate.gen.keys(self)
k = False
while not k:
if ans == "e":
encrypt(key[0], key[1])
k = True
if ans == "d":
decrypt(key[0], key[2])
k = True
else:
k = False
def encrypt(n, e):
output = []
plain_text = input("Please enter message: ")
raw = list(plain_text)
print(raw)
for char in raw:
ascii_val = ord(char)
pub = ascii_val ** e % n
print(pub)
output.append(pub)
print(output)
非常感谢,,
老茧
如果您阅读代码,您的逻辑如下
elif ans=='d':
如果ans==“e”
为true,则将确实执行k=true
然后,下一个if
/else
语句出现
如果ans
是“e”
,则它不会同时是“d”
。因此,将执行else
部分,将k
设置回False
您需要使用
elif ans==“d”
,这样如果ans==“e”以前为真,则跳过此部分。您可能希望elif
而不是第二个if
:如果ans
是“e”
,k
将设置为真
,然后我们检查ans
是否为“d”
,而它不是,因此我们转到else
分支,将k
设置回False
。为什么会有while
循环?如果ans=='e'
或ans=='d',则只需检查。如果不是呢?您将有一个无限循环,因为您不允许更改ans
if ans == "e":
encrypt(key[0], key[1])
k = True
if ans == "d":
decrypt(key[0], key[2])
k = True
else:
k = False
k = False
while not k:
if ans == "e":
# ...
k = True
if ans == "d":
# ...
else:
k = False