Day 5 - Beginner - Python Loops

時間:2021年2月7日 20:00~20:30
與會人員:Aileen, Sky, 玉米, 筑筑(依筆劃順序)
旁聽人員:Laurence, speedthunder, 胖胖(依筆劃順序)
導讀:Sky

經過前兩次討論(Day 1~4)後,發現一個問題。

之前三堂共學課程(flutter初階、flutter進階、scrapy爬蟲),上課的朋友程度比較接近,所以討論的內容,主要是課程看到的重點、實作時遇到的問題,以及相關主題的延伸參考資訊。

但這次 Python百日馬,各組組員是常態分配,從新手到資深都有,上述方式有點卡住,沒辦法像之前那樣討論。

本次討論(Day 5~6),改用新的方式,比較接近讀書會。

一、由導讀人導讀
方式為各章逐節介紹。

二、線上影音,搭配文字描述(依序由上而下)

  1. 導讀內容,貼到論壇中(texture)
  2. Discord 即時語音交談(audio)
  3. 如有需要,分享電腦螢幕畫面(video)作即時解說

三、與會組員,如有問題或補充,也是以上述三種方式回覆。

每次討論前,要做的事:

一、新手每完成一日課程(例如 Day 5),在論壇中回報自己的程式碼網址(repl.it)。

二、有問題隨時在論壇中發問,不用等到討論時才提出。

Repl.it - password-generator-start-1
:point_up_2:這是我目前的進度~

1個讚

@筑筑_廖
line 23 的 print 不要縮排,不然會跟著 line 20 的迴圈跑。

同理,line 35~37也是。

為了加速我們的討論,先請問新手幾個問題,建議在討論前回覆(有經驗的朋友免回):

一、Thonny 安裝
請問是否有安裝 Thonny?(「有」或「沒有」)
補充:我沒有裝,但我認為了解程式如何一步一步執行(以及每個變數在各步驟中,值的變化),對新手很重要。
我看之前提出的問題,很多都是因為搞不清楚程式是如何逐步執行。

二、各章節的題目,是否都已完成(指Day5。「完成」或列出所有未完成的章節,如:「5-53, 5-54」)

三、想提問的問題(如果有,可以在下方提出你的問題)

5-54 Day 5 Project: Create a Password Generator

感謝!

一、我有安裝Thonny
二、各章節都有完成
三、目前是都有聽懂,不過我發現自己最大的問題,是對於「活用學過的東西來思考解決流程」這部份很困擾,所以會卡關比較久 :sweat_smile:。我想這部份還是只能靠多練習了。

1個讚

今天打算加入「語音頻道」,有些事情用說的比較快。

為了做記錄,我會錄音,以防有漏掉的訊息,但最好是用不到,因為聽錄音很花時間。

使用方法很簡單,點選 Discord 語音頻道的「書房 1」即可,還可以分享電腦畫面。
有空的朋友,可以在8點前自己試一下。

不方便說話的人,可以只聽不說(Discord 左下方,你可以控制耳機和麥克風)。

提醒:為了避免電腦輸出的聲音進入麥克風,造成無限迴音,建議用耳機聽(取代電腦播放聲音)。

1個讚

一、我還沒有安裝Thonny
二、各章節都已完成
三、目前都可以聽懂,就是需要多練習

■ 5-48. Using the for loop with Python Lists

語法介紹
for items in list_of_items:
#Do something to each item

2:13 Thonny 示範
問卷調查:只請教新手,回覆一下有沒有安裝 Thonny。(「有」或「沒有」)
補充:我沒有裝,但我覺得知道程式如何一步一步執行(以及每個變數在各步驟中,值的變化),對新手很重要。
我看之前提出的問題,很多都是因為搞不清楚程式是如何逐步執行。

5:25 縮排觀念的複習 => 冒號 :
if, for… 都是,隸屬同一個縮排的,要全部執行完,才會繼續這個指令(if, for…)之後的事

