本文目錄一覽:
- 1、如何自學 Python
- 2、40道python二級考試真題火爆互聯網,完整版答案解析為你保駕護航
- 3、初學者應該學python2還是python3?
- 4、2019-03-06 python練習二:人生苦短我用python
如何自學 Python
其實python非常適合初學者入門。相比較其他不少主流編程語言,有更好的可讀性,因此上手相對容易。自帶的各種模塊加上豐富的第三方模塊,免去了很多「重複造輪子」的工作,可以更快地寫出東西。
我是真正零基礎開始學Python的,從一開始的一竅不通,到3個月後成功搭建了一個動態網站(沒有用任何框架)。相比於計算機大牛,我更加知道一個小白將會遇到什麼坑,遇到哪些難點。我把我的學習過程寫在下面,並附上在每個階段的學習資料,希望對零基礎的Python學習
想學習編程但不知如何開始的朋友。回答這類問題的人往往只是列出書單資源然後給出一個大致的方向。有些朋友一開始就扎入了理論學習的汪洋大海,從苦讀類似《演算法導論》開始,能夠堅持讀下來的寥寥無幾,學習的積極性也被不斷的挫敗感消磨的所剩無幾。可以加Python技術直播裙【三零四零五零七九九】 群里大佬生動的講解可以讓你思路更清晰,互動直播,遇到問題裡面有大佬解答指導!
一直以來,編程對我而言是一種「黑魔法」般的存在。今年阿里月餅門,當很多人都參與到是非之爭的時候,我更加著迷於程序員區區幾行代碼的腳本所展現出的威力,對於外行而言,這是超乎他們想像之外的某種能力——為什麼我守在電腦面前盯著秒針然後拚命點擊滑鼠都不一定能搶到的禮物,程序員只需要提前花5分鐘寫3行代碼就輕鬆搞定?
所以,我的心底深處一直都想變成這樣的一位魔法師。今年的8月,剛好工作上想要開發一個基於微信的英語學習網站,藉此機會,我決定好好學習一下編程。在此之前,我所有關於程序的知識僅僅來源於兩部分,一是本科時期的C語言必修課,現在已經忘的一乾二淨,不過好歹我從中明白編程是怎麼回事;第二部分是大概兩年前由於工作關係學的一些Python,不過只是皮毛,現在忘的七七八八。
簡單說,我的目標是建立一個網站,不過這個網站是動態的,也就是說它能識別誰登陸,然後對不同的人顯示不同的內容。而當時的現實是,我完全不明白網頁是如何顯示出來的?譬如每個人登陸知乎的時候看到的是定製化的頁面,後台是如何基於每個ID來組織出不同的頁面的?所有我們看到的問題,回答,參與的評論在背後的伺服器上是以一種什麼樣的形式存在的?又比如為什麼有些頁面只能在微信端打開,在電腦上就會出錯?(不知道你有沒有發現這一點)
當時我的心中充滿了無數個類似的問號?當然如果你也是小白,一定有著同樣的疑問。
好處是一開始就明確了學習的目的:Web建站。所以我的學習方案基本就是通過做項目學習,哪裡不懂就解決哪裡,邊做邊學習,不斷推進。另外,由於知道很多成功的網站在用Python做伺服器開發,比如知乎,所以我就自然選擇了Python。
於是我就開始了我充滿著挫敗感和成就感的編程之路……
從8月到12月的四個月里,除去本來的工作,為了學習質量,我會保證平均每天4個小時的學習時間,周末也不例外。另外,所有的文檔,問答都盡量看英文的,這可以幫你剩下大量的時間。12月13日,我做的網站上線了,3天時間大概有5000人訪問了這個網站,我有時在後台看著日誌,不免有些心潮噴涌,我想把自己的經驗寫下來,希望對於那些有心學習編程但無從下手的朋友提供一些幫助和鼓勵。
現在回頭看,我認為這一段時間的造輪子是提升編程能力最快的時候。比如為了寫ORM,就必須去花很多時間學習SQL,去了解Python裡面的metaclass,而如果用一個現成的框架,我很有可能偷懶不去關注某些細節。而不出問題還好,一旦出問題,我就只能跪。另外,造輪子迫使我在開始的時候就構思整個框架,因為我必須儘可能的考慮到所有的情況,於是就會不斷的強迫自己完善知識體系,和別人的代碼作對比從而改進自己的,這個過程充滿了無盡的挫敗感,但是得來的成就和快樂也是無可比擬的。
關於自學python
個人最大3點經驗
1. 找一本淺顯易懂,常式比較好的教程,從頭到尾看下去。
不要看很多本,專註於一本。把裡面的常式都手打一遍,搞懂為什麼。我當時看的是《簡明python教程》,不過這本書不是非常適合零基礎初學者。
2. 去找一個實際項目練手。
我當時是因為要做一個網站,不得已要學python。這種條件下的效果比你平時學一門新語言要好很多。所以最好是要有真實的項目做。可以找幾個同學一起做個網站之類。注意,真實項目不一定非要是商業項目,你寫一個只是自己會用的博客網站也是真實項目,關鍵是要核心功能完整。
3.最好能找到一個已經會python的人。問他一點學習規劃的建議(上知乎也是個途徑),然後在遇到卡殼的地方找他指點。
這樣會事半功倍。但是,要學會搜索,學會如何更好地提問。沒人願意幫你寫作業或是回答「一搜便知」的問題。
然而,別人的經驗未必能完全複製。比如我沒有說的是,在自學python之前,我已在學校系統學習過其他的編程語言。
對於完全沒有編程經驗的初學者,在學習python的時候,面對的不僅僅是python這門語言,還需要面臨「編程」的一些普遍問題,比如:
· 從零開始,不知道從何入手,找了本編程教材發現第二章開始就看不懂了
· 缺少計算機基礎知識,被一些教程略過的「常識性」問題卡住
· 遇到問題不知道怎麼尋找解決方案
· 看懂語法之後不知道拿來做什麼,學完一陣子就又忘了
· 缺少數據結構、設計模式等編程基礎知識,只能寫出小的程序片段
所以除了前面說的3點經驗,
給編程初學者的額外建議
1、首先要有信心。雖然可能你看了幾個小時也沒在屏幕上打出一個三角形,或者壓根兒就沒能把程序運行起來。但相信我,幾乎所有程序員一開始都是這麼折騰過來的。
2、選擇合適的教程。有些書很經典,但未必適合你,可能你寫了上萬行代碼之後再看它會比較好。
3、寫代碼,然後寫更多的代碼。光看教程,編不出程序。從書上的常式開始寫,再寫小程序片段,然後寫完整的項目。
4、除了學習編程語言,也兼顧補一點計算機基礎,和英語。
5、不但要學寫代碼,還要學會看代碼,更要會調試代碼。讀懂你自己程序的報錯信息。再去找些github上的程序,讀懂別人的代碼。
6、學會查官方文檔,用好搜索引擎和開發者社區。
40道python二級考試真題火爆互聯網,完整版答案解析為你保駕護航
1.以下關於程序設計語言的描述,錯誤的選項是:
A Python語言是一種腳本編程語言
B 彙編語言是直接操作計算機硬體的編程語言
C 程序設計語言經歷了機器語言、彙編語言、腳本語言三個階段
D 編譯和解釋的區別是一次性翻譯程序還是每次執行時都要翻譯程序
正確答案: C
2.表達式 1001 == 0x3e7 的結果是:
A false
B False
C true
D True
正確答案: B
3.以下選項,不是Python保留字的選項是:
A del
B pass
C not
D string
正確答案: D
4.表達式 eval(『500/10』) 的結果是:
A 『500/10』
B 500/10
C 50
D 50.0
正確答案: D
5.表達式 type(eval(『45』)) 的結果是:
A
B
C None
D
正確答案: D
6.表達式 pmod(20,3) 的結果是:
A 6, 2
B 6
C 2
D (6, 2)
正確答案: D
7.以下關於字元串類型的操作的描述,錯誤的是:
A str.replace(x,y)方法把字元串str中所有的x子串都替換成y
B 想把一個字元串str所有的字元都大寫,用str.upper()
C 想獲取字元串str的長度,用字元串處理函數 str.len()
D 設 x = 』aa』 ,則執行x*3的結果是『aaaaaa』
正確答案: C
8.設 str = 『python』,想把字元串的第一個字母大寫,其他字母還是小寫,正確的選項是:
A print(str[0].upper()+str[1:])
B print(str[1].upper()+str[-1:1])
C print(str[0].upper()+str[1:-1])
D print(str[1].upper()+str[2:])
正確答案: A
9.以下選項,不屬於程序流程圖基本元素的是:
A 循環框
B 連接點
C 判斷框
D 起始框
正確答案: A
10.以下關於循環結構的描述,錯誤的是:
A 遍歷循環使用for in 語句,其中循環結構不能是文件
B 使用range()函數可以指定for循環的次數
C for i in range(5)表示循環5次,i的值是從0到4
D 用字元串做循環結構的時候,循環的次數是字元串的長度
正確答案: A
11.執行以下程序,輸入」93python22」,輸出結果是:
A python9322
B python
C 93python22
D 9322
正確答案: C
A la
B 請輸入整數
C pythonpython
D python
正確答案: C
A 2
B 請輸入q退出:
C 3
D 1
正確答案: A
14.以下程序的輸出結果是:
A 0
B 2
C UnboundLocalError
D 5
正確答案: A
A 18 None
B 10 18
C UnboundLocalError
D 18 18
正確答案: B
def test( b = 2, a = 4):
global z
z += a * b
return z
z = 10
print(test(),z)
18,18
17.以下程序的輸出結果是:
A 22.0 None
B 10 None
C 22 None
D 10.0 22.0
正確答案: B
18.以下表達式,正確定義了一個集合數據對象的是:
A x = { 200, 』flg』, 20.3}
B x = ( 200, 』flg』, 20.3)
C x = [ 200, 』flg』, 20.3 ]
D x = {『flg』 : 20.3}
正確答案: A
19.以下程序的輸出結果是:
A [『z』, 『j』, 『s』, 『y』]
B [『j』, 『s』, 『y』, 『z』]
C [『j』, 『z』, 『z』, 『s』, 『z』, 『y』, 『j』]
D [『j』, 『j』, 『s』, 『y』, 『z』, 『z』, 『z』]
正確答案: B
20.以下程序的輸出結果是:
A htslbht
B hlbst
C tsblh
D hhlstt
正確答案: B
21.已知id(ls1) = 4404896968,以下程序的輸出結果是:
A 4404896968 4404896904
B 4404896904 4404896968
C 4404896968 4404896968
D 4404896904 4404896904
正確答案: A
A [『300』,『200』,『400』]
B [『shandong』, 『hebei』, 『beijing』]
C [300,200,400]
D 『shandong』, 『hebei』, 『beijing』
正確答案: B
23.以下關於文件的描述,錯誤的是:
A 二進位文件和文本文件的操作步驟都是「打開-操作-關閉」
B open() 打開文件之後,文件的內容並沒有在內存中
C open()只能打開一個已經存在的文件
D 文件讀寫之後,要調用close()才能確保文件被保存在磁碟中了
正確答案: C
24.以下程序輸出到文件text.csv里的結果是:
A [90,87,93]
B 90,87,93
C 『[90,87,93]』
D 『90,87,93』
正確答案: B
25.以下程序的輸出結果是:
A ( [1,2,3,4,5])
B [12, 34, 56, 78]
C ([12, 34, 56, 78])
D [1,2,3,4,5]
正確答案: B
26.以下關於數據維度的描述,錯誤的是:
A 採用列表表示一維數據,不同數據類型的元素是可以的
B JSON格式可以表示比二維數據還複雜的高維數據
C 二維數據可以看成是一維數據的組合形式
D 字典不可以表示二維以上的高維數據
正確答案: D
27.以下不屬於Python的pip工具命令的選項是:
A show
B install
C download
D get
正確答案: D
29.以下不是程序輸出結果的選項是:
A [12, 78, 56, 34]
B [56, 12, 78, 34]
C [12, 34, 56, 78]
D [12, 78, 34, 56]
正確答案: C
30.以下關於turtle庫的描述,正確的是:
A 在import turtle之後就可以用circle()語句,來畫一個圓圈
B 要用from turtle import turtle來導入所有的庫函數
C home() 函數設置當前畫筆位置到原點,朝向東
D seth(x) 是setheading(x)函數的別名,讓畫筆向前移動x
正確答案: C
31.一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調用。而實現遞歸調用中的存儲分配通常用
A 棧
B 堆
C 鏈表
D 數組
正確答案: A
因為函數調用是能過將關鍵寄存器壓棧保護現場;在函數返回時,彈棧恢復現場來完成的。
而遞歸調用說白了就是自已調用自己。也就是不停的上演pop, push的棧操作。
系統為什麼選用棧來實現函數間的調用呢?我覺的主要原因如下:
對於頻繁的調用操作過程中,棧的pop,push操作最簡潔,快速。硬體級(或者理解成彙編級也行)支持棧操作。所以用棧最高效,快速。如果用堆、數組、鏈表,不光要維護很多功能輔助性數據,演算法也很麻煩。這樣會大大降低計算機的使用效率。
32.下列敘述中正確的是
A 一個演算法的空間複雜度大,則其時間複雜度必定小
B 一個演算法的空間複雜度大,則其時間複雜度也必定大
C 演算法的時間複雜度與空間複雜度沒有直接關係
D 一個演算法的時間複雜度大,則其空間複雜度必定小
正確答案: C
34.軟體開發離不開系統環境資源的支持,其中必要的測試數據屬於
A 輔助資源
B 硬體資源
C 通信資源
D 支持軟體
正確答案: A
35.完全不考慮程序的內部結構和內部特徵,而只是根據程序功能導出測試用例的測試方法是
A 錯誤推測法
B 白箱測試法
C 黑箱測試法
D 安裝測試法
正確答案: C
37.下列有關資料庫的描述,正確的是
A 資料庫是一個關係
B 資料庫是一個DBF文件
C 資料庫是一個結構化的數據集合
D 資料庫是一組文件
正確答案: C
38.相對於資料庫系統,文件系統的主要缺陷有數據關聯差、數據不一致性和
A 可重用性差
B 冗餘性
C 非持久性
D 安全性差
正確答案: B
39.軟體開發的結構化生命周期方法將軟體生命周期劃分成
A 定義、開發、運行維護
B 設計階段、編程階段、測試階段
C 總體設計、詳細設計、編程調試
D 需求分析、功能定義、系統設計
正確答案: A
40.下列不屬於結構化分析的常用工具的是
A 判定樹
B 數據字典
C 數據流圖
D PAD圖
正確答案: C
初學者應該學python2還是python3?
在剛開始學習Python時,我也有與題主一樣的顧慮:究竟,我們應該學習Python2還是學習Python3版本呢?其實對於Python3的抵制,大多數都是因為相信目前一些所謂的「磚家」們的說辭。
在那些「磚家」的說辭中,Python3變成了一個幼稚的,還需要成長的小嬰兒,各種在2版本中支持的數據包都不能在3中使用。但,這樣的說辭明顯不正確。毫無爭議的說,目前Python3已經兼容了絕大多數Python2的高頻資料庫了,大約只有不到5%的數據包不支持Python3。所以,千萬不要相信所謂專家們口中的Python3嬰兒說。
此外,作為未來的發展趨勢,Python3正在逐步代替Python2發揮作用。Python2的使用佔比在逐年下降,而Python3的使用佔比卻在不斷上升。並且,據Python核心團隊消息,他們將會在2020年停止對Python2版本的支持。而在2019年1月1日起,任何新功能也只會在Python3中更新。
所以,你現在要做的,就是拋棄傳統守舊的Python2優勢說法,而去擁抱目前流行的Python3。另外,語言的學習最重要的是思維,而不是格式的差別。就身邊的同事而言,會Python2和3的人大有人在,並不會感覺很痛苦。
與其顧慮,不如行動,唯有行動,才能改變。
2019-03-06 python練習二:人生苦短我用python
輸入一個小於等於12的整數n,逐個輸出字元串 ‘人生苦短我用python’ 中前n個字元,每個字元後輸出一個半形逗號和一個空隔。
一個小於等於12的整數n
‘人生苦短我用python’ 中前n個字元
例如:
輸入:2
輸出:人, 生,
原創文章,作者:IAUO0,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129603.html