練習(xí) 1-3 笨辦法學(xué)Python3

練習(xí) 1. 第一個(gè)程序

警告焊唬!
如果你跳過了練習(xí) 0故痊,那你就沒有按照這本書的正確學(xué)習(xí)方式來顶瞳。另外玖姑,也不要使用 IDLE 或者 IDE愕秫。如果你跳過了練習(xí) 0,拐回去重新學(xué)習(xí)焰络。

你可能已經(jīng)花費(fèi)了大量時(shí)間在練習(xí) 0 上戴甩,學(xué)習(xí)如何安裝一個(gè)文本編輯器,運(yùn)行編輯器以及 Terminal闪彼,并且學(xué)習(xí)如何操作它們甜孤。如果你還沒有做這些,就不要繼續(xù)畏腕,否則你會(huì)后悔的缴川。這種練習(xí)前的警告我再說最后一次:不要擅自跳過練習(xí)自己往前學(xué)

把下面的本文輸入到一個(gè)名為 ex1.py 單個(gè)文件中描馅,python 文件一般以 .py為后綴把夸。

ex1.py

1   print("Hello World!")
2   print("Hello Again")
3   print("I like typing this.")
4   print("This is fun.")
5   print('Yay! Printing.')
6   print("I'd much rather you 'not'.")
7   print('I "said" do not touch this.')

你的 Atom 文本編輯器應(yīng)該看起來像這樣:

ex1-1.jpg

如果你的編輯器看起來不完全一樣也不用擔(dān)心,只要大體一致就行铭污。

當(dāng)你敲這個(gè)文件時(shí)恋日,你得明白:

  1. 左邊這些數(shù)字不是我敲上去的膀篮,它印在書上是為了講解的時(shí)候方便說明。比如“看第 5 行...”之類岂膳,所以不要把行數(shù)敲進(jìn) Python 腳本里誓竿。
  2. 我輸出的結(jié)果跟我在練習(xí) 1 的 ex1.py 中讓你們輸入的內(nèi)容是一模一樣的,而不是大致相同谈截。所以每一個(gè)字符你都要嚴(yán)格按照我的要求來輸入筷屡,當(dāng)然顏色無所謂。

在終端這樣輸入就可以運(yùn)行你的 Python 文件:

python3.6 ex1.py

如果你都做對(duì)了傻盟,你就會(huì)看到和我一樣的結(jié)果速蕊,如果沒有,你肯定是哪里出錯(cuò)了娘赴。不规哲,相信我,不是電腦的問題诽表。

你應(yīng)該看到

在 MacOS 的 Terminal 上你應(yīng)該看到這樣的結(jié)果:

ex1-2.jpg

在 Windows 的 Powershell 上你應(yīng)該看到這樣的結(jié)果:

ex1-3.jpg

你可能會(huì)在 python3.6 命令行前面看到不同的名字唉锌,這不重要,重要的是你輸入的命令要輸出跟我一樣的結(jié)果竿奏。

如果你出錯(cuò)了你可能會(huì)看到這個(gè):

$ python3.6 python/ex1.py
File "python/ex1.py" , line 3 
print (" I like typing this.
                                   ^
SyntaxError : EOL while scanning string literal

能讀懂這些錯(cuò)誤信息很重要袄简,因?yàn)槟憬酉聛砜赡軙?huì)出現(xiàn)很多這種錯(cuò)誤,我也是泛啸。讓我們一行一行來看绿语。

  1. 我們?cè)?Terminal 運(yùn)行 ex1.py 腳本。
  2. Python 告訴我們 ex1.py 文件的第三行出錯(cuò)了候址。
  3. 它把第三行的代碼打印出來以便我們查看吕粹。
  4. 然后它放了一個(gè) ^ (插入符號(hào))來指出哪里出了問題。注意到那個(gè)缺失的 " 了嗎岗仑?
  5. 最后匹耕,它輸出“SyntaxError”,并告訴我們可能的錯(cuò)誤信息荠雕。通常這些錯(cuò)誤信息都比較隱晦稳其,但是如果你用搜索引擎搜索以下,你就會(huì)發(fā)現(xiàn)別人也遇到過這樣的錯(cuò)誤炸卑,然后你很可能就會(huì)找到問題的解決辦法既鞠。

