不幸的是,拉姆達也不EXEC變化固定在程序中的錯誤:
有3輸入的情況下,1)具有少於10個字符,「ABC」的字符串,輸出0;一個具有10個或更多字符的字符串「abcdefghij」,在空格被移除之後被求和(即用A = 1等);與後空間少於10個字符的字符串被刪除,「ABCD FGHIJ」,應該輸出一個0,但是,由於寫入時,代碼符與索引錯誤。
儘管這是有是代碼來檢查這個特定的情況下:
[i for i in [[ord(i.lower())-96 for i in a.replace(' ','')]] if len(i)>=10][0]
不幸的是,如果字符串是更換後太短,你的索引列表爲空[] [0]這將導致錯誤。而且,lambda變化使得程序比原始的更長。
這裏是拉姆達的解決方案,既修復了指數錯誤,也比原來的解決方案更短的改寫:
print((lambda a:sum(*([i for i in[[ord(x)%32 for x in a if x!=' ']]if len(i)>9]or[[0]]))if len(a)>9else 0)(raw_input("Enter: ")))
我一直是在Python 2和原來一樣,儘管我的強烈願望,升級這個關鍵代碼到Python 3 ...
你想要的代碼行,怎麼辦?爲什麼一條線? –
因爲我想看看到蟒蛇可以達到:),除了它的好,如果你喜歡超級不可讀的,未調試的,單行挑戰自己:) –
,你應該嘗試的Perl,[它在更好的方式即](https://en.wikipedia.org/wiki/Just_another_Perl_hacker)。 –