在訓練小白寫循環(huán)語句的時候汁讼,大神給了小白這么一個練習題:寫一段程序淆攻,找到 5 在 list [1, 2, 3, 5, 8]
中的位置。然后嘿架,小白給出了讓大神感覺匪夷所思的代碼(為了保護小白,大神在這里隱去了小白的小白程序)啸箫。大神讓小白用人類的語言來描述一下自己想干什么耸彪,小白的描述如下(已被簡化):
讓 x 從 0 開始計算,直到找到 L[x] = 5忘苛。
用人類的大腦理解的話蝉娜,當然是沒有問題的。但程序員國的人并不這么思考扎唾,或者說并不這么說話召川。于是大神讓小白把后半句換個說話再描述一下,小白想了想說:
直到發(fā)現(xiàn) L[x] = 5
大神還是不滿意胸遇,讓小白再試一下荧呐,痛苦的小白又想了半天,給出了這樣一個描述:
當 L[x] = 5 成立時纸镊,輸出 x 的值
雖然小白在完成最后一次描述之后倍阐,寫出了正確的程序,但他其實說的還是不對逗威。
程序員國的人是怎么說話的
在程序員國存在很多俚語峰搪,這些俚語看起來和人類的語言差不多,但實際上這些俚語對應了程序中的一行或者一段代碼凯旭。程序員們使用這些語言交流概耻,并可以直接翻譯成對應的代碼。所以罐呼,這些語言又有著與表面不太一樣的意思鞠柄。大神在這里總結一些常見的程序員的語言,只有學會了這些表達的方式弄贿,小白才能融入到程序員的世界春锋,和他們無縫的交流。當然差凹,學會了這些語言期奔,并且使用這些語言思考,也就大概學會了基本的程序寫法危尿。
1. =
怎么說
小白在學 Python 的時候呐萌,第一課就學了變量。但程序員的世界里谊娇,這個不讀“等于”肺孤,這個讀作“賦值”。意思和數(shù)學里的“設”差不多。所以在讀題目的時候赠堵,常常會看到“設 x = 1”小渊,或者“給定 L = [1, 2, 3, 4, 5]”,其意思是給一個變量賦了對應的值茫叭。
2. if
是什么意思
if
是代碼里最常見的單詞酬屉,只要需要對一些條件進行區(qū)分,就需要這個單詞揍愁。在程序員的世界里呐萨,這個不讀成“直到”,也不是“發(fā)現(xiàn)”和“當”莽囤。這些都是錯誤的表達谬擦。這個就是字面的意思:如果⌒喽校看下小白上面的語言表述惨远,其實大神就是想引導他表達“如果”這個意思:
讓 x 從0開始計算,如果 L[x] == 5饵沧,就打印 x 的值锨络。
當腦子里想的“如果”,就不會寫出奇怪的代碼了狼牺。其實如果和程序多交流就會發(fā)現(xiàn)羡儿,他們很喜歡說“如果”這個詞,因為這就是他們每天的工作(職業(yè)彩窃俊)掠归。
和 if
配對的 else
,在程序員國被說成:否則悄泥。這樣虏冻,比較完整的的表達就是:如果……,那么……弹囚,否則……厨相。這些表達雖然很呆(所以程序常常都給人很呆的印象),但很實用鸥鹉,因為直接對應了程序中的片段蛮穿。
3. for
是什么意思
for
也是也程序里很常用的單詞,本質(zhì)上這個詞表示重復毁渗。不過践磅,翻譯成程序員國人的語言,這個應該這么說:對于每個……灸异,做“一些事情”府适。比如 Python 中的 for
:
for x in range(0, 10):
print(x)
翻譯成人類的語言就是:對于 [0, 10) 這個區(qū)間里的每個值 x
羔飞,打印 x
的值。
4. while
是什么意思
在小白的幾個表達中檐春,使用了一個“當”的說法逻淌,但其實while
在程序員國表表示“當”的意思。還是舉一個 Python 里的例子:
x = 10
while x > 0:
print(x)
x = x - 1
這里喇聊,翻譯成人類的語言就是:當 x
的值大于 0 的時候恍风,就打印 x
的值∈睦椋可能有些朋友因為受計算機二級考試的毒害,還知道一個“直到”的說法凯楔。不過窜骄,這個在 Python 里并不存在,也不是必須品摆屯。比如上面這個代碼邻遏,也可以翻譯成:打印 x
的值,直到 x <= 0
虐骑。顯然這個需要腦抽一下把條件翻轉過來(是不是有點虛擬語氣的意思)准验。
鑒于小白目前的學習進度,了解這些說法暫時夠用廷没。以后學習了更多的內(nèi)容糊饱,再來總結吧。