課后練習(xí)

這個(gè)課后練習(xí)包括一些你應(yīng)該嘗試去做的東西,如果你不會(huì)盖文,可以先跳過嘱蛋,隨后再拐回來做。

對(duì)于這個(gè)練習(xí),試試以下操作:

  1. 讓你的腳本再打印出一行浑槽。
  2. 讓你的腳本只打印一行蒋失。
  3. 在任一行的開頭放一個(gè) # ,看看會(huì)發(fā)生什么桐玻?試著弄明白這個(gè)符號(hào)的作用篙挽。

從現(xiàn)在開始,我不會(huì)解釋每個(gè)練習(xí)都是如何工作的镊靴,除非遇到特殊情況铣卡。

常見問題

以下是實(shí)際學(xué)習(xí)本節(jié)練習(xí)過程中學(xué)生們經(jīng)常會(huì)問到的一些問題:

我能用 IDLE 嗎?不偏竟,你應(yīng)該用 Terminal 或者 Powershell煮落。如果你不知道怎么用,就去學(xué)習(xí)附錄 A 的命令行速成教程踊谋。

我怎么才能像你一樣編輯代碼時(shí)有顏色蝉仇?先把你的文件另存為 .py ,比如 ex1.py 殖蚕。然后你在輸入的時(shí)候就會(huì)有顏色了轿衔。

我在運(yùn)行 ex1.py 時(shí)遇到了 SyntaxError:invalid syntax 提示。你很可能是已經(jīng)運(yùn)行了 Python睦疫,然后又輸了一次 python害驹。關(guān)閉 Terminal,重新打開蛤育,然后只輸入 python3.6 ex1.py宛官。

我遇到了 can't open 'ex1.py': [Errno 2] No such file or directory. (“無法打開‘ex1.py’:[錯(cuò)誤號(hào) 2] 沒有該文件或目錄”)。你需要和你創(chuàng)建的文件在同一個(gè)目錄(文件夾)下瓦糕。你要先使用 cd 命令切換到了那個(gè)目錄下底洗。比如,如果你把你的文件保存在 lpthw/ex1.py刻坊,那你就應(yīng)該在運(yùn)行 python3.6 ex1.py 之前先用 cd lpthw/ 切換到 lpthw/ 目錄下枷恕。如果這段你看不懂党晋,去學(xué)附錄 A 的命令行速成教程谭胚。

我的文件不運(yùn)行,我只是返回了提示符未玻,沒有任何輸出灾而。 你很可能以為我讓你輸入 print("Hello World!")只是讓你輸 "Hello World!"。并不是扳剿,你要完整地旁趟、一字不差地把代碼敲出來。

練習(xí) 2 注釋和井號(hào)

注釋在程序中非常重要庇绽,它們可以用自然語言告訴你某段代碼的功能時(shí)什么锡搜,還能在你想要暫時(shí)移除某段代碼時(shí)禁用程序的一部分橙困。以下是如何在 Python 中使用注釋:

ex2.py

1   # A comment, this is so you can read your program later.
2   # Anything after the # is ignored by python. 3
4   print("I could have code like this.") # and the comment after 5
6   # You can also use a comment to "disable" or comment out code
7   # print("This won't run.") 8
9   print("This will run.")

從現(xiàn)在開始,我都會(huì)這樣寫代碼耕餐。你得明白不是所有的東西都得在字面上保持一致凡傅,你的屏幕和程序可能看起來跟我的不一樣,但是只要你在編輯器里輸入的文本一樣就行肠缔。事實(shí)上夏跷,我用任何文本編輯器都可以輸出同樣的結(jié)果。

你應(yīng)該看到

練習(xí) 2 會(huì)話

$ python3.6 ex2.py
I could have code like this. This will run.

