基本上一個比較複雜程式一定要有迴圈才能運作,
也就是說學到這裡算是比較進階的部分了,
因此我希望各位能吸收儘量吸收,
如果不懂的可以等到過幾個月後再回來看。
while
迴圈 是 Python
裡面最基本的迴圈,
寫起來最簡單,
但比起 for
迴圈更容易出現無限迴圈。
while [Boolean]: ...
while True: print(input())
一直輸出輸入進來的東西
i, s = 1, 0 while i <= 10: s += i i += 1 print(s) # 55
計算 \(1\) 到 \(10\) 的總和
ar = ['John', 'Tree', 'Han'] i = 0 while i < len(ar): print(ar[i]) i += 1
輸出 ar
裡面的所有元素
break
和 continue
都是 Python
裡的語法,
功能分別是跳脫迴圈和進行下一次的迴圈
while True: n = int(input()) if n%2 == 0: print('{} is even'.format(n)) break else: if n == 1: continue print('{} is odd'.format(n))
在上面的程式碼中,
如果輸入 \(2\) 則會輸出 "2 is even",並跳脫迴圈。
如果輸入 \(3\) 則會輸出 "3 is odd"。
如果輸入 \(1\) 則什麼都不會執行,因為在第 \(8\) 行的 continue
,所以會直接進行下一次的迴圈。
參考解答
def main(): w, c, d, ans = 0, 0, 0, 0 c, w = map(int, input().strip().split()) while True: cnt = c//12 cnt = min(cnt, w) c -= cnt * 12 d += cnt w -= cnt c += cnt while c < 12 and w > 1 : c += 1 w -= 1 ans += cnt c += d d = 0 if c < 12 or w <= 0: break print(ans) if __name__ == '__main__': main()
for
迴圈是所有迴圈裡最不容易出錯的,
因為他的開始和結束都已經規定好了,
除非一開始就放錯,
不然很難出現無限迴圈。
for [Variables] in [Iterable Object]: ...
通常放入 Iterable Object
的是 range
、list
、tuple
、map
、set
iterable
的意思是可迭代的。
而迭代的意思是以指針的方式代表資料結構裡的每一個元素,
通常用於遍歷整個資料結構。
而 iterable object
的意思就是可迭代的物件。
range
是 python
專門用來迭代的物件,
宣告方式如以下
range([Begin], [End], [Step])
上面程式碼的意思是,
宣告一個 range
,
並且迭代時會從數字Begin開始,
直到End結束 (不包含End),
且每迭代一次,
所迭代的數字會加上Step。
range
在只放入一項引數時會判定為End,
放入兩項時會判定為Begin、End。
enumerate
也是一個好用的迭代物件,
但因為比較複雜,
也沒有一定要學會,
所以這裡先不講。
for i in range(10): print(input())
輸入 \(10\) 次,並且每次都輸出輸入的東西
s = 0 for i in range(1, 11): s += i print(s) # 55
計算 \(1\) 到 \(10\) 的總和
ar = ['John', 'Tree', 'Han'] for i in ar: print(i)
輸出 ar
裡面的所有元素
for
迴圈也有 break
和 continue
旦旦解題農場-a028: 文文的求婚–續集 (Case 版)
參考解答
def main(): T = int(input()) ans = ['a normal year', 'a leap year'] for case in range(T): y = int(input()) print('Case {}: {}'.format(case+1, ans[y%400==0 or y%4==0 and y%100!=0])) if __name__ == '__main__': main()
參考解答
def main(): try: while True: n = int(input()) for i in range(1, n+1): for i in range(i): print('%', end='') print() except EOFError: return if __name__ == '__main__': main()
程式裡的函數跟數學中的函數有一點不太一樣,
數學中的函數限制較多,
程式中的函數限制較少,
在 Python
中更是如此。
def [Function Name]([Arguments]): ...
print(input())
上面的程式碼是用來輸出輸入的東西。
print()
是一個內建的函數,用於輸出。
input()
也是內建函數,用於輸入。
他們分別都有各自的引數,
但只有 input()
有回傳,
在數學上可理解為函數值,
print()
則沒有。
ar = [i for i in range(1, 11)] print(sum(ar)) # 55
在上面的程式碼中,
有 sum()
這個內建函數,
可以看到他以 ar
為參數帶入 sum()
的引數,
並且回傳 ar
裡面所有元素的和。