5

我在python中创建了一个凯撒移位程序,见下文:

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 脚本提供任何输出。

谢谢

4

3 回答 3

4

三重引用它:

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

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

于 2013-08-27T14:51:26.350 回答
1

将输入文本括在三引号之间:"""your code"""

于 2013-08-27T14:51:08.210 回答
1

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

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

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

对比

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

无需担心特殊情况。

于 2013-08-27T15:35:17.557 回答