REVIEWS

回想一下...

  • 串列 (list)
  • 條件式 (if...else)
  • 迴圈 (while / for)

Exercise (1)

有一個 [0, -2, 5, 9, 7] 的串列 :

1. 請依序印出所有的元素

2. 請輸出所有元素的和

#---題目---------------------
myList = [0, -2, 5, 9, 7]
#----------------------------

sum = 0

for myValue in myList:
    sum += myValue
    print(myValue)

print('the sum is %d.'%(sum))

Exercise (2)

<< 邏輯經典題: 3n+1 problem >>

請依循下列規則:

  1. 輸入數字n
  2. 如果n是奇數,就讓n=3n+1
  3. 如果n是偶數,就讓n=n/2
  4. 重複做步驟(1)和(2),直到n=1

...請你輸出整個過程!

n = int(input('please give a number N: '))

while n > 1:         #如果n不是1就繼續執行
    print(n)

    if n%2 == 0:     #是偶數的話
        n /= 2
    else:            #是奇數的話
        n = n*3 + 1
else:
    print(n)         #最後還有一個'1'要印出來

SORT

 I have a 串列 with 數字 ~

 I have a 比大小條件式 ~

if myList[0] > myList[1]:
    ...

條件式

myList

 I have 迴圈s ~

for first in range(5):
    for second in range(first, 5):
        ...
if myList[first] > myList[second]:
    ...

myList

迴圈

條件式

MAGIC!

- 劉謙             

等等,為什麼是 "迴圈s"?

for first in range(5):
    for second in range(first, 5):
        ...
myList = [2,5,1,3,4]

for first in range(5):
    for second in range(first, 5):
        if myList[first] > myList[second]:
            
            #如果第一個數字大於第二個數字
            #就把他們兩個交換

print(myList)
myList = [2,5,1,3,4]

for first in range(5):
    for second in range(5):
        if myList[first] > myList[second]:

            temp = myList[first]
            myList[first] = myList[second]
            myList[second] = temp

print(myList)
def bubble_sort(L):
    for first in range(len(L)):
        for second in range(first, len(L)):
            if L[first] > L[second]:
                L[first], L[second] = L[second], L[first] 
    return L

#---------------------------------------------------------

myList = [2,5,1,3,4]

myList = bubble_sort(myList)

print(myList)

Exercise

請用函式的方式

做一個把名字(字串)長度從大排到小的程式

names = ['名字真的很長而且有三個字的張盛閎', 'Philip Wang', '什麼都很長的織田信長', '蔡承諺']

範例資料:

def bubble_sort(L):
    for first in range(len(L)):
        for second in range(first, len(L)):
            if len(L[first]) < len(L[second]):
                L[first], L[second] = L[second], L[first] 
    return L

#---------------------------------------------------------

names = ['名字真的很長而且有三個字的張盛閎', 'Philip Wang', '什麼都很長的織田信長', '蔡承諺']

names = bubble_sort(names)

print(names)



遞迴

recursive

安眠藥、麵包、夢中夢

哇塞好像輕小說的書名喔好宅喔

def eat_bread(breads):
    breads -= 1
    print('%d left.'%(breads))
    if(breads > 0)
        eat_bread(breads)

eat_bread(10)


    
def f(n):
    while n < 10:
        n += 1
    return n

print(f(0))
def f(n):
    if n < 10:
        return f(n) + 1
    else:
        return n

print(f(0))

等同於

試試看寫一個階乘函式吧!

挑戰: 費波纳契數列 - 遞迴版

CS+X python 工作坊 - day2

By Philip Wang

CS+X python 工作坊 - day2

  • 337