練習(xí) 4-6 笨辦法學(xué)Python3

練習(xí) 4 變量和名字

現(xiàn)在你已經(jīng)能用 print 打印東西了,也能用 Python 做數(shù)學(xué)計(jì)算了。接下來(lái)我們要學(xué)習(xí)變量。在編程中,變量就是給某個(gè)東西起的名字,就像“寫這本書的人”名叫“Zed”一樣。程序員用這些變量讓代碼讀起來(lái)更像自然語(yǔ)言。如果他們不給軟件里面的東西起名字,當(dāng)他們?cè)俅伍喿x他們寫的代碼時(shí)就會(huì)毫無(wú)頭緒。

如果你在做這個(gè)練習(xí)的時(shí)候卡住了,記得我交給你的技巧,尋找不同點(diǎn),并專注細(xì)節(jié):

  1. 在每行代碼上面寫上注釋,跟自己解釋這行代碼的作用。
  2. 倒著讀你的 .py 文件。
  3. 大聲把你的 .py 文件讀出來(lái),字符也要讀。

ex4.py

1   cars = 100
2   space_in_a_car = 4.0
3   drivers = 30
4   passengers = 90
5   cars_not_driven = cars - drivers
6   cars_driven = drivers
7   carpool_capacity = cars_driven * space_in_a_car
8   average_passengers_per_car = passengers / cars_driven     
9
10
11  print("There are", cars, "cars available.")
12  print("There are only", drivers, "drivers available.")
13  print("There will be", cars_not_driven, "empty cars today.")
14  print("We can transport", carpool_capacity, "people today.")
15  print("We have", passengers, "to carpool today.")
16  print("We need to put about", average_passengers_per_car,
17        "in each car.")
警告!
space_in_a_car 中的 _ 是下劃線,我們會(huì)在以后的練習(xí)中經(jīng)常用它來(lái)代替變量名之間的空格。

你會(huì)看到

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

$ python3.6 ex4.py
There are 100 cars available.
There are only 30 drivers available. 
There will be 70 empty cars today.
We can transport 120.0 people today. 
We have 90 to carpool today.
We need to put about 3.0 in each car.

附加練習(xí)

當(dāng)我第一次寫這個(gè)程序的時(shí)候我出了一個(gè)小錯(cuò)誤,Python 是這樣告訴我的:

Traceback ( most recent call last ): 
   File "ex4.py" , line 8 , in <module>
     average_passengers_per_car = car_pool_capacity / passenger 
NameError : name ' car_pool_capacity ' is not defined

用你自己的話解釋這段錯(cuò)誤信息,要用行號(hào)并解釋清楚為什么。

更多附加練習(xí):

  1. 我給 space_in_a_car 賦予了 4.0 而不是 4,小數(shù)部分有必要加嗎?如果只寫 4 會(huì)怎么樣?
  2. 記住,4.0 是一個(gè)浮點(diǎn)數(shù),浮點(diǎn)數(shù)就是有小數(shù)點(diǎn)的數(shù)字,要得到一個(gè)浮點(diǎn)數(shù),你就得寫成 4.0 而不是 4。
  3. 給每一個(gè)變量寫一些注釋。
  4. 確定你知道 = 就是給一個(gè)變量名(比如cars_driven,passengers)賦一個(gè)值(可以是數(shù)字、字符串等等)。
  5. 記住 _ 是個(gè)下劃線。
  6. 像之前的練習(xí)一樣把 Python3.6 當(dāng)做一個(gè)計(jì)算器來(lái)運(yùn)行,然后用變量名來(lái)做運(yùn)算,比如用得比較多的 i、x、j 等。

常見(jiàn)問(wèn)題

=== 有什么區(qū)別? = 把右邊的值賦給左邊的變量。== 用來(lái)檢測(cè)左右兩邊的東西是不是有同樣的值。你會(huì)在練習(xí) 27 中學(xué)到這塊內(nèi)容。

我們能把 x = 100 寫成 x=100 嗎? 可以,但這種格式不好,加上空格閱讀體驗(yàn)更好。

你說(shuō)的“倒著讀文件”是什么意思?很簡(jiǎn)單,假如你有一個(gè) 16 行代碼的文件,從第 16 行開(kāi)始,和我文件中的第 16 行開(kāi)始對(duì)比,然后是第 15 行等等,直到你把整個(gè)文件過(guò)完。

為什么給 space_in_a_car 賦值要用 4.0?主要是為了讓你知道什么是浮點(diǎn)數(shù),以及問(wèn)出這個(gè)問(wèn)題,可以參考附加練習(xí)。

練習(xí) 5 更多變量和打印

