Python实现ROT13算法时带撇号字符串输入报错问题求解
问题1:执行命令后终端返回>的原因
这是Shell(命令行终端)的语法规则导致,和Python代码完全无关。单引号在Shell中是字符串的包裹标识符,你输入的命令末尾只有开单引号、没有对应的闭单引号,Shell会判定你未完成字符串输入,因此输出>提示符等待你补全内容、闭合单引号,此时你输入任意内容后补充一个'即可触发程序执行。
问题2:如何传入带撇号(单引号)的参数
如果需要给程序传入包含单引号的字符串作为参数,有两种常用的Shell传参方案:
- 用双引号包裹整个参数字符串:比如要传入
it's a test,执行命令为python3 solve.py "it's a test" - 对单引号做转义处理:在单引号前加反斜杠转义,示例命令为
python3 solve.py 'it'\''s a test'
代码本身的验证
你提供的ROT13实现逻辑是正确的,非字母字符(包括撇号、空格、符号等)都会原样保留,不存在功能缺陷。如果需要简化代码,可参考两个优化方向:
- 无需调用
ord()判断ASCII范围,直接判断字符是否在大小写字母串中,可读性更高:
# 优化后的字符判断示例 for i in input: if i in ABC: output += ABC[((ABC.find(i) + 13) % 26)] elif i in abc: output += abc[((abc.find(i) + 13) % 26)] else: output += i
- Python标准库内置了ROT13编码支持,可直接调用实现等效逻辑:
import codecs def main(input): return codecs.encode(input, 'rot13')
内容的提问来源于stack exchange,提问作者uche ozor
相关产品推荐
相关产品推荐

