Python 流程控制:迴圈基礎,while 迴圈、for 迴圈 By 彭彭

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ธ.ค. 2024

ความคิดเห็น • 499

  • @葉培民
    @葉培民 4 ปีที่แล้ว +18

    謝謝 彭彭老師!! 現在自學python 一直對sum code 有疑惑 您的影片 整個讓我了解清楚了!!!! 超感謝!!! 謝謝你讓我在自學路上 減輕困難!! 我會繼續努力!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      加油哦,看到你的心路分享我覺得很棒 :) 我也會一起努力的 !

    • @林泓諺-l4l
      @林泓諺-l4l 9 หลายเดือนก่อน

      彭彭老師是不是很值得一座諾貝爾和平獎

  • @姚字丞
    @姚字丞 2 ปีที่แล้ว +4

    作者影片的導引對新手的觀念建立很有效,簡報簡單扼要,讓學習者目光能馬上投注在大大的簡報內容上。
    謝謝作者的製作。

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      不會,謝謝你的回饋 :)

  • @小郑中午
    @小郑中午 4 ปีที่แล้ว +3

    非常感谢 彭彭得课程。原来大学得时候学过编程,不过早就着饭吃了。彭彭得一点点循序渐进得教程,让我这个小白又重拾信心。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      谢谢回馈,很高兴对你有帮助 :)

  • @aapplefish
    @aapplefish 4 ปีที่แล้ว +16

    while 布林值:
    若布林值為True, 執行命令
    回到上方,做下一次的回圈判斷
    # 直到布林值為false才會離開迴圈
    n = 1
    while n < 5:
    print("變數n的資料是:", n)
    n+=1
    for 變數名稱 in 列表或字串:
    將列表中的項目或字串中的字元
    逐一取出、逐一處理
    for x in [4,1,2]:
    print("逐一取得列表中的資料", x)
    for c in "Hello":
    print("逐一取得字串中的字元", c)
    # 製造出連續數字的列表
    for 變數名稱 in range(3):
    相當於
    for 變數名稱 in [0,1,2]:
    # 包含開頭不包含結束
    for 變數名稱 in range(3,6):
    相當於
    for 變數名稱 in [3,4,5]:
    # while迴圈
    # 這個不要執行,是無限迴圈,電腦會當機=..=
    n = 1
    while True:
    print(n)
    n+=1
    n = 1
    while n>> 1
    >>> 2
    >>> 3
    # 1+2+3+...+10
    n = 1
    sum = 0
    while n >> 3
    >>> 5
    >>> 1
    for x in "Hello":
    print(x)
    >>> H
    >>> e
    >>> l
    >>> l
    >>> o
    for x in range(5):
    print(x)
    >>> 0
    >>> 1
    >>> 2
    >>> 3
    >>> 4
    for x in range(5,10):
    print(x)
    >>> 5
    >>> 6
    >>> 7
    >>> 8
    >>> 9
    # 1+2+3...+10
    for x in range(1,11):
    sum = sum + x
    print(sum)

  • @世事無常-v6l
    @世事無常-v6l 4 ปีที่แล้ว +7

    看了很多留言都說老師的教學淺顯易懂 像我這樣的新手能遇上大師真的太有榮幸了 我會繼續練習 往更深的程式知識邁進😃

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      哈哈哈,謝謝你的回饋哪 :) 加油加油 ~~~~

  • @MRniceWinner
    @MRniceWinner 4 ปีที่แล้ว +6

    老師想問題外話
    無限迴圈跑的速度
    是取決於電腦效能然後用最高速度運行嘛?
    看老師程式大概是每秒列印1萬個數值
    順帶一提看其他人留言中間突然覺得sum變難
    是因為老師把print(sum)寫到了"""外面"""
    11:37老師有說大家要注意這個縮排喔
    呼應影片開頭也有說while在布林值true以前都不會出來那也就不會把print(sum)印出來
    覺得疑惑的人建議可以把print(sum)放到裡面
    就會跑出
    1
    3
    6
    10
    15
    21
    28
    36
    45
    55(註:這時候n布林值到達10所以跳出這組while,如果你把print(sum)寫外面那就會像影片一樣印出55)
    就可以看到每次的計算過程

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      對哦,取決於電腦效能和當前的運作狀況,以最快速度運行。也謝謝你的分享,並協助提醒大家,相信對大家都很有幫助 :)

  • @土牛哥
    @土牛哥 4 ปีที่แล้ว +2

    讲得真的很不错,说实在的,我是完全从零开始学,都能大致弄明白,当然有的地方可能当时不太清楚,但是下来仔细想想也还能弄清楚 。谢谢老师!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      谢谢你的回馈,很高兴对你有帮助 :)

  • @mozent
    @mozent 6 ปีที่แล้ว +25

    教學的非常有品質 讚!

  • @oM-zf6jn
    @oM-zf6jn 4 ปีที่แล้ว +9

    謝謝老師的無私分享~
    如果每堂課最後都有出練習題就更好了XDDDD

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +5

      謝謝你的回饋和建議,不過每堂課出練習這事大概有點困難 XDDD

  • @莊伶萱
    @莊伶萱 ปีที่แล้ว

    感謝老師,自學python的路上有您真好!

    • @吳冠霖-y1z
      @吳冠霖-y1z ปีที่แล้ว +1

      我也是欸在學校聽還是有點不懂

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      謝謝回饋,一起加油嘍 :)

  • @ednaho5536
    @ednaho5536 6 ปีที่แล้ว +3

    感謝彭彭老師的無私教學🙏🏻🙏🏻

  • @15gtu43edd
    @15gtu43edd 4 ปีที่แล้ว +3

    謝謝老師清楚的教學!好喜歡這種短短的教學影片

  • @aaron1262
    @aaron1262 3 ปีที่แล้ว +1

    謝謝彭彭老師,很完整的新手入門課程,目前花了10個小時在打底前八章,慢工出細活,感謝。學完基礎之後,付費版有需要的話會再支持!

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      謝謝你的回饋,有幫上你的忙我覺得很棒 :)

  • @syuanboyo2575
    @syuanboyo2575 5 ปีที่แล้ว +3

    謝謝老師,這部影片對我幫助很大。

  • @ashalon8012
    @ashalon8012 4 ปีที่แล้ว

    非常感恩,這教學超級詳細的,每次卡在這就想放棄,還好有老師解答。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      很高興對你有幫助呦 ~~~~

  • @kama5544
    @kama5544 5 ปีที่แล้ว +1

    概念講的很詳細,尤其資料怎麼跑怎麼給的觀念都有提到.幫助很大,謝謝彭老師!

  • @jiahung7281
    @jiahung7281 2 ปีที่แล้ว +10

    00:00介紹
    while迴圈:
    00:16基本語法
    while 布林值:
    ▏ 若布林值為True,執行命令
    ▏ 回到上方,做下一次的迴圈判斷
    01:51程式示範
    n=1
    while n

  • @leestella3336
    @leestella3336 3 ปีที่แล้ว +1

    感謝你~講得非常清楚~初學者都可以輕鬆學習

  • @520taiwan
    @520taiwan 6 ปีที่แล้ว +9

    請問彭彭老師
    一開始的sum=0 是指 有一個SUM變數=0的意思嘛!?
    還是指 SUM從0開始加?
    而迴圈裏面
    sum=sum+n 我懂N=0.1.2.3.4.5.....
    者裡面的SUM 又是甚麼意思呢!?
    搞得我好混亂啊!?
    先感謝老師的解答

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +17

      去除實際的情境,只談語法。sum=0 是指有一個 sum 變數,資料是 0。
      把實際的情境加進來,為什麼要把 sum 的資料設定成 0,因為要讓他從 0 開始累加。
      所以兩種說法都沒問題,只是有沒有把實際的情境講出來。
      意思是把 sum 變數中的資料拿出來,加上 n 變數中的資料,再覆蓋回 sum 變數裡面。
      你可以回頭複習一下關於資料和變數的操作細節,應該會有點幫助 :)

    • @520taiwan
      @520taiwan 6 ปีที่แล้ว

      @@cwpeng-course 謝謝老師 :) 真的感謝 我懂了

  • @juliajulia3334
    @juliajulia3334 2 ปีที่แล้ว

    抱歉四年後的現在才來問問題,因為最近才開始學寫程式~發現這個很詳細的好頻道真的是太感激了~
    這邊想請教,如果把sum = sum + n 和 n += 1順序交換,變成:
    n += 1
    sum = sum + n的話,
    結果會變成65,因為我不懂為什麼,所以用最笨的方式一條一條列出來將數值代入,為節省時間,我把程式改為while n

    • @baga487
      @baga487 2 ปีที่แล้ว

      應該是因為程式語言是一行一行執行的
      在第五步時while迴圈已經先判斷n是否大於等於5,而因為n剛好為5所以再繼續執行n += 1的步驟及後續sum = sum + n,所以會導致最後的sum = 20

    • @juliajulia3334
      @juliajulia3334 2 ปีที่แล้ว

      @@baga487 但是第五步 n += 1的時候已經是 6 = 5+1了耶,不是應該以運算後的sum(6)為準嗎?所以在這個部分n=6,大於5,不是在這邊就會跳出迴圈嗎? sum=20的話便是帶入了n=6
      不過謝謝你回答~~~本來以為好多年前的影片可能不會有人理我~謝謝你~

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      感謝 @ting wei 的說明 :)
      回圈內的程式要執行完畢,回到迴圈上方重新判斷,才有機會跳出去。

    • @juliajulia3334
      @juliajulia3334 2 ปีที่แล้ว +2

      謝謝老師,謝謝@ting wei ❤️

  • @a5258832
    @a5258832 4 ปีที่แล้ว +1

    自學者在此感恩彭彭老師

  • @天空之城-z3v
    @天空之城-z3v 3 ปีที่แล้ว +4

    老師您好:
    想請問課程上舉例的while
    當print變成內部縮排的話,該怎麼去理解這段程式的意思呢?
    是否變成:每個a都加一後,都要再印出上一個迴圈留下的sum,然後print出每一次的結果嗎?
    另外,如何知道什麼情況下print需要縮牌或不需要呢?
    謝謝老師解答

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +9

      print 縮排,意思就是放在迴圈裡面,每一圈都會印出東西。不縮排就是在外面,會等迴圈都跑完了才印出東西 ~

    • @天空之城-z3v
      @天空之城-z3v 3 ปีที่แล้ว +2

      彭彭的課程 謝謝老師的解答 很清楚~

  • @這一群三國咖
    @這一群三國咖 5 ปีที่แล้ว +24

    n=1
    sum=0
    while n

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      沒問題哦,很棒的分析 :)

  • @katykaty9410
    @katykaty9410 ปีที่แล้ว +2

    感謝老師幫助我考試🤓

  • @鄭坤-v1x
    @鄭坤-v1x 5 ปีที่แล้ว

    感謝彭彭老師的教學.........非常 清晰 明白

  • @李督禮
    @李督禮 4 ปีที่แล้ว +1

    感謝老師! 每天都多學一點!

  • @lily-f3n2i
    @lily-f3n2i 8 หลายเดือนก่อน +1

    謝謝老師,獲益良多

    • @cwpeng-course
      @cwpeng-course  5 หลายเดือนก่อน

      不客氣,謝謝回饋 :)

  • @hsinnanlai6969
    @hsinnanlai6969 4 ปีที่แล้ว +3

    彭彭老師您好:
    學list-tuple.py列表的時候有提到 [0:2] 表示列表的資料包含數字1,2不包含第三是用:符號, 為什麼range的是(5,10)用逗號呢?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      他們是不同的語法,沒有關聯性,所以只是個規矩。
      [0:2] 是取得列表中的一部分,range(5,10) 是後面接著會提到的函式中的參數 ~

    • @hsinnanlai6969
      @hsinnanlai6969 4 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師解答

  • @amychiu8807
    @amychiu8807 5 ปีที่แล้ว +2

    # while 迴圈
    # 無窮迴圈(不建議) 直接寫一個布林值
    '''
    n=1
    while True:
    print(n)
    n+=1
    '''
    # 1+2+3+...+10 等差級數加法
    # 注意縮排!迴圈只在縮排裡面打轉
    n=1
    sum=0 # 紀錄累加的結果
    while n

  • @肥狗二號
    @肥狗二號 6 ปีที่แล้ว +7

    十分感謝,自己買書來看比不上老師的教導?請問老師台大開課Python也是同樣的內容嗎

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +4

      謝謝你的回饋 :)
      不過我沒有在台大開課 Python 哦 XD

  • @ddhe4344
    @ddhe4344 6 ปีที่แล้ว +1

    深入浅出,恰到好处。感谢!!

  • @ls-bencavi-625
    @ls-bencavi-625 4 ปีที่แล้ว

    彭彭老师您好,我寫了一個代碼如下:
    a = ["2t32","2t30","3t30","4T90","4T40"]
    b = a
    i = 0
    c = str(a)
    #自定義一個函數,其實是把各項求平方:
    def bb(x):
    b = int(x[0:1])
    c = b*b
    return c
    #然後,註意哦,while函數開始了
    while i < len(a):
    b[i] = bb(a[i])
    i+=1
    開始跑機
    print(a) 得到 [4, 4, 9, 16, 16]
    print(b) 得到 [4, 4, 9, 16, 16]
    print(c) 得到 ['2t32', '2t30', '3t30', '4T90', '4T40']
    在這裏,print(a)
    得到 [4, 4, 9, 16, 16]
    而不是 ['2t32', '2t30', '3t30', '4T90', '4T40']
    為什麽參數a輸出結果會和參數b一樣?
    我的語法認知裏,while函數得到的結果應該是b的各項變成了a的平方,而a是不變的。
    可是系統給我的答案是,隨著while循環,a也跟著b一起變了,求教?thanks

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      b=a 這個命令不會真實的複製列表中的資料,而是把同一個列表的參考位址指定給 b 這個變數,所以後續的操作,更新 b 列表中的資料,其實就會直接影響 a 的資料 ( 因為根本是同一個 )

    • @ls-bencavi-625
      @ls-bencavi-625 4 ปีที่แล้ว

      @@cwpeng-course thanks!

  • @吳丞岳
    @吳丞岳 2 ปีที่แล้ว

    彭彭老師您好,最近看您的影片自學,受益良多。對影片5:52的範例有個小問題,for 變數 in range(3)相當於for 變數 in [0,1,2],我試著輸入for 變數 in (0,1,2)也可以順利得到一樣的結果。老師在第二堂課有提到他們分別是可動列表(List)與固定列表(Tuple),想請問在這裡是可通用的嗎,還是意義上有所不同?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      雖然 List 和 Tuple 有細節的差異,但在 for 迴圈這裡是可通用的。

  • @LostAngel175
    @LostAngel175 3 ปีที่แล้ว

    謝謝彭彭老師優質教學

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      不客氣哦,謝謝你的回饋 :)

  • @HuoShengChiou
    @HuoShengChiou 5 ปีที่แล้ว +3

    12:42 所以 開始執行while迴圈之後, 就不會再往上看 sum=0 的部分, 繼續由while往下走 對嗎?

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      是的。

    • @tinachen8663
      @tinachen8663 4 ปีที่แล้ว

      @@cwpeng-course
      老師您好,
      我想釐清一下我的想法,
      1.我認為在開始執行 while迴圈之後,還是會往上看到sum,只是這時候的sum已經變成sum+n 了
      2.我認為在開始執行for迴圈之後,就不會在往上看到sum=0
      #while 迴圈
      每執行一次while迴圈後,就會再回到前面檢視是否符合while的條件,直到不符合-->結束,離開迴圈
      #for 迴圈
      直到for裡面的範圍執行完,才會離開迴圏
      請問老師,我的邏輯正確嗎?

    • @kevin2622655
      @kevin2622655 4 ปีที่แล้ว

      @@tinachen8663 如果你while的 "往上看到sum" 是指sum=0 的話,那就不是 sum不會重複宣告sum=0

  • @黃俊仁-q8q
    @黃俊仁-q8q 9 หลายเดือนก่อน +2

    謝謝🙏

  • @江蘭君-f5u
    @江蘭君-f5u 6 ปีที่แล้ว +3

    老師您好:
    我不太懂在while迴圈底下
    sum=sum+n
    n+=1
    這樣為什麼可以累加?
    如果可以的話能告訴我這一串到底在幹嘛嗎QQ始終想不出來QQ
    total=n=0
    while(n

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +24

      一行指令一行指令按照流程去想,初學的話可以寫出來,但不要跳著想:
      n 一開始是 0,total 也是 0,接著進入迴圈。
      第一圈:n < 10 是 True,執行迴圈中第一行 n+=1,n 變成 1。執行第二行,把 1 加入 total 裡面。
      第二圈:n < 10 是 True,執行迴圈中第一行 n+=1,n 變成 2。執行第二行,把 2 加入 total 裡面。
      接著第三圈 .... 第四圈 .... 一直到第十圈為止 (n < 10 變 False)
      最後就會把 1+2+...+10 都加進 total 裡面,完成運算。

  • @easonpeng5229
    @easonpeng5229 6 ปีที่แล้ว +2

    對於我這個新手,非常好上手
    很有幫助

    • @easonpeng5229
      @easonpeng5229 6 ปีที่แล้ว

      while n

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +2

      試試看以下程式碼,把數字一個一個接到列表後方:
      k=[]
      n=0
      while n

  • @陳佳良-k3o
    @陳佳良-k3o 3 ปีที่แล้ว +1

    你好
    i=1
    while i

    • @Duck-f4s
      @Duck-f4s 3 ปีที่แล้ว

      你好,因為print(i)在程式的最下方,您的條件是

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      感謝 @王帷守 的說明,非常清楚 :)

  • @annhsu6918
    @annhsu6918 3 ปีที่แล้ว +1

    老師您好 可否請問若寫成 for x in range(1,11):
    x += x
    會變成 2 4 6 8 10 12 14 16 18 20 請問是因為甚麼原因呢?

    • @robertlee5734
      @robertlee5734 3 ปีที่แล้ว +1

      應該是因為
      x += x 是 x=x+x的意思
      x in range(1,11) 使x為[1,2,3,....,10]的列表
      因此輸出會變成
      1+1,2+2,3+3,....,10+10
      =2 4 6 8 10 ... 20
      by從第一部"Python 入門教學課程"影片開始看的me
      感謝老師!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +2

      感謝 @Robert Lee 的說明,非常清楚 :)

  • @王威智-v4o
    @王威智-v4o 4 ปีที่แล้ว +9

    可以一次選取要註解的範圍,然後按ctrl+?,就會全部註解你選取的範圍了

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      感謝你的分享哦 :)

    • @joylin2126
      @joylin2126 3 ปีที่แล้ว

      感謝分享😊

    • @JerryX9527
      @JerryX9527 2 ปีที่แล้ว

      Mac是"command+?"

  • @Chenlin1997
    @Chenlin1997 4 ปีที่แล้ว

    謝謝老師的無私分享

  • @chaka8645
    @chaka8645 6 หลายเดือนก่อน +2

    for x in ["升職","加薪","當上總經理","出任CEO","迎娶白富美","走向人生巔峰"]:
    print("認真工作",x)
    好玩XD

  • @sunnychan9321
    @sunnychan9321 4 ปีที่แล้ว +1

    老師你好,請問 n+=1 是代表什麼意思?
    搞不懂喔 ! n+=2 運出來的很奇怪,看不出關係。
    可不可以用while來作解答?
    先感謝老師回答 !

    • @sunnychan9321
      @sunnychan9321 4 ปีที่แล้ว

      因為我用 1+2+3+...+10這個例子裡試,n+=1 得出來是55 ; n+=2得出來卻是25

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +3

      n+=1 就是把 n 的數字加一,n+=2 就是加二。
      使用 n+=2 相當於是計算 1+3+5+7+9 的結果 ~

    • @sunnychan9321
      @sunnychan9321 4 ปีที่แล้ว +1

      @@cwpeng-course 感謝老師 明白了

  • @easonyang3105
    @easonyang3105 5 ปีที่แล้ว +2

    您好,請問為什麼要寫sum=0?
    這邊的sum應該只是一個變數(跟x有點類似),跟excel中"sum代表公式: 加總"無關吧

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +10

      跟 excel 中的無關。
      我們會先把這個變數中的資料設定成 0,才能夠繼續累加。如果沒有設定,資料會是 undefined,做累加時會出錯。

  • @MarcusKwok-j1w
    @MarcusKwok-j1w 3 ปีที่แล้ว

    老師好,有一個關於LOOP的問題想請教一下,CODE如下:
    x = 1
    while x

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      簡單來說,Python 的 Global、Local 只看函式這個結構 ( Function Scope ),迴圈不會產生獨立的名稱空間,所以在迴圈裡面其實就是直接使用 Global 的變數了。

    • @MarcusKwok-j1w
      @MarcusKwok-j1w 3 ปีที่แล้ว +1

      感謝老師!

  • @laihsinhui
    @laihsinhui 4 ปีที่แล้ว +1

    老師您好,在這個程式中,為什麼print(n) 要在n+=1前一行,而兩行對調為什麼會印出不同結果?
    n=1
    while n

    • @kill13790
      @kill13790 4 ปีที่แล้ว +1

      若是按照你的程式碼會得出1,2,3,4,是因為先print出n才做n+1,而不是老師原本寫的n+1完再print出n。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      感謝 @阿飛 的回應,確實是如此哦,程式按照順序執行,順序不同會有些差異的 ~

  • @吳家華-y3h
    @吳家華-y3h 3 ปีที่แล้ว

    老師好,請教一個問題:
    data=[1,2,3,4,5]
    x=len(data)
    for i in range(x):
    if data[i] % 2 == 0:
    print(data[i])
    測試結果符合預期將2,4 列印出來,但我想將串列中的偶數去除,只剩下奇數部分,便將for 回圈內的判斷式下加入data.pop(i)的指令,將偶數從串列中取出。但在執行時卻產生Index Error:list index out of range 的錯誤訊息。我想是將串列中的索引指標移除產生的後遺症,所以我就又在迴圈內重新計算一次data串列的長度值,下了x=len(data)的指令, 想說在符合if判斷條件下移除掉偶數後,重新給變數x新的串列長度值,應該就可以避免上述的錯誤訊息,但~~~~~~結果還是Index Error:list index out of range!!!! 天哪!!!! 怎麼會這樣呢 ? 拜託老師,可以幫我看看嗎? 我覺得這個將串列中的元素移除的動作非常重要,因為寫程式時,就是資料的讀取,寫入與刪除等動作一直在重複,我的教科書上給我的說明是利用pop指令可將串列中索引值的元素取出並刪除。但我為何在執行時卻產生錯誤訊息呢? 麻煩老師有空時幫我解惑,感謝!!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      你可以先複製一份列表,利用複製的列表來寫迴圈,刪除時用 remove(資料) 的方法來刪除原來列表中的資料,就不會影響迴圈的運作,例如:
      data=[1,2,3,4,5]
      copyData=data.copy()
      x=len(copyData)
      for i in range(x):
      if copyData[i] % 2 == 0:
      data.remove(copyData[i])
      print(data)

    • @吳家華-y3h
      @吳家華-y3h 3 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師,好奇地將你的程式碼稍稍做個變動,如下:
      data=[1,2,3,4,5]
      copyData=data.copy()
      x=len(copyData)
      for i in range(x):
      if copyData[i] % 2 == 0:
      data.remove(copyData[i])
      print("i",i)
      #data.pop(i)
      print("copydata",copyData)
      print("data",data)
      然後執行remove,和 pop 兩種指令的結果,並將 索引指標 i 也列印出來,然後發現
      兩種指令的不同之處,我發現用pop 雖然不會再產生 index out of range的錯誤訊息,但結果卻是不對的,最終程式是列印出[1,3,4] ,因為第一次刪除偶數2後,串列的長度有所變動了,所以在執行下一個偶數判斷並且刪除動作時,會將5 給刪除掉,就產生了錯誤的結果。 嗯~~~~老師的方法很有用,記起來,可以運用到別的地方。謝謝!!

  • @vic9628
    @vic9628 2 ปีที่แล้ว

    淺顯易懂清楚,教學內容很棒,希望有Django的教學,我一定會加入會員!

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      謝謝回饋,好的,也謝謝你的建議 :)

  • @jian-zhenwu6553
    @jian-zhenwu6553 5 ปีที่แล้ว

    老師你好請問一下
    我有一個for迴圈是錯誤的
    for x in range(2,-1)
    print(x)
    這個x印不出來
    目前查到range(start,stop,step)
    上面的range(2,-1)=range(2,-1,1)也可以寫這樣,step預設為1
    我看help上寫range(i, j) 產生 i, i+1, i+2, ... j-1
    照上面的解釋,上面的程式應該會印出2
    為什麼會印不出來
    還是因為迴圈條件不成立
    所以這個2也不會印出來
    這個程式碼原本是印出2,1,0
    我只是拿掉step=-1時想到這個問題

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      range(2,-1) 會得到一個空的列表,可以在程式中寫 print(list(range(2,-1))) 試試看。
      因為是空的列表所以迴圈就不會執行。
      說明上不一定寫得非常仔細,我們還是以程式實際運作的結果為主。

  • @asonE-df9nh
    @asonE-df9nh 2 ปีที่แล้ว

    首先謝謝老師講解讓新手簡單了解上手,想請老師講解while 迴圈裡面有while的例題,還有for裡面有for的例題,
    例如:九九乘法表與三角形~倒三角形~菱形的解題
    老人新手查網路上的答案還是不是很明白內迴圈的解釋
    希望老師可以出一個影片解析這些題型,先謝謝老師了

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +1

      謝謝你的回饋和建議,我會在之後的教學中多做這方面的說明 :)

    • @asonE-df9nh
      @asonE-df9nh ปีที่แล้ว

      @@cwpeng-course 感謝老師百忙之中抽空回答,希望老師做一專題,專門出題讓大家練習,也解惑題目答案或者思考方向,就算要訂閱付費也沒關係!希望老師能每天出1~2題讓大家跟著學習進步!先謝謝老師!

  • @youtubefatbe9982
    @youtubefatbe9982 3 ปีที่แล้ว

    彭彭老師你好,剛看過了你教For Loop 了。
    想問一下所以for 後面的是沒有意思嗎?
    我剛試了把"X" 改成 "ab"
    一樣可以跑,所以在for 後面,我放什麼都可以?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      對,那只是一個名稱,只要你 for 裡面的程式持續沿用就可以 ~

  • @藍品旭
    @藍品旭 5 ปีที่แล้ว

    老師另外在問,,R軟體老師有提到雙層for迴圈,python也有嗎?
    老師也有提到向量矩陣陣列的東西,在python 上呢?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      有哦,你可以在 Python 中寫雙層甚至更多層的迴圈。
      沒有叫做向量矩陣的東西,不過可以用兩層的列表來完成一樣的結構。

  • @Troyaa
    @Troyaa 3 ปีที่แล้ว +1

    謝謝老師的教學 但有點不懂sum變數是表示所有數字的總和嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +5

      sum 變數是我們建立的任意變數,我們心中的打算是用這個變數來記錄數字總和沒錯,但那因為我們的迴圈程序做了這件事情,並不是 sum 本身就有那個效果。

  • @邱繼賢-t8i
    @邱繼賢-t8i 4 ปีที่แล้ว

    請教一下
    直接指印出總和時為輸入
    print(sum)
    可是前面加上字串就要變成
    print('1+2+...+10=',sum) #sum 的前面要加逗號
    還有我自己試了另一種,前後都有字串的,就要這樣
    print('1+2+...+10=',sum,'as the answer') #sum 的前後都要加逗號
    可以稍微解釋一下邏輯嗎
    謝謝

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      print() 是一個函式,print() 函式可以放入很多參數,參數之間用逗號隔開。
      所以可以放兩個參數,或三個參數,都是可以接受的。
      你可以往後看看關於函式的基本教學,對於理解這些程式會有幫助 :)

  • @小拇指甲翻起來
    @小拇指甲翻起來 2 ปีที่แล้ว

    老師你好我想請問
    n=1
    sum=0 # 記錄累加的結果
    while n

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      你的 print(sum) 應該是有做了縮排,就會算在迴圈內部運作,每一圈都會執行。

    • @小拇指甲翻起來
      @小拇指甲翻起來 2 ปีที่แล้ว +1

      @@cwpeng-course 了解,謝謝老師,我再試試

  • @ytchen5291
    @ytchen5291 3 ปีที่แล้ว

    請問如果想要運算等差 1+3+5+7+9+11+13+15+17+19=
    用while迴圈是寫成
    n=1
    sum=0
    while n

    • @ytchen5291
      @ytchen5291 3 ปีที่แล้ว +2

      剛剛google了一下~
      有個列表的方式可以 「將等差級數列表出來」
      a=list(range(start,ent,step)
      同一個問題 1+3+5+...+19=? 欲使用 for 迴圈
      sum=0
      a=list(range(1,20,2))
      for x in a:
       sum=sum+x
      print(sum)

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      自己解決很不錯哦,讚讚 :)

  • @李姿妤-i8r
    @李姿妤-i8r 3 ปีที่แล้ว

    老師想請問我這樣的理解是不是正確的:
    print在縮排內的話會顯示出整個迴圈的過程。(我有將print打在縮排內,終端機顯示的結果就是:1,3,6..55
    如果沒有縮排的話則是直接顯示最後的迴圈結果:55
    有個問題想請教老師,我在一開始自己嘗試時,我少打了n+=1
    所以程式變成這樣:
    n=1
    sum=0
    while n

    • @TheRose0516
      @TheRose0516 3 ปีที่แล้ว +1

      沒縮排顯示不出答案的原因就是因為while迴圈內沒有一個正確的答案,迴圈內會一直無限加
      有縮排則會一直無限加上去並且給你看整個增加的過程
      這是我個人理解,有誤請指正(本人這幾天也才剛開始入門彭老師的課程)

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      感謝 @痞的潘 的說明,很清楚哦 :)

  • @hoyk448
    @hoyk448 4 ปีที่แล้ว +1

    想問一下老師,for loop的條件只可以用於列表或者字串上嗎? 還可以在用在其他地方嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      一般是用在列表和字串,再深入一點它叫做可以用在 iterable 的物件上

  • @我想學英文
    @我想學英文 3 ปีที่แล้ว +2

    11:35 要注意縮排 有縮排是在迴圈內部
    沒有縮排是在迴圈loop 外部!!!

  • @janethuang8838
    @janethuang8838 2 ปีที่แล้ว

    超級謝謝老師!!

  • @zmajni5866
    @zmajni5866 4 ปีที่แล้ว

    不好意思..新手想問一下 : 1. 12:16 這裡sum我改成用x,執行後有相同結果,可以請問差異為何呢?

    • @alistairwu4103
      @alistairwu4103 4 ปีที่แล้ว +2

      sum是一個變數名稱,既然是名稱,一個東西改的名字取決於你想要讓他叫甚麼名字,目的在於方便閱讀

    • @zmajni5866
      @zmajni5866 4 ปีที่แล้ว +2

      @@alistairwu4103 哦哦哦 所以其實我換成x它也算是一個“變數名稱“叫x,是這樣理解嗎.....不好意思😅

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      感謝 @alistair Wu 的回應,正是如此哦 ~

  • @amyhsiao9468
    @amyhsiao9468 3 ปีที่แล้ว

    講解得很清楚!!!

  • @ericchou5142
    @ericchou5142 5 ปีที่แล้ว

    謝謝老師,真的感謝您

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      不會呦,謝謝你的回饋 :)

  • @chienhwachen5464
    @chienhwachen5464 6 ปีที่แล้ว

    老師您好,我跟著您的步驟執行
    在while迴圈中1+2+3+...+10
    一直出現第6行 sum=sum+n 有問題,不知道為什麼?
    D:\python-training>python loop-basic.py
    Traceback (most recent call last):
    File "loop-basic.py", line 6, in
    sum=sum+n
    TypeError: unsupported operand type(s) for +: 'builtin_function_or_method' and 'int'

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว

      可能是迴圈的前面少了 sum=0 這個初始動作
      若不是的話,就需要完整程式碼來判斷哦 ~~~

    • @chienhwachen5464
      @chienhwachen5464 6 ปีที่แล้ว +1

      感謝老師,找到問題了,我的sum,誤打成 snm

  • @harryxiao5586
    @harryxiao5586 ปีที่แล้ว

    老師請問我在print(字串)的時候終端機可以正常顯示中文
    可是變成tuple的時候中文就會解碼錯誤
    可以怎麼解決
    試過網路上用unicode轉成其他語言也都失敗

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      需要你把程式碼貼上來或者是錯誤訊息,才有辦法進一步判斷哦 ~

  • @lim-d7u
    @lim-d7u 6 ปีที่แล้ว +1

    您好,問個比較怪的問題 sum=0必須打在for迴圈前面才會是1~10的加總嗎? 如果把sum=0 打在sum=sum+x的上面 為何跑出結果會是10? (這樣寫是不是沒有意義? 自己亂試,但想不懂,麻煩解答 謝謝^^)

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +2

      寫在 for 迴圈前面,只在進入迴圈前,執行一次,在一開始的時候把 sum 的資料設定為 0。
      寫在 for 迴圈的裡面,sum=sum+x 的上面,迴圈每次在轉的時候,都會執行,每次都重新把資料歸 0,最後只記錄到最後一個加上去的 10。

    • @lim-d7u
      @lim-d7u 6 ปีที่แล้ว

      為什麼最後一個不會歸零?

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว

      後面會再執行 sum=sum+x,就加 10 上去嘍。

    • @lim-d7u
      @lim-d7u 6 ปีที่แล้ว

      就是說最後一個10 不會再回傳到迴圈裡 所以不會歸零的意思嗎?

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว

      是哦 ~~

  • @yesourle
    @yesourle 4 ปีที่แล้ว +1

    不好意思,先感謝彭彭老師教學辛苦。請問range()你說是指方法,那它算不算是函數。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      不會呦,謝謝你 :)
      算哦,他是一個函式沒錯 ~ 方法可能是我一時沒仔細注意用詞,定義上應該是一個函式 ~

    • @yesourle
      @yesourle 4 ปีที่แล้ว +1

      彭彭的課程 感謝您,因為自己也有請教其他人,突然困惑。只要是有刮號的應感都算函數

  • @charlieed6264
    @charlieed6264 3 ปีที่แล้ว +1

    2021/05/23
    # while 迴圈
    # 1+2+3+...+10
    n=1
    sum = 0 #用來記錄累加的結果
    while n

  • @wilsonfeng333
    @wilsonfeng333 5 ปีที่แล้ว

    彭彭老师您好,请教一下以下问题:
    sum=0
    for x in range(1,11):
    sum=sum+x
    print(sum)
    与下面程式不同的地方是print的缩进;
    sum=0
    for x in range(1,11):
    sum=sum+x
    print(sum)
    但第一个程式出来的结果是:
    1
    3
    6
    10
    15
    21
    28
    36
    45
    55
    请问这是为什么?

    • @xiaoxiao4673
      @xiaoxiao4673 5 ปีที่แล้ว +1

      第一个程式是在FOR的回环里,所以+1+2....+10的结果全部显示出来了.第二个打印结果是回环执行完毕后只显示最后结果.

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      感谢 @xiao xiao 的回应 :)

  • @a33531010
    @a33531010 5 ปีที่แล้ว

    彭彭老師有個問題想請教
    w=0
    for x in range(1,100):
    w=sum+x
    print(w) #就會0+0 、0+1、0+2、0+99循環結束
    print(w)
    想請問為何最後一個print(w)出來的結果是99 而不是累加的結果呢

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      按照你的程式,要寫 w=w+x 哦,才會持續累加。

  • @taviralin1475
    @taviralin1475 4 ปีที่แล้ว

    老师您好在while里面的n+=1是否指代数字之间绝对值的关系?如果累加变成1-2+3-4+5....+99这样 无论正负是否程式最后还是n+=1?谢谢!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      对哦,还是会写 n+=1,因为这个只是用来依序取得 1, 2, 3, ..., 99 的每个数字。如果要加减交错,我们会多一个判断式,视情况使用 sum=sum+n 或 sum=sum-n。

    • @taviralin1475
      @taviralin1475 4 ปีที่แล้ว +1

      @@cwpeng-course 明白了, 谢谢老师~!

  • @羅世承
    @羅世承 4 ปีที่แล้ว

    老師我想做一個輸入數字(後以a代替)會讓他取0~a的偶數做加起來 像輸5是2+4=6 我的程式如下
    a=int(input(‘a=‘))
    sum=0
    For b in range(a+1)
    while b%2==0:
    sum+=b
    print(sum)
    執行後 會出現a=然後輸入完就沒下文了
    求解 謝謝

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      for 裡面那個要改用 if,你用 while 會導致程式跑不出迴圈哦 ~

  • @yuzhenchen9410
    @yuzhenchen9410 4 ปีที่แล้ว

    請問老師 我把print的縮排放在不同地方 為什麼會變成等差顯示
    sum=0
    for x in range(1,11):
    sum=sum+x
    print(sum)
    3
    6
    10
    15
    21
    28
    36
    45
    55

    • @sindianlin
      @sindianlin 4 ปีที่แล้ว

      因為print在縮排內,所以變成每次迴圈運算完sum=sum+1,都會印出sum,第一次迴圈得到的sum=0+1,所以輸出1;第二次sum=1+2,所以輸出3;第三次sum=3+3,輸出6,以此類推。

    • @yuzhenchen9410
      @yuzhenchen9410 4 ปีที่แล้ว

      @@sindianlin 謝謝你

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      感謝 @林信典 回應哦 :)

  • @mandywoo1266
    @mandywoo1266 5 ปีที่แล้ว

    彭彭老師,您好,我想請問下:
    n=0
    for x in [0,1,2,3]:
    if x%2==0:
    continue
    print(x)
    n+=1
    print("the last n is: ", n)
    為什麼這個出來的結果是:the last n is: 2
    邏輯感覺自己想的有點亂

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      0 1 2 3 四個數字中,有兩個數字會被 2 整除,執行 continue 跳過後面的 n+=1。
      所以最後 n 只加了兩次,結果印出來是 2

    • @mandywoo1266
      @mandywoo1266 5 ปีที่แล้ว

      @@cwpeng-course 可以再問下,他為什麼沒有執行print(x)呢

    • @t7788621
      @t7788621 5 ปีที่แล้ว

      @@mandywoo1266 應該是因為print(x)屬於if x%2==0為True時,所要執行的結果,但因執行continue,所以程式碼print(x)就被跳過了。
      如果print(x)少一個縮排就會執行了

    • @mandywoo1266
      @mandywoo1266 5 ปีที่แล้ว

      @@t7788621 感謝感謝

  • @kentisking123
    @kentisking123 3 ปีที่แล้ว

    感謝彭彭老師,也向老師請教
    程式碼中sum=0是要告訴電腦sum是新變數一開始等於0?
    但sum本身不是對於電腦來說就是總和,為什麼一開始還要告訴他sum=0,感謝

    • @jacklee5214
      @jacklee5214 3 ปีที่แล้ว

      可以看一下留言喔,有蠻多相關討論的

    • @kentisking123
      @kentisking123 3 ปีที่แล้ว

      @@jacklee5214 感謝已解惑!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      感謝 @Jack Lee 提醒大家 :)

  • @stevenchien1082
    @stevenchien1082 4 ปีที่แล้ว +1

    老師 我寫了一個東西
    for x in "Hello":
    print(x[0:4])
    我以為會印出
    H
    e
    l
    l
    結果根本沒變 想問為什麼呢?

    • @蔡汶芸-m6y
      @蔡汶芸-m6y 4 ปีที่แล้ว

      因為他是從0開始算字數 H(0) e(1) l(2) l(3) o(4) 所以還是一樣印出
      H
      e
      l
      l
      o

    • @stevenchien1082
      @stevenchien1082 4 ปีที่แล้ว

      @@蔡汶芸-m6y 但不是不包含結尾嗎 而且改成0:3或0:2結果都是一樣的

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      迴圈會把每個字元抓出來,每次都只印一個字元。
      如果是你提的那個想法,程式可能像這樣:
      test="Hello"
      print(test[0:4])
      就不需要迴圈了

    • @stevenchien1082
      @stevenchien1082 4 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師!

  • @Unknownthewiu
    @Unknownthewiu 2 ปีที่แล้ว

    请问一下,为什示范用while 做sum时候,只展示出最终1+2+3+...+10的答案呢?我这样打会出现1,3,6...慢慢叠加到10的答案,虽然答案也会有55但会有加的过程,我去理解的时候也感觉没问题啊

    • @Unknownthewiu
      @Unknownthewiu 2 ปีที่แล้ว +1

      ok我懂了,我把print 也加进Loop了

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +1

      有解决就好 :)

  • @iamnate791031
    @iamnate791031 5 ปีที่แล้ว

    老師您好,有個問題想請教您:
    第一:
    n=1
    while True:
    print(n)
    n+=1
    在這個程式碼裡面,true是什麼意思?
    我的理解是true=正確,但到底是什麼正確,畢竟前面沒有設像是n

    • @jimhung2752
      @jimhung2752 5 ปีที่แล้ว

      while True的意思是不管怎麼樣都要讓程式進到while迴圈中,沒有甚麼條件;兩個==是程式中判斷左右是不是相等的,如果a和b相等,a==b就是True;一個=是把左邊變成和右邊一樣

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      感謝 @章景洪 的回覆,差不多就是這樣哦 :)

    • @iamnate791031
      @iamnate791031 5 ปีที่แล้ว

      @@jimhung2752 感謝回覆

  • @黃世堯-w5i
    @黃世堯-w5i 6 ปีที่แล้ว

    請問老師:
    在while的時候,print為何不用寫在while迴圈裡面呢?
    而在for的時候,卻要把print寫進for迴圈裡面啊?
    我自己是有試過在for迴圈時把print寫在外面,結果電腦出現"IndentationError: expected an indented block"....
    while n

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว

      python 相當依賴縮排來判斷結構,若是要寫一個沒有程式碼的迴圈,必須使用 pass 指令:
      for x in "Hello":
      pass
      print(x)

  • @chang-lelin4162
    @chang-lelin4162 5 ปีที่แล้ว

    請問彭彭老師
    當我在編輯時
    n=1
    sum=0
    while n

    • @cheng-yuanwu1130
      @cheng-yuanwu1130 5 ปีที่แล้ว +1

      這樣算會變成2+3+4+...11=65
      從頭開始看n=1->小於等於10
      n+=1->這時你的1已經變成2
      sum=sum+n->sum=2
      n=2->小於等於10
      n+=1->n=3
      sum=sum+n->sum=2+3=5
      .....
      n=9->小於等於10
      n+=1->n=10
      sum=sum+n->sum=44+10=54
      n=10->小於等於10
      n+=1->n=11
      sum=sum+n->sum=54+11=65
      但老師的方式則是先加完1後再進行判定,
      從頭開始看n=1->小於等於10
      sum=sum+n->sum=1
      n+=1->n=2
      n=2->小於等於10
      sum=sum+n->sum=1+2=3
      n+=1->n=3
      .....
      n=9->小於等於10
      sum=sum+n->sum=36+9=45
      n+=1->n=10
      n=10->小於等於10
      sum=sum+n->sum=45+10=55
      n+=1->n=11(迴圈到此結束)

    • @chang-lelin4162
      @chang-lelin4162 5 ปีที่แล้ว +2

      @@cheng-yuanwu1130 謝謝高手解答

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      感謝 @巫承遠 的回應 :)

  • @kokojojo0435
    @kokojojo0435 2 ปีที่แล้ว

    請問澎澎老師:
    sum=0
    for x in range(10,100):
    sum=sum+x
    x+=1
    print(sum)

    n=1
    sum=0
    for x in range(10,100):
    sum=sum+n
    n+=1
    print(sum)
    這兩題差異在哪裏,若range改為range(1,10)
    結果會一樣都是45.
    謝謝老師!

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      x 的值是根據 range() 決定的,使用 range(1, 10) 就和你自己初始化 n=1 並持續往上加是一樣的結果,但若使用 range(10, 100) 就不會一樣了。

  • @fintechchao1345
    @fintechchao1345 3 ปีที่แล้ว

    幫助很大 謝謝老師

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      不會呦,很高興對你有幫助 :)

  • @ethantsai26
    @ethantsai26 3 ปีที่แล้ว

    老師想請問播放清單有兩個入門課程,那個有加numpy的應該先看還是在這個系列後看後看

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      這個先看,之後再 NumPy ~

  • @ludwig-ph3hx
    @ludwig-ph3hx 5 ปีที่แล้ว

    彭彭老师,您好
    我输入的程序如下:
    sum=0
    for x in range (1,11):
    sum=sum+x
    print(sum)
    结果却是:
    1
    3
    6
    10
    15
    21
    28
    36
    45
    55
    能解释一下是什么原因吗?
    谢谢!

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      你的 print(sum) 有缩排,表示在回圈的程式区块中,每次执行回圈都会印一次。
      范例中的 print(sum) 没有缩排,就是在回圈外面,等回圈全部跑完,才印出最后结果。

    • @ludwig-ph3hx
      @ludwig-ph3hx 5 ปีที่แล้ว

      非常感谢,彭彭老师的回复!您能否推荐一下好的关于python的教材?中文或者英文的?谢谢您!

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      我自己主要都是阅读官方的文件哦:
      docs.python.org/3/tutorial/index.html

  • @鄧守承
    @鄧守承 4 ปีที่แล้ว +1

    老師你好!
    在for 回圈內 如果不小心將sum=0 打入回圈內
    為什麼會print 出10呢

    • @markhuang60
      @markhuang60 4 ปีที่แล้ว

      我也有這個問題 QQ

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      等於是每次迴圈重複執行時,sum 都會先被歸 0,所以最後只記錄到最後面的數字,也就是 10

  • @山田林-f5b
    @山田林-f5b 9 หลายเดือนก่อน

    程式範例
    n=1
    while n

  • @曾奕誠-w8g
    @曾奕誠-w8g 4 ปีที่แล้ว

    老師你好 請教一下能不能範例一個寫完程式以後可以重復執行的迴圈 就是不需要按執行鍵 按個鍵就讓她重復執行 等不想執行在跳出迴圈呢?謝謝

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      while True:
      data=input("請輸入資料")
      if data=="exit":
      break

  • @enzolo327
    @enzolo327 6 ปีที่แล้ว

    老師你好,請問一下
    在最後一個例子
    我寫成這樣,為什麼答案一樣是55而沒有錯誤?
    n=1
    sum=0
    for n in range(1,11):
    sum=sum+n
    n+=1
    print(sum)

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว +2

      你最前面的 n=1 和後面的 n+=1 基本上都沒有產生實際的作用。
      因為在迴圈的開頭,都會固定把列表中的資料覆蓋進變數 n 裡面,
      所以你其他地方設定 n 的資料都沒有真正影響到 sum=sum+n 這個指令的運作。

    • @enzolo327
      @enzolo327 6 ปีที่แล้ว

      @@cwpeng-course 原來是我指定n去抓range(1,11)了,n=1跟n+=1不影響結果,今天看老師的解答馬上就懂了,果然前幾天學到頭昏了 >

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว +1

      不要寫在 sum=sum+n 之前,就不會影響。

  • @zhanqinglin5426
    @zhanqinglin5426 6 ปีที่แล้ว +1

    老師,看完while和for回圈后,分不清兩者之間的區別,應用場景。請老師解疑!感謝。

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว

      语法和运作的逻辑就不太一样,虽然都是回圈。
      如果是根据一个列表的资料来做回圈,通常就会用 for

    • @zhanqinglin5426
      @zhanqinglin5426 6 ปีที่แล้ว

      請問在Python中兩者可以互相替代嗎?

    • @cwpeng-course
      @cwpeng-course  6 ปีที่แล้ว

      可以,但转换起来没这么直觉 ~

  • @46587912
    @46587912 5 ปีที่แล้ว +1

    老師 請問若使用迴圈 因為現在是1+2+3+....
    能不能變成4+6+8+.....100
    這樣如何運行迴圈呢?

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      使用同樣的程序,但資料從 4 開始,必須小於等於 100,每次往上加 2。

    • @evemio1127
      @evemio1127 4 ปีที่แล้ว

      @@cwpeng-course
      彭彭老師您好,這個課程真的超棒的 加上大家的問題都相當有趣 如果變成從4往上+2直到100 這樣寫是否正確呢 算出的答案為2548@@
      n=4
      sum=0
      while n

  • @georgechou8393
    @georgechou8393 4 ปีที่แล้ว +1

    可以問一下打運算子都不用空格嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      空格也可以,有些人更喜歡有一些空格看起來比較舒服 ~

  • @wuhaohello2373
    @wuhaohello2373 5 ปีที่แล้ว

    通俗易懂,支持

  • @zzz-bv4er
    @zzz-bv4er ปีที่แล้ว

    老師教的好清楚

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      謝謝,希望對你有幫助哦 :)

  • @ciaoyanghsu9630
    @ciaoyanghsu9630 3 ปีที่แล้ว

    老師想請問為甚麼我打
    for x in {3,5,1}:
    print(x)
    出來的結果是
    1
    3
    5
    為甚麼改成集合數字會由小到大的跑出來呢?

    • @zixiang7810
      @zixiang7810 3 ปีที่แล้ว +2

      应该是因为{}吧 你可以试看换成【】

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      Thanks @Zi Xiang

  • @fqrwe52
    @fqrwe52 2 ปีที่แล้ว

    請問老師有介紹到巢ˋ狀迴圈嗎? 對這方面比較挫折

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      目前的影片中應該是沒有,之後我會考慮進來看看。

  • @江平允
    @江平允 3 ปีที่แล้ว

    老師您好,想請教這行程式是要怎麼看,我看不太懂,影片也沒教,所以請您解釋一下,謝謝
    程式:
    n = 0
    for i in range(1,10001):
    for j in range(1,10001):
    n += 1
    print(n)
    答:100000000
    麻煩您了,謝謝

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      兩層迴圈,外層跑 10000 次,每次都會跑內層,內層也 10000 次,總共跑 10000*10000=100000000 次,所以就最後的結果了。

    • @江平允
      @江平允 3 ปีที่แล้ว

      @@cwpeng-course 瞭解,謝謝老師

  • @justinwu483
    @justinwu483 2 ปีที่แล้ว

    請問for x in 字串/列表:
    的x是建立新變數嗎

  • @蔡文瑞-l2k
    @蔡文瑞-l2k 3 ปีที่แล้ว

    請問老師,有辨法用for 迴圈把列表[1,3,5,7]內的資料累加成新的列表[1,4,9,16]嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      有辦法哦,概念上如下:
      1+0**2
      3+1**2
      5+2**2
      7+3**2
      用迴圈去跑那個 0, 1, 2, 3

    • @蔡文瑞-l2k
      @蔡文瑞-l2k 3 ปีที่แล้ว

      @@cwpeng-course 可是列表的數字如果是隨機的浮點數,有辨法嗎?目前的做法,我是把它轉成陣列,用cumsum(),再轉回去列表.

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      @@蔡文瑞-l2k 不確定你的題意,如果只是最一開始的要求就可以。若有額外的狀況,需要有完整定義的輸入和輸出要求,才有辦法幫你判斷可能的做法哦 ~

    • @蔡文瑞-l2k
      @蔡文瑞-l2k 3 ปีที่แล้ว

      @@cwpeng-course 謝謝老師的回覆.小弟一開始可能沒說清楚內容,實際想問的應該是一個列表如[3,1,54,22.6,32.1],是否可用for 迴圈做累加,變成[3,4,58,80.6,112.7].

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      @@蔡文瑞-l2k 這其實是數學問題,不是程式問題,要去觀察兩個數列之間的關聯性,後面這個是:
      3=3
      4=3+1
      58=3+1+54
      80.6=3+1+54+22.6
      112.7=3+1+54+22.6+32.1
      最基本用兩層迴圈可以解決這個邏輯,用一層迴圈也可以,需要想一下細節的處理。

  • @Xiang00409
    @Xiang00409 3 ปีที่แล้ว

    老师,如果把第四第五行倒换位置,答案为什么会不一样呢?上面的是65,底下的是55
    n = 1
    sum=0
    while n

    • @huangg09
      @huangg09 3 ปีที่แล้ว

      上面的運算,是先將n+1後才進行加總,而下面的運算是先加總再n+1。
      拆解來看:
      n一樣會從0跑到10,不過上面的n跑到10後會先+1再加總,而下面的則是直接加總在+1,然而+1後就超過10了因此不會再跑一次迴圈。
      上:
      2+3+4+5+6+7+8+9+10+11 = 65
      下:
      1+2+3+4+5+6+7+8+9+10 = 55

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      感謝 @黃宣宸 的說明,很清楚 :)

    • @Xiang00409
      @Xiang00409 3 ปีที่แล้ว +1

      owhh,谢谢讲解(^v^)

    • @huangg09
      @huangg09 3 ปีที่แล้ว

      @@cwpeng-course 謝謝老師,我剛開始學習python,希望未來可以朝數據分析的路上走,在解答問題的同時能讓我更加知道自己是否已經學會。
      謝謝老師拍攝的影片,教學很清楚,對我幫助很大

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      @@huangg09 加油嘍 :)