COMP9021 Principles of Programming WEEK7 Optional

1. Default argument

如果function有多個argument,某些在定義的時候給定了default值,那么在調(diào)用的時候可以不寫這樣的argument。如下例:

def append_one_v1(L = []):
    L.append(1)
    return L

def append_one_v2(L = None):
    if L == None:
        L = []
    L.append(1)
    return L

for i in range(5):
    print(append_one_v1([0]))
    #每次都會創(chuàng)建一個新的[0],所以結果會是5個一樣的[0,1]
print()
>>>
[0, 1]
[0, 1]
[0, 1]
[0, 1]
[0, 1]

for i in range(5):
    print(append_one_v1())
    #沒有輸入?yún)?shù)的情況下,不創(chuàng)建新的list,所以每次在原list中多加入一個1
print()
>>>
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]
[1, 1, 1, 1, 1]

for i in range(5):
    print(append_one_v2([0]))
    #由于有輸入?yún)?shù),所以和v1是一致的
print()
>>>
[0, 1]
[0, 1]
[0, 1]
[0, 1]
[0, 1]

for i in range(5):
    print(append_one_v2())
    #雖然沒有輸入?yún)?shù),但是v2給了None的判斷方法,所以每次依然創(chuàng)建一個新的list
print()
>>>
[1]
[1]
[1]
[1]
[1]

2. Fibonacci review

def fibo(n, fibonacci = {0: 0, 1: 1}):
    if n not in fibonacci:
        fibonacci[n] = fibo(n - 1) + fibo(n - 2)
        #傳遞參數(shù)的時候可以不寫第二個argument,因為是default
    return fibonacci[n]

3. Exerciese (Similar to Quiz5)

一個grid由自然數(shù)構成,上下左右定義為相鄰,找到連續(xù)相鄰的1的size,以一個list形式輸出。

from random import randrange, seed

def print_grid():
    for row in grid:
        print(' '.join(str(int(e != 0)) for e in row))
            
def area_of_region_explored_from(i, j):
    area = 1
    grid[i][j] *= -1
    if j and grid[i][j - 1] > 0:
    #查詢左側有多少1
        area += area_of_region_explored_from(i, j - 1)
    if j < 9 and grid[i][j + 1] > 0:
    #查詢右側有多少1
        area += area_of_region_explored_from(i, j + 1)
    if i and grid[i - 1][j] > 0:
    #查詢上方有多少1
        area += area_of_region_explored_from(i - 1, j)
    if i < 9 and grid[i + 1][j] > 0:
    #查詢下方有多少1
        area += area_of_region_explored_from(i + 1, j)
    return area
            
seed(int(input('Input seed: ')))
density = int(input('Input density: '))
grid = [[randrange(density) for _ in range(10)] for _ in range(10)]
areas = []
for i in range(10):
    for j in range(10):
        if grid[i][j] > 0:
            areas.append(area_of_region_explored_from(i, j))

print_grid()
print(sorted(areas))
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容