iT邦幫忙

0

[D-353]Python 7/100天_練習6

  • 分享至 

  • xImage
  •  

==今天的課題
課本:https://reurl.cc/ROvEv6
练习6:打印杨辉三角。
起手式餵狗https://tinyurl.com/2fumwa3m
想法:
寫一個for迴圈,印一個[1]的串列,每次印都會append一個1
像這樣

str1=[1]
for i in range(1,20,2):
    str1.append(1)
    print(str(str1).center(50," "))

或insert?

str1=[1]
for i in range(1,10,1):
    str1.insert(-1,i)
    print(str(str1).center(50," "))

發現問題
1.列表會自己變長,導致index out of range
2.每一項的規律要相同
==凌晨五點,想code想到睡不著
還真沒想過自己的人生有一天會為了這種事失眠
總之我想到一些規律
其一
y[1]=x[0]+x[1]
y[2]=x[1]+x[2]
y[i]=x[i-1]+x[i]
x為前一個list,要實現這個大概要用兩個for包在一起,像99乘法表那樣
其二 如果要用前面這個規律做insert,或許要複製舊的串列,運算之後再印出
也許可以利用「list切片之後會形成一個新的複製」這個特性來製作下一列

list1=[]
list2=[]
for i in range(8):
    if i <2:
        list1.append(1)
        print(list1)
    else:
        list2=list1
        list2.append(1)
        for j in range(1,len(list2)-1):
            list2[j]=list1[j-1]+list1[j]
            print(list2)

這幾天運用工作休息的30分鐘慢慢寫,終於給我寫到這樣,只差一哩路了
現在的問題卡在:list2在做運算的時候會連list1一起變動,不符合我原先希望的1,2分開
試了一下可能是對於a=b的理解有點問題
簡單來說我卡在這個概念:

list1=[]
list2=[]
for i in range(8):
    if i <2:
        list1.append(1)
        print(list1)
    else:
        list2= list1[:]
        list2+=[1]
        for j in range(1,len(list2)-1):
            list2[j]=list1[j-1]+list1[j]
            print(list2)
#問題:卡在深淺複製的問題走不出來

看答案時間

def main():
    num = int(input('Number of rows: '))#讓使用者決定列數
    yh = [[]] * num#初始化list([[]]長度為1)
    for row in range(len(yh)):#決定每一列中會有相應個欄位
        yh[row] = [None] * (row + 1)#因為row會被len(yh)-1所以要加回來
        for col in range(len(yh[row])):
            if col == 0 or col == row:
                yh[row][col] = 1
            else:
                yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
            print(yh[row][col], end='\t')
        print()


if __name__ == '__main__':
    main()

檢討:
這次是第二次主動認輸,跟第一次的差別在於這次沒有被降緯打擊的感覺,我想是因為程式碼都比較能看懂,比較可惜的就是原本在規劃問題的時候其實有想到用list1[][]的方向來做這題,但是一直覺得不太可能所以後來就往b[]=a[]+a[]的方向去做
另外一個不舒服的地方就是這次又想太久了,可惜浪費掉的時間
中間甚至一度產生了放棄的念頭,但回頭看看自己寫了多少東西,就覺得還是可以再試一下,畢竟就是學新東西,挫折難免嘛

額外學到的小撇步:
1.建立[[]]時長度為1


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言