Hui 109,10,27
程式寫作時,我們常常需要重複執行某段程式,這時迴圈的使用就顯得很重要
當我們已知or可計算執行的次數時我們常用for迴圈
而當執行次數難以計算時,就比較適合用while迴圈
用法:
for (一物件) in (所有物件) :
簡單來說 就是 for "自己取的變數名稱" in "list,taple…":
"你要執行的程式碼"
PS:注意縮排
我們每次執行 都會從 後面的 list 依序 拿其中一個元素對他做處理
Q:那我只是單純的想做100次呢?
那就用"range()"
for 後面接一個 range() 如
class range(stop)
class range(start, stop[, step])
用法
當然數字不一定是要正的,負的也行
輸入:n
輸出:n 到 0
ex:10,9,8,7,6,…0,
hint:
輸入:n
輸出:F1~Fn 的費氏數列
ex:
input:6
output:1,1,2,3,5,8,
input:8
output:1,1,2,3,5,8,13,21,
解答:
for 後面接一個list
舉例來說
當然,不一定要都是相同的型態
給定
輸出:
兩倍的list_A
ex:
[2,4,6,108,8…]
給定
輸出:
新的list_C=list_B的反過來
ex:
[8,6,4,4,54,3,2,1]
hint: Using "insert()" to add item in new list
防風林外還有防風林外還有防林
for 迴圈中當然也還能有for 迴圈
而要怎麼判斷屬於哪層的for迴圈則是看縮排
上面這 第一個 dim指的是 list 中的 list
猜猜看會輸出多少?
因為內層的 for 執行了20次count+=1
而外層的 for 執行了內層的 for 10次
所以20*10=200
那這樣是多少呢?
for 搭配 if
輸入 n
印出 n*n的正方形
ex:
input=3
output=
***
***
***
輸入 n
印出 所有小於n的質數
ex:
input=15
output=2,3,5,7,11,13
輸入 n
印出 半徑為n的圓形
you may need sqrt() and round()
whlie 通常用於我們不知道做幾次,但是知道甚麼時候該結束的事件
上面範例就是a一直平方直到a>=4096
這段程式碼則是會在k沒有輸入時停止
在執行到一半時,如果我們希望能直接跳出迴圈則使用break
break!
上面程式在k==exit時會直接跳出while loop
input 整數n ,n>0 請輸出 n 的二進位數
ex:
input:4
output:100
input:15
output:1111
舉例來說
不過這邊的運算大概是這樣
.
.
.
.
對x的操作只影響x
不影響list
.
.
.
如果對list直接操做要注意是否會影響跌代的結構
for 迴圈其實是呼叫一個迭代器
所以可以透過自訂迭代邏輯來客製化迴圈
ex:
https://leetcode.com/problems/two-sum/
https://leetcode.com/problems/add-two-numbers/
https://leetcode.com/problems/climbing-stairs/