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 >>
請依循下列規則:
- 輸入數字n
- 如果n是奇數,就讓n=3n+1
- 如果n是偶數,就讓n=n/2
- 重複做步驟(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