我正在尝试为一个caeasar密码写一个python one liner,从echo接收输入并将它移动3个字符。当我运行它时,我收到语法错误消息。如果有人能指出我的语法错误,我将不胜感激。我在os os 6上使用python 2.6。
〜$ echo“HELLO”| python -c“import sys; print''。join(chr(ord(line)+ 3ys.stdin])”
档案“”,第1行
import sys; print ' '.join(chr(ord(line)+3)[for line in sys.stdin])
^
SyntaxError:语法无效
当然,输出应该打印:KHOOR。
谢谢。
答案 0 :(得分:1)
我认为你想要的是
import sys; print ' '.join([chr(ord(line)+3) for line in sys.stdin])
^
答案 1 :(得分:1)
立即语法错误是因为您正在使用方括号for line in sys.stdin
。这些是不必要的,应该简单地删除。
但是,您的代码仍然存在问题,因为您在整行上调用ord
,而不仅仅是单个字符。您可能需要一个额外的循环来迭代每行的字符。在下面的代码中,这就是我所做的,进一步添加剥离线,以便我们不会尝试将换行符转换为奇怪的东西:
import sys; print "\n".join("".join(chr(ord(char)+3) for char in line.strip()) for line in sys.stdin)