CS50P 2_Loop

poetries = ["寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。", 
            "空山不見人,但聞人語響。返景入深林,復照青苔上。",
            "床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。"]

print(poetries[0])
print(poetries[1])
print(poetries[2])
寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。
空山不見人,但聞人語響。返景入深林,復照青苔上。
床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。
poetries = ["寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。", 
            "空山不見人,但聞人語響。返景入深林,復照青苔上。",
            "床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。"]

for i in range(0,3):
    print(poetries[i])
寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。
空山不見人,但聞人語響。返景入深林,復照青苔上。
床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。
poetries = ["寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。", 
            "空山不見人,但聞人語響。返景入深林,復照青苔上。",
            "床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。"]

for poetry in poetries:
    print(poetry)
寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。
空山不見人,但聞人語響。返景入深林,復照青苔上。
床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。

Loop 迴圈

重複執行某些相同的步驟

固定次數 for loop

指定條件 不固定次數 while loop

For Loop Structure

for _ in sequence:
    do repeat things
    ...

_ indicates we're not interested in the loop variable. It's a common convention when the value is ignored.

for _ in range(5):
  print("***")
***
***
***
***
***

For Loop Structure

for i in sequence:
    do repeat things
    ...

Using "i" means we are actually utilizing the loop variable within the loop.

for i in range(1, 6):
  print("*"*i)
*
**
***
****
*****

range() function

The range() function can create a sequence of integers.

range(start value, end value (excluding), increment (decrement) value)

range(end value)

range(start value, end value)

range(start value, end value, increment (decrement) value)

range() example

for i in range(10):      # 產生從0到9的整數序列
    print(i, end=" ")
print("\n=========================")
for i in range(0, 10):   # 產生從0到9的整數序列
    print(i, end=" ")
print("\n=========================")    
for i in range(1, 10, 2): # 產生從1到9的奇數序列
    print(i, end=" ")    
print("\n=========================")
for i in range(20, 0, -2): #產生從20到2的偶數序列
    print(i, end=" ")
0 1 2 3 4 5 6 7 8 9 
=========================
0 1 2 3 4 5 6 7 8 9 
=========================
1 3 5 7 9 
=========================
20 18 16 14 12 10 8 6 4 2

Nested for loop (巢狀 for-loop)

Multiple layers of for loops.

for i in sequece:
    do repeat things
    for j in sequece:
        do repeat things
...    

For each iteration of the outer loop i,
the inner loop j executes the entire loop.

Multiplication Table of 9

for i in range(1, 10):
    print(f" i = {i}", end = ' ')
    for j in range(1, 10):
        if j == 9:
            print(f"{i*j:5}") # j == 9時,換行
        else:
            print(f"{i*j:5}", end = '') # j < 9時,不換行
i = 1     1    2    3    4    5    6    7    8    9
i = 2     2    4    6    8   10   12   14   16   18
i = 3     3    6    9   12   15   18   21   24   27
i = 4     4    8   12   16   20   24   28   32   36
i = 5     5   10   15   20   25   30   35   40   45
i = 6     6   12   18   24   30   36   42   48   54
i = 7     7   14   21   28   35   42   49   56   63
i = 8     8   16   24   32   40   48   56   64   72
i = 9     9   18   27   36   45   54   63   72   81

break 和 continue

強制中斷的方式來結束迴圈

break:

中斷迴圈的執行並跳脫迴圈結構,繼續執行迴圈外的敘述。

continue:

不會讓迴圈結束;只跳過迴圈內 continue 後面的剩餘敘述,接著繼續執行下一次的迴圈運作。

break

for i in sequence:
    # statements inside for-loop
    if condition:
        break  # Exit the loop
    # statements inside for-loop (after the break)
# statements outside for-loop


for i in "Hey Jude":
    if i == "u":
        break
    print(i, end = "")
Hey J

break

Continue

for i in sequence:
    # statements inside for-loop
    if condition:
        continue  # Skip the rest of this iteration and
                  # jump to the next iteration
    # statements inside for-loop (after the continue)
# statements outside for-loop


for i in "Hey Jude":
    if i == "u":
        continue
    print(i, end = "")
Hey Jde

Continue

while loops

無法預知迴圈數 直到出現指定的特殊狀況時才停止

當 ... 的時候 直到 ...

while condition:
    do condition True things

while loop check 成績

score = int(input("輸入學生成績:"))

while score < 0 or score > 100:
    score = int(input("成績錯誤,請重新輸入:"))

print("學生成績 : ", score)    
    
輸入學生成績: -120
成績錯誤,請重新輸入: 120
成績錯誤,請重新輸入: 50
學生成績 :  50

無窮迴圈

一直持續下去的循環

while True:
    do something
while True:
    print('How is your day?')
    your_reply = input()
    if your_reply == 'quit':
        break
print('good bye')

while loop check username & password

while True:
    print('Account name:')
    name = input()
    if name != 'success':
        continue
    print('Password, please:')
    password = input()
    if password == 'selflearning':
        break
print('Welcome to Self Learning Success!')

For loop Access Dictionary

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for key in knights:
  print(f" key: {key}")
 key: gallahad
 key: robin

For loop Access Dictionary

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for key in knights:
    print(f"key: {key}\nknights{[key]} : {knights[key]}")
key: gallahad
knights['gallahad'] : the pure
key: robin
knights['robin'] : the brave

For loop Access Dictionary

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
    print(f"knights[{k}] : {v}")
knights[gallahad] : the pure
knights[robin] : the brave

enumerate() function

s = ['tic', 'tac', 'toe']
print(f"list is {s}\n")
for i, v in enumerate(s):
    print(f"index i = {i}, value v = {v}")
list is ['tic', 'tac', 'toe']

index i = 0, value v = tic
index i = 1, value v = tac
index i = 2, value v = toe

CS50P 2_Loop

By wschen

CS50P 2_Loop

This presentation covers topics such as loops, the range() function, nested for loops, break and continue statements, while loops, and accessing dictionaries with for loops. Discover how these concepts can enhance your programming skills and make your code more efficient.

  • 140