如何为凯撒密码程序添加外层循环以持续接收输入直至输入为空?
没问题!要让这个凯撒密码程序持续运行直到输入为空,咱们给现有代码套个外层循环就行,顺便还修正了原代码里的一个小变量冲突问题。修改后的代码如下:
key = 5 # 把密钥提到循环外,不用每次重复定义 while True: # 获取用户输入,提示语可选,也可以直接用input() user_input = input("请输入要加密的文本(直接回车即可退出):") # 判断是否为空输入,是空就退出循环 if not user_input: break encrypted = "" # 遍历输入的每个字符,把变量名改成char避免覆盖输入内容 for char in user_input: if char.isupper(): c_unicode = ord(char) c_index = ord(char) - ord("A") new_index = (c_index + key) % 26 new_unicode = new_index + ord("A") new_character = chr(new_unicode) encrypted += new_character # 可选:处理非大写字母的字符,比如直接保留原字符 else: encrypted += char print("加密结果:", encrypted)
关键修改说明:
- 外层套了
while True无限循环,程序会一直运行直到触发break - 把输入变量改成
user_input,避免和循环里的字符变量重名(原代码用c同时当输入变量和循环变量,会覆盖输入内容) - 通过
if not user_input判断空输入:用户直接回车时,输入内容是空字符串,此时执行break退出循环 - 补充了非大写字母字符的处理逻辑(直接保留原字符),如果不需要可以删掉
else块,完全保留原代码只处理大写字母的逻辑也可以
运行后效果:每次输入文本按回车就会输出加密结果,直接回车就结束程序啦!
内容的提问来源于stack exchange,提问作者SEA_mnft
相关产品推荐
相关产品推荐

