【问题标题】:Implementing rot13 in python在python中实现rot13
【发布时间】:2021-11-19 13:11:13
【问题描述】:

我正在尝试实现 rot13 算法。显然不难,但我的问题是python中带有撇号的字符串我不知道该怎么做才能解决这个问题。我不确定问题出在我的程序还是 python 的运行方式上,因为我尝试运行像“python3 solve.py '”这样的空程序,但它没有运行,但在终端中给了我一个 >。 如果有人发现其他错误,我也会在下面添加我的代码。 通过空程序,我只是调用了一个什么都不做的 main。

import sys


def main(input):
    output = ""
    abc = "abcdefghijklmnopqrstuvwxyz"
    ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    for i in input:
        if ord(i) in range(65,91):
            output += ABC[((ABC.find(i) + 13) % 26)]
        elif ord(i) in range(97,123):
            output += abc[((abc.find(i) + 13) % 26)]
        else:
            output += i
    return output

if __name__ == '__main__':

    result = main(sys.argv[1])

    print(result)

【问题讨论】:

  • 您的程序看起来正确。问题是在大多数 shell 中 ' 表示文字的开始。在 Windows 中,您可以执行 py -3 solve.py "'" (这是包含一个单引号的 2 个双引号)。根据您使用的 shell,会有不同的转义机制。
  • 你真的是在命令行运行python3 solve.py '吗?这与 Python 无关。这与你的 shell 有关,它正在等待你继续输入文本,直到它到达结束引号。您的问题是关于如何在 shell 中转义单引号。

标签: python rot13


【解决方案1】:

单撇号作为带引号的(可能是多行的)字符串的开头,这就是您看到> 提示的原因。也可以发送一个撇号,您可以将其转义或用双引号括起来:

$ python solve.py \'
'
$ python solve.py "'"
'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多