1個讚

■ 5-49. [Interactive Coding Exercise] Average Height #自我挑戰練習
https://repl.it/@appbrewery/day-5-1-exercise
目標:計算學生平均身高 Average height
輸入:輸入學生身高(格式:156 178 165 171 187),數量不限
輸出:上述輸入之平均身高(僅整數部分,答案是171)
限制:
一、不要使用 len(list) 及 sum(list) functions
二、使用 for 迴圈的方式

測試用題目與答案:
180 124 165 173 189 169 146
164

提示:cheatsheet?
■ round() 四捨五入後,僅保留整數

1個讚

■ 5-50. [Interactive Coding Exercise] High Score #自我挑戰練習
https://repl.it/@appbrewery/day-5-2-exercise
目標:找出學生最高分 High Score
輸入:輸入學生分數(格式:78 65 89 86 55 91 64 89),數量不限
輸出:上述輸入之最高分(答案是91)
限制:
一、不要使用 max(list) 或 min(list) functions
二、使用 for 迴圈的方式

測試用題目與答案:78 65 89 86 55 91 64 89 (答案是91)

===================
■ 問題:請問新手可以用 while 做一個功能相同的嗎?

■ 複習:上次在想,指定變數值這個行為,在現實生活中的對應。後來想到一個:你的錢包。
wallet = 0 # 錢包目前裡面的錢是0
wallet = wallet + 3000 # wallet += 3000 # 放了3000元進去,所以現在錢包裡有3000元
wallet = wallet - 500 # wallet -= 500 # 拿了500元出來,所以現在錢包裡有2500元

1個讚

repl.it code 少了 print

1個讚

day-5-2是 for loop 的正確 verion

■ 5-51. for loops and the range() function

語法介紹

numbers = []
for number in numbers:
	do something

# for loop in range
for number in range(start, stop+1): # from start to stop
	do something

for number in range(start, stop+1, step): # from start to stop
	do something
for number in range(1, 11, 3): 
	print(number)
1
4
7
10
1個讚

支援Thonny圖片。

1個讚

■ 5-52. Adding Even Numbers #Exercise
https://repl.it/@appbrewery/day-5-3-exercise
目標:從1~100中,將所有的偶數相加

語法介紹:% 餘數
The Modulo Operator % # 餘數

if number % 2 == 0 # number 是偶數時,除以 2 餘 0
	do something

■ 5-53. The FizzBuzz Job Interview Question #Exercise
https://repl.it/@appbrewery/day-5-4-exercise (題目)
https://repl.it/@appbrewery/day-5-4-solution (答案)
目標:FizzBuzz。數字是3的倍數時,用Fizz取代;是5的倍數時,用Buzz取代;同時是3和5的倍數時,用FizzBuzz取代

小技巧:如果想要讓自己記住 range 後方的數字要減一,可以嘗試這種寫法

for number in range(1, 100+1):
	...

■ 5-54. Project: Create a Password Generator
https://repl.it/@appbrewery/password-generator-start

我試了三種方式:
一、string remove or extract
失敗。因為 remove 是給 list 用的,還沒找到 string 是否有類似用法
二、get value from list & list.remove()
成功。從 list 取出某 item 的值,然後刪除這個 item。
三、list.pop()
pop 就是二的兩步驟合而為一。取值並刪除。

結果他的 list 次序亂數是怎麼做的?

結果是 shuffle
random.shuffle(password_list)
■ 而且,為了使用 shuffle ,Angela 先將 string 轉為 list,完成後再將 list 轉換回 string

Python 如何隨機打亂列表(List)排序

在 list中看不到,因為是 random 的函式
5. Data Structures — Python 3.9.1 documentation
https://docs.python.org/3/tutorial/datastructures.html

random — Generate pseudo-random numbers — Python 3.9.1 documentation
https://docs.python.org/3/library/random.html

1個讚

沒有了

1個讚