再說一次明未,我之后可能不會(huì)將所有的截圖都貼出來槽华,你得明白第一個(gè) $ 和最后一個(gè) $ 之間的內(nèi)容才是你應(yīng)該關(guān)注的。

課后練習(xí)

  1. 弄清楚 # 符號(hào)的作用趟妥,而且記住它的名字猫态。(中文為井號(hào),英文為 octothorpe 或者 pound character)披摄。
  2. 打開你的 ex2.py 文件懂鸵,從后往前逐行檢查每個(gè)單詞,與要求輸入的內(nèi)容進(jìn)行對(duì)比行疏。
  3. 有沒有發(fā)現(xiàn)什么錯(cuò)誤匆光?有的話就改正過來.
  4. 讀你寫的習(xí)題,把每個(gè)字符都讀出來酿联。有沒有發(fā)現(xiàn)更多錯(cuò)誤终息?有的話改正過來。

常見問題

為什么在 print("Hi # there.")# 就沒有被忽略贞让? 因?yàn)? # 在一個(gè)字符串里周崭,計(jì)算機(jī)會(huì)打印引號(hào)之間字符串的所有內(nèi)容, # 在字符串里被認(rèn)為是一個(gè)字符喳张,而不是注釋符號(hào)续镇。

我如何把很多行變成注釋? 在每一行前面加一個(gè) # 销部。

為什么我要倒著檢查代碼摸航? 這是一個(gè)讓你的大腦不專注于每行代碼意思的小技巧,這樣做能夠讓你更準(zhǔn)確地檢查出錯(cuò)誤舅桩,可以說是一個(gè)很好用的糾錯(cuò)技巧了酱虎。

練習(xí) 3 數(shù)字和數(shù)學(xué)

每一種編程語言都得和數(shù)字、數(shù)學(xué)打交道擂涛。不用擔(dān)心:程序員總是自詡為數(shù)學(xué)天才读串,其實(shí)事實(shí)并非如此。如果他們是數(shù)學(xué)天才,他們就會(huì)去研究數(shù)學(xué)恢暖,而不是去寫那些 bug 連篇的網(wǎng)站框架以便能開上豪車排监。

這個(gè)練習(xí)包含了很多數(shù)學(xué)符號(hào)。讓我們看看它們的名字杰捂,在你輸入的時(shí)候社露,試著說出名字,直到你爛熟于心為止琼娘。以下是這些符號(hào)的名字:

? + plus峭弟,加號(hào)
? - minus,減號(hào)
? / slash脱拼,斜杠
? * asterisk瞒瘸,星號(hào)
? % percent,百分號(hào)
? < less-than熄浓,小于號(hào)
? > greater-than情臭,大于號(hào)
? <= less-than-equal,小于等于號(hào)
? >= greater-than-equal赌蔑,大于等于號(hào)

有沒有注意到以上只是些符號(hào)俯在,沒有運(yùn)算操作呢?寫完下面的練習(xí)代碼后娃惯,再回到上面的列表跷乐,弄明白每個(gè)符號(hào)的作用。例如 + 是用來做加法運(yùn)算的趾浅。

ex3.py

1   print("I will now count my chickens:")
2
3   print("Hens", 25 + 30 / 6)
4   print("Roosters", 100 - 25 * 3 % 4)
5
6   print("Now I will count the eggs:") 
7
8   print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6)
9
10  print("Is it true that 3 + 2 < 5 - 7?") 
11
12  print(3 + 2 < 5 - 7)
13
14  print("What is 3 + 2?", 3 + 2)
15  print("What is 5 - 7?", 5 - 7)
16
17  print("Oh, that's why it's False.") 
18
19  print("How about some more.") 
20
21  print("Is it greater?", 5 > -2)
22  print("Is it greater or equal?", 5 >= -2)
23  print("Is it less or equal?", 5 <= -2)

確保你在運(yùn)行它之前準(zhǔn)確輸入了每一行代碼愕提,和我的要求做一下對(duì)比檢查。

你應(yīng)該看到

練習(xí) 3 會(huì)話

$ python3.6 ex3.py
I will now count my chickens: Hens 30.0
Roosters 97
Now I will count the eggs: 6.75
Is it true that 3 + 2 < 5 - 7? False
What is 3 + 2? 5
What is 5 - 7? -2
Oh, that's why it's False. How about some more.
Is it greater? True
Is it greater or equal? True

Is it less or equal? False

課后練習(xí)

  1. 在每一行上面皿哨,用 # 寫一句注釋浅侨,向自己解釋這行代碼的作用。
  2. 還記得你在練習(xí) 0 中是如何啟動(dòng) Python 3.6 的嗎证膨?再次啟動(dòng)它如输,把 Python 當(dāng)成一個(gè)計(jì)算器來做一些數(shù)學(xué)運(yùn)算。
  3. 找一些你需要計(jì)算的東西央勒,然后寫一個(gè)新的 .py 文件不见。
  4. 用浮點(diǎn)數(shù)重新寫一下 ex3.py,讓它更精確一些订歪,比如 20.0 就是一個(gè)浮點(diǎn)數(shù)脖祈。

常見問題

為什么 % 是一個(gè)模數(shù)肆捕,而不是百分比刷晋? 這很可能只是設(shè)計(jì)者們選用的一個(gè)符號(hào)。在正常情況下你可以把它讀作百分號(hào),但是眼虱,在編程中 % 只是一個(gè)符號(hào)喻奥。

% 是如何工作的? 可以這樣講捏悬,x 除以 y 余 J撞蚕。比如 100 除以 16 余 4,% 求的就是余數(shù) J过牙。

運(yùn)算順序是怎樣的甥厦? 在美國我們遵循 PEMDAS 規(guī)則,即“括號(hào)寇钉,指數(shù)刀疙,乘,除扫倡,加谦秧,減(Parentheses Exponents Multiplication Division Addition Subtraction)。Python 也遵循這樣的規(guī)則撵溃。很多人對(duì) PEMDAS 規(guī)則存在誤解疚鲤,認(rèn)為它們是嚴(yán)格按照先后次序來的,其實(shí)并不是缘挑,乘除是同時(shí)的集歇,加減也是同時(shí)的,所以這個(gè)規(guī)則可能寫成 PE(M&D)(A&S) 更合適语淘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鬼悠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亏娜,更是在濱河造成了極大的恐慌焕窝,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件维贺,死亡現(xiàn)場(chǎng)離奇詭異它掂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)溯泣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門虐秋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垃沦,你說我怎么就攤上這事客给。” “怎么了肢簿?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵靶剑,是天一觀的道長蜻拨。 經(jīng)常有香客問我,道長桩引,這世上最難降的妖魔是什么缎讼? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮坑匠,結(jié)果婚禮上血崭,老公的妹妹穿的比我還像新娘。我一直安慰自己厘灼,他們只是感情好夹纫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著设凹,像睡著了一般捷凄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上围来,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天跺涤,我揣著相機(jī)與錄音,去河邊找鬼监透。 笑死桶错,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胀蛮。 我是一名探鬼主播院刁,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粪狼!你這毒婦竟也來了退腥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤再榄,失蹤者是張志新(化名)和其女友劉穎狡刘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體困鸥,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗅蔬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疾就。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澜术。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖猬腰,靈堂內(nèi)的尸體忽然破棺而出鸟废,到底是詐尸還是另有隱情,我是刑警寧澤姑荷,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布盒延,位于F島的核電站缩擂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兰英。R本人自食惡果不足惜撇叁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一供鸠、第九天 我趴在偏房一處隱蔽的房頂上張望畦贸。 院中可真熱鬧,春花似錦楞捂、人聲如沸薄坏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胶坠。三九已至,卻和暖如春繁堡,著一層夾襖步出監(jiān)牢的瞬間沈善,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工椭蹄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闻牡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓绳矩,卻偏偏與公主長得像罩润,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翼馆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354