現(xiàn)在我們要輸入更多的變量并把它們打印出來(lái)。這次我們將用一個(gè)叫做“格式字符串”的東西。每次你用引號(hào)把一段文本引起來(lái),你就是在創(chuàng)建一個(gè)字符串。字符串是你讓計(jì)算機(jī)呈現(xiàn)給人看的內(nèi)容。你可以打印字符串、把字符串保存到文件、或者發(fā)送到網(wǎng)絡(luò)服務(wù)器等等。

字符串真的非常方便。你將在這個(gè)練習(xí)中學(xué)習(xí)如何創(chuàng)建包含變量的字符串。把你需要的變量放在 {} 里面就可以把變量嵌入在字符串中。你還需要在字符串前面加上字母 f (代表 format),比如 f"Hello, {somevar}"。雙引號(hào)前面的 f 是為了告訴 python3: “這個(gè)字符串需要被格式化,把這些變量放在那兒?!?/p>

同樣的,輸入以下內(nèi)容,哪怕你不理解,確保準(zhǔn)確無(wú)誤。

ex5.py

1   my_name = 'Zed A. Shaw'
2   my_age = 35 # not a lie
3   my_height = 74 # inches
4   my_weight = 180 # lbs
5   my_eyes = 'Blue'
6   my_teeth = 'White'
7   my_hair = 'Brown' 
8
9   print(f"Let's talk about {my_name}.")
10  print(f"He's {my_height} inches tall.")
11  print(f"He's {my_weight} pounds heavy.")
12  print("Actually that's not too heavy.")
13  print(f"He's got {my_eyes} eyes and {my_hair} hair.")
14  print(f"His teeth are usually {my_teeth} depending on the coffee.")
15
16  # this line is tricky, try to get it exactly right
17  total = my_age + my_height + my_weight
18  print(f"If I add {my_age}, {my_height}, and {my_weight} I get {total}.")

你會(huì)看到

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

$ python3.6 ex5.py
Let's talk about Zed A. Shaw. He's 74 inches tall.
He's 180 pounds heavy. 
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teeth are usually White depending on the coffee. 
If I add 35, 74, and 180 I get 289.

附加練習(xí)

  1. 修改所有的變量,把前面的 my_ 刪掉。要更改所有的變量名,而不只是有 = 的部分。
  2. 試著寫一些變量,把英尺(inches)和英鎊(pounds)換算成厘米( centimeters)和千克(kilograms),別自己直接把自己的數(shù)據(jù)進(jìn)去,用 python 的數(shù)學(xué)運(yùn)算來(lái)?yè)Q算。

常見(jiàn)問(wèn)題

我能創(chuàng)建一個(gè)這樣的變量嗎:1 = 'Zed Shaw'?不能,1 不是一個(gè)有效的變量名。變量名需要以字母開(kāi)頭,比如 a1 就可以,但 1 不行。

我如何給浮點(diǎn)數(shù)四舍五入取整數(shù)?你可以用 round() 函數(shù),比如:round(1.7333)。

為什么我還是不理解這些代碼?試著把這些數(shù)字換成你自己的。雖然有點(diǎn)奇怪,但是與你自己相關(guān)能夠讓這些代碼看起來(lái)更接地氣。而且,你還剛開(kāi)始學(xué)習(xí),肯定會(huì)有不理解的地方。繼續(xù)努力,再做一些練習(xí)你就會(huì)慢慢理解的。

練習(xí) 6 字符串和文本

你已經(jīng)寫過(guò)字符串了,但你還是不知道它們是用來(lái)干嘛的。在這個(gè)練習(xí)中,我們會(huì)創(chuàng)建一些包含復(fù)雜字符串的變量,讓你看看它們的作用。首先解釋一下字符串的含義。

字符串通常是一些你想要讓你的程序呈現(xiàn)給別人或者”輸出“出來(lái)的文本信息。當(dāng)你把雙引號(hào)或者單引號(hào)括在一段本文外面時(shí),Python 就會(huì)知道你想要把這些文本變成字符串。你在學(xué)習(xí) print 的時(shí)候應(yīng)該多次看到這種用法了,當(dāng)你想要打印一些文本的時(shí)候,你就把這些文本放在雙引號(hào)或者單引號(hào)里面。

字符串可以包含你的 Python 腳本中任意數(shù)量的變量。記住,變量就是讓名字 = 一個(gè)值的那行代碼。在本練習(xí)的代碼中,types_of_people = 10 創(chuàng)建了一個(gè)名稱為 types_of_people,值為 10 的變量。你可以用 {types_of_people} 的形式把這個(gè)變量放到任意字符串中。你還會(huì)看到我用了格式字符串(f-string),就像這樣:

f"some stuff here { avariable }" 
f"some other stuff { anothervar }"

Python 還有其他種類的格式,就像你在第 17 行看到的 .format() 語(yǔ)法。你還會(huì)看到當(dāng)我想對(duì)一個(gè)已經(jīng)創(chuàng)建的字符串應(yīng)用一種格式的時(shí)候,我就會(huì)這樣用,比如在一個(gè)循環(huán)里,我們會(huì)在后面的內(nèi)容中涉及到。

我們現(xiàn)在要輸入一整段字符串、變量和格式,然后把它們打印出來(lái)。你還會(huì)練習(xí)使用縮寫作為變量名。程序員都喜歡使用簡(jiǎn)短的縮寫來(lái)節(jié)省時(shí)間,但是那些縮寫在你看來(lái)會(huì)十分晦澀難懂。所以我們得盡早開(kāi)始學(xué)習(xí)閱讀和書寫這些東西。

ex6.py

1   types_of_people = 10
2   x = f"There are {types_of_people} types of people." 
3
4   binary = "binary"
5   do_not = "don't"
6   y = f"Those who know {binary} and those who {do_not}." 
7
8   print(x)
9   print(y) 
10
11  print(f"I said: {x}")
12  print(f"I also said: '{y}'") 
13
14  hilarious = False
15  joke_evaluation = "Isn't that joke so funny?! {}" 
16
17  print(joke_evaluation.format(hilarious)) 
18
19  w = "This is the left side of..."
20  e = "a string with a right side." 
21
22  print(w + e)

你會(huì)看到

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

$ python3.6 ex6.py
There are 10 types of people.
Those who know binary and those who don't. 
I said: There are 10 types of people.
I also said: 'Those who know binary and those who don't.' 
Isn't that joke so funny?! False
This is the left side of...a string with a right side.

附加練習(xí)

  1. 復(fù)習(xí)一遍這個(gè)程序,并在每一行上面寫上注釋來(lái)解釋它。
  2. 找到所有把字符串放在字符串里面的地方,一共有 4 處。
  3. 你確定有 4 處嗎?你怎么知道?也許我愛(ài)撒謊呢。
  4. 解釋一下為什么把 we 兩個(gè)字符串用 + 連起來(lái)能夠弄成一個(gè)更長(zhǎng)的字符串。

把代碼打亂

你現(xiàn)在已經(jīng)可以把代碼打亂了。把它當(dāng)成一個(gè)游戲,用一種最聰明或者最簡(jiǎn)單的方式把代碼打亂。打亂之后,你需要修復(fù)它們。如果你跟你的朋友一起學(xué)習(xí),你們可以相互打亂對(duì)方的代碼,然后再試著修復(fù)它。把你的 ex6.py 發(fā)給你的朋友,讓他們打亂,然后你再試著找出它們的錯(cuò)誤,并修復(fù)它。記住,如果你已經(jīng)寫了一遍這些代碼了,你可以再寫一次。如果你打亂得太徹底了,就試著重新寫一遍。

常見(jiàn)問(wèn)題

為什么你在一些字符串外面放的是單引號(hào),而其他的不是?大多數(shù)是因?yàn)楦袷?。但是如果一個(gè)字符串已經(jīng)用了雙引號(hào),我就會(huì)在這個(gè)字符串里面用單引號(hào),看看第 6 行和第 15 行你就知道了。

如果你覺(jué)得一個(gè)笑話很好笑,可以寫 hilarious = True 嗎?** 可以的,你會(huì)在練習(xí) 27 中學(xué)習(xí)到這些布爾值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 練習(xí) 1. 第一個(gè)程序 警告!如果你跳過(guò)了練習(xí) 0,那你就沒(méi)有按照這本書的正確學(xué)習(xí)方式來(lái)。另外,也不要使用 IDL...
    愛(ài)學(xué)習(xí)的ai醬閱讀 3,458評(píng)論 0 10
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,804評(píng)論 1 118
  • 我聽(tīng)說(shuō),有種雞叫云雛。個(gè)頭很小,成年后也就比得上剛出生的雞仔。體輕,一身的絨毛,遠(yuǎn)看像團(tuán)棉花球,伸手摸摸,更像。 ...
    新酒_閱讀 233評(píng)論 0 0
  • 早上鬧鈴響了不想起床,磨嘰一陣后想到今天是自己早起跑步的第21天,趕緊坐起來(lái)穿衣服襪子換鞋,拿上家門鑰匙和手機(jī),上...
    魏魏說(shuō)閱讀 216評(píng)論 0 1
  • 假如從你來(lái)到這個(gè)世界的那一天就失去光明,你會(huì)怎么辦? 我,是一個(gè)拾荒者。我,也是一個(gè)盲人。我的眼睛從娘胎里一出來(lái)便...
    千葉蹁躚舞閱讀 122評(píng)論 2 8

友情鏈接更多精彩內(nèi)容