Python:Caesar shift - 输入包含多个“#”{$ $值的字符串

时间:2013-08-27 14:49:51

标签: python

我在python中创建了一个caesar shift程序,见下文:

from string import maketrans

originalChar = (raw_input("Enter a letter: "))
numToInc = int(raw_input("Enter a number: "))
code = ""

for x in originalChar:
    newChar = (chr(ord(x) + numToInc))
    code = code + newChar

transtab = maketrans(chr(32+numToInc), " ")
print code.translate(transtab)

我必须转移以下代码:

%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@}$[**$&^{$!@#$%)!@(&
+^!{%_$&@^!}$_${)$_#)!({@!)(^}!*^&!$%_&&}&_#&@{)]{+)%*{&*%*&@%$+]!*__(#!*){%&@++
!_)^$&&%#+)}!@!)&^}**#!_$([$!$}#*^}$+&#[{*{}{((#$]{[$[$$()_#}!@}^@_&%^*!){*^^_$^

如您所见,它包含注释。

如何将该代码转换为字符串?这些评论阻止了我的python脚本提供任何输出。

由于

3 个答案:

答案 0 :(得分:4)

Tripple引用它:

"""%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@}$[**$&^{$!@#$%)!@(&
+^!{%_$&@^!}$_${)$_#)!({@!)(^}!*^&!$%_&&}&_#&@{)]{+)%*{&*%*&@%$+]!*__(#!*){%&@++
!_)^$&&%#+)}!@!)&^}**#!_$([$!$}#*^}$+&#[{*{}{((#$]{[$[$$()_#}!@}^@_&%^*!){*^^_$^"""

三引号字符串可以跨越多行并在其中包含注释。

答案 1 :(得分:1)

在三引号之间包围输入文本:"""your code"""

答案 2 :(得分:1)

如果源字符串包含Python转义字符,则三引号方法将不起作用。例如,序列\n表示换行符,并且(正确地)解释为一个字符,而不是两个字符。

如果您想要一个通用解决方案,其中输入中提供的所有字符都按原样捕获并且没有转义/解释,请通过引号外的前导r使用原始字符串方法:

>>> s = '\n\n\n'
>>> print len(s)
3

VS

>>> r = r'\n\n\n'
>>> print len(r)
6

无需担心特殊情况。