【发布时间】:2015-08-13 14:26:58
【问题描述】:
我有几行代码用于为凯撒密码制作旋转字符串,只是为了好玩,我试图将它们浓缩成一个。显然这是毫无意义的,因为它完全不可读,但我很好奇。不过,我还是不知道该怎么做。这是我到目前为止尝试过的方法
s = 'abcdefghijklmnopqrstuvwxyz'
rot = raw_input('Enter Rotation or Key: ')
s = s[-int(rot):] + s[:-int(rot)] if rot.isdigit() else rot.lower()+ ''.join([j for i in s for j in rot.lower() if j == i]) # This is the only line I want condensed
print s
这是实际有效的可读版本
s = 'abcdefghijklmnopqrstuvwxyz'
rot = raw_input('Enter Rotation or Key: ')
if rot.isdigit(): #I only want from here
s = s[-int(rot):] + s[:-int(rot)]
else:
for i in rot.lower():
s = s.replace(i,'')
s = rot.lower() + s #To here condensed into one line
print s
rot 是凯撒密码的keyed version 的字母或密钥的旋转量。您应该能够按原样运行代码并准确查看问题所在
我知道这是糟糕的代码,但我发现这种代码很有趣,因为该语言支持将这么多 if/else/for/lambda/whatever 链接到一行中。
【问题讨论】:
-
你为什么希望它是单行的?你失去了可读性,却一无所获。
-
@MarkusMeskanen 引用 OP:“显然这是毫无意义的,因为它完全不可读,但 我很好奇。”(强调我的)。只是玩玩而已。
-
@poke 我知道他只是好奇,但他的所作所为很愚蠢(无意冒犯,我自己也做过)。看看我的回答,你可以有一个功能,保持可读性,什么都没有。没有必要对编写糟糕的代码感到好奇。
-
为什么要压缩代码?这看起来是个愚蠢的问题。
-
我想把它浓缩成一行,因为我一直看到这样的代码,而且我很难阅读它,所以我试图编写糟糕的代码,以便我能理解糟糕的代码。这对我来说也很有趣,该语言支持将这么多 if/else/for/lambda/whatever 链接在一起。
标签: python python-2.7 minimize