這10個題,有 68% 的人答不對
昨晚推送的圖片被微信壓成渣渣,這張圖是從「Python之禪私密讀者圈」分享出來的,作者乘風,裡面的內容就是前天Python沖頂大會每道題的簡析。
這篇文章總共收到118條留言,回答正確的有40 人,68% 的人答錯了,以下是每道題的詳細解答,第一位回答正確者請移步到文章底部查看。
第一題:下面哪個單詞不是Python3裡面的關鍵字
這道題選a,所謂關鍵字就是 Python 預先保留的標識符,每個關鍵字都有特殊的含義,不能作為變數名,通過 keyword 可以查看所有關鍵字,eval 是Python中的一個內建函數。
第二題:表達式的值是多少
這道題選c,考察的是運算符優先順序,指數運算具有最高優先順序,下圖運算符優先順序從高到低
第三題:下面兩個表達式輸出內容是什麼?
這道題選b,考察的是 Python 中兩個整數對象的比較,「is」 比較對象內存地址,只有兩個對象都指向相同的地址時才返回True,「==」 比較對象的值,值相等的兩個對象內存地址不一定相同。值為300的兩個整數在內存中是兩個不同的對象,介於[-5,256]之間的整數,值相同的整數都會共享同一個對象,所以不管內存中出現了多少個數值為1的對象,都表示同一個對象。
第四題:下面這個函數的返回值是什麼?
選d,這道題考察是操作符重載的概念,在Python中,操作符支持重載,也就是說不僅數字支持「+」操作,列表也支持這些操作,因為列表對象重載了這兩個操作符。自定義類也可以重載這些操作符,例如:
第五題:在Python中,表達式 0.1 + 0.2 == 0.3 的返回是?
選b,在Python中,數值對象都是用二進位來表示的,浮點數也不例外,但不是所有的浮點數都能用二進位精確表示的。一個浮點數轉化為二進位就是是不斷的乘2,取其中的整數部分,例如:
所以0.1的二進位表示就是0.0 0011 0011 0011…,計算機沒法精確表示這個浮點數,所有就造成了誤差。
第六題:表達式 ~~~5 的值是多少?
「~」是按位取反操作符,就是對整數的二進位位進行取反,把1變為0,0變為1,例如5的二進位表示為00000101,按位取反是 111111010,這串二進位在計算機裡面以補碼的形式存儲,我們需要把它轉換為原碼才知道它代表的真實數值是多少。因為這個補碼的最高位為1,所以他是一個負數,負數從補碼轉換為原碼是符號位保留為1,其它各位取反,再加1,所有 111111010 取反是 100000101,加1轉換成了原碼 100000110,轉換為10進位整數就是-6(最高位為1表示負數),取三次反跟取一次是一樣的。所以這道題的答案是-6。
第七題:表達式 bool(『False』) 的返回值是:
選a,這道題考察的是對象的真假值,」False」在這裡是一個字元串,只要不是空字元串,bool返回的結果就是True,下面是真假值對照表。
第八題:表達式 True==False==False 的返回值是:
選b,鏈式比較中,True==False==False 等價於 (True==False) and (False==False)
第九題:下面表達式輸出結果為:
選b,這道題考察的是while … break …else 的執行邏輯,只要執行了break就不會執行else,反之亦然,沒有執行break就一定會執行else。


TAG:Python之禪 |