Python 流程控制:迴圈進階控制,break、continue、else 命令 By 彭彭

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024

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

  • @corrinall4868
    @corrinall4868 3 ปีที่แล้ว +40

    看到這個影片後,豁然開朗,以前一直以為If else就是要放同一縮排位置,自己做了一些比較和小筆記 若有錯的話再請多指教 感謝
    #綜合範例: 找出平方根
    ##輸入9: 得到3
    #輸入11: 得到[沒有]整數的平方根
    思路: 若將if else放在同一縮排位置,會導致if else條件判斷二擇一的結果,
    每次不符合都印出,但你希望只要在全部檢查察都不符合才印出"沒有整數平方根"
    故else要放在與for同位的縮排位置,for迴圈結束前執行此段
    當for迴圈內條件式一但成立,立即break離開迴圈,也就不會執行到後面的else了
    正確寫法:
    n = input("輸入一個正整數") #讓使用者輸入數字
    n = int(n) #轉換輸入成數字
    for i in range(n): # i從0~n-1
    if i*i == n:
    print("整數平方根",i)
    break #如果找到平方根,就break 跳出for 迴圈
    else:
    print("沒有整數平方根")
    """ Note:
    for迴圈正常的結束 就會跑else
    如果我們用break強制把迴圈結束掉,就不會跑else
    使用者如果輸入9 n=9
    i就會從0~8測試, 在i跑到3時,3*3=9,i就會是3
    使用者如果輸入5 n=5
    i從0~8測試,在這過程中就都不會有滿足整除平方根的條件
    最後就會執行else , 印出 沒有整數平方根
    """
    #錯誤寫法1: 沒有寫else 會發生就算有整除平方根,依然印出沒有整數平方根的訊息
    n = input("輸入一個正整數")
    n = int(n) #轉換輸入成數字
    for i in range(n):
    if i*i == n:
    print("整數平方根",i)
    break
    print("沒有整數平方根")#迴圈完後一定會印出
    """
    印出:
    輸入一個正整數9
    整數平方根 3
    沒有整數平方根
    """
    #錯誤寫法2 : 會印出不必要的訊息
    n = input("輸入一個正整數")
    n = int(n) #轉換輸入成數字
    for i in range(n):
    if i*i == n: #if條件式成立才會進入
    print("整數平方根",i)
    break
    print("沒有整數平方根") #上方if條件式不成立就不會進入,程式由上往下讀,接著執行此句
    """
    #Note:
    假設使用者輸入9 i從0跑到3時,出現整除平方根才滿足if條件是為true
    在那之前i=0,i=1,i=2都印了一次 沒有整數平方根,總共會印三次
    印出:
    輸入一個正整數9
    沒有整數平方根
    沒有整數平方根
    沒有整數平方根
    整數平方根 3
    """
    #錯誤寫法3: if else放在同一縮排位置,導致出結果二擇一,印出很多不必要的訊息
    n = input("輸入一個正整數") #讓使用者輸入數字
    n = int(n) #轉換輸入成數字
    for i in range(n): # i從0~n-1
    if i*i == n:
    print("整數平方根",i)
    else:
    print("沒有整數平方根") #每次沒有平方根就印
    """
    假設使用者輸入一個正整數6
    上面寫法會導致沒有整數平方根時,每次都會印出
    沒有整數平方根
    沒有整數平方根
    沒有整數平方根
    沒有整數平方根
    沒有整數平方根
    沒有整數平方根
    """

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

      很厲害的筆記,感謝你的紀錄和分享 :)

    • @張小照
      @張小照 29 วันที่ผ่านมา

      完全把新手會犯的錯誤貼上來啦!
      還有的錯誤是有時候少了 : , 有時候又位置忘了對齊正確的地方。

  • @梅花鼠
    @梅花鼠 8 หลายเดือนก่อน +7

    感謝老師的教學~
    在最後的範例我也試著用continue解
    n1=int(input("請輸入數字:"))
    sum=0
    for x in range (n1):
    if x*x==n1:
    print (x)
    else:
    sum=sum+1
    continue
    if sum==n1:
    print ("沒有整數平方根")

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

      感謝你的分享,我相信對大家都很有參考價值 :)

  • @admirandah4194
    @admirandah4194 5 ปีที่แล้ว +61

    彭彭老師好:
    因為對n跟x兩者間的關係有點迷惑我整理了一點心得不知道是否正確,請您幫忙看看:
    n=0
    for x in [0,1,2,3,]:
    if x%2==0: # x 是偶數
    continue
    print(x)
    n+=1
    print('最後的 n:', n)
    這段可否理解為,我實際要求的是「n」,換言之,我要看的重點其實只有取頭取尾,即n=0、n+=1。
    至於中間的x只是設定迴圈運作的次數的條件,而[0,1,2,3]中只有0,2會成立 x%2==0的條件式,所以 n+=1只跑2次,故最後的n=2。
    以上,煩請賜教,不勝感激!

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

      你的理解沒有什麼問題哦,很不錯的描述 :)

    • @tingyang6385
      @tingyang6385 4 ปีที่แล้ว +8

      謝謝你的分享,我也跟你卡在類似的地方,有你的說明資訊變清晰了

    • @詹耕銓
      @詹耕銓 4 ปีที่แล้ว

      太棒了👏

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

      不好意思請問一下 所以這邊的2指的是2次,而不是最終結果為2?

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

      Fuyz 我認為解讀成「可以滿足這個條件的只有兩個數字」,這樣學習上比較不會搞混

  • @gavinchen2837
    @gavinchen2837 5 ปีที่แล้ว +8

    老師您的影片真的很詳細,在看您平方根的範例前,我依自己意思先寫了一段。像您說的,看著打是一回事,自己練習用不同方法又是一回事。
    #迴圈綜合範例:取得整數平方根
    n=input("請輸入一個數:")
    n=int(n)
    data=n**0.5 #開根號
    if int(data)==data: #判斷是否為整數
    print(n,"能取整數平方根=",data)
    else:
    print(n," 無法取整數平方根,其平方根=", data)

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

      很不錯呀,謝謝你的回饋 :)

    • @kc-fd9nn
      @kc-fd9nn 5 ปีที่แล้ว

      要用迴圈而不是直接開根

  • @alexwu7111
    @alexwu7111 4 ปีที่แล้ว +8

    「自己講了都想睡覺」,這句很有趣。
    Python在任何的使用上,真的要自己去執行、思考和吸收才能真正的理解,畢竟這語言是「程式」,包含了邏輯的思考。
    但其實蠻好玩有趣的!
    一天一天的學習,發現不只是漸漸看得懂python,在邏輯的思考上更近一步,不單單只是平平的生活過去。
    感謝老師的講解:)

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

      哈哈哈哈 XDDD 有些東西講得很細很細又沒有戲劇效果,真的覺得很少人能專注到最後,我覺得連我自己聽都無法 ~~~
      就像你說的自己去寫、去想、去執行,才能把這些東西都變自己的 :) 覺得你的分享很棒,很喜歡 ~~~~

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

      @@cwpeng-course 謝謝:)
      做每一個動作時,都會學習到不同的知識,雖然很煩哈哈哈,但收穫真的不少:)

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

    最後的綜合範例,原本想說試著自己先寫寫看,沒想到可以正確運行,實在太開心了!!!後來看了老師用for迴圈寫的方式,領悟到原來寫法可以有很多種,老師也一直強調要看懂其中的邏輯,這次影片深有體會!!
    n1 = int(input("請輸入數字"))
    if n1%(n1**(1/2)) == 0 :
    print(n1**(1/2))
    else :
    print("沒有整術平方根")

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

      讚讚,很高興你有些自己的體悟,也謝謝你的分享 :)

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

      我跟你差不多的寫法

  • @yilu4886
    @yilu4886 4 ปีที่แล้ว +46

    老师讲的非常细致。不过取平方根的代码有些小问题,输入整数1返回的结果是无平方根(因为range是从0开始且不包含1),所for循环的range(n+1)就可以解决了

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

      感谢你指出这个问题和大家分享 :)

  • @肥狗二號
    @肥狗二號 5 ปีที่แล้ว +14

    感謝老師指導,重溫第二次又有心得:else的位置不同導致的結果也不一樣

  • @sweetnote20
    @sweetnote20 5 ปีที่แล้ว +12

    感謝老師 看老師的影片 學東西 會上癮 有成就感

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

    00:00 介紹
    00:15 迴圈搭配的指令:break和continue
    00:33 break:強制結束迴圈
    while 布林值:
    ▏ break
    for 變數名稱 in 列表字串:
    ▏ break
    01:05 程式示範:
    n=1
    while n

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

      感謝紀錄 ~

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

      你好
      17:12 綜合範例:找出整數平方根
      for i in range(x):中的x應改為n

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

      @@sann1170 謝謝糾正

  • @paulhuang6156
    @paulhuang6156 6 ปีที่แล้ว +8

    澎澎老師 謝謝您無私 的分享 完全不會想睡覺呢

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

      哈哈哈,謝謝你的回饋哦 :)

  • @何容-o7c
    @何容-o7c 5 ปีที่แล้ว +23

    #break的簡易範例
    # n=0
    # while n

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

      感謝整理 :)

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

      最后一个例子求平方根去掉break是不是也可以?

    • @艾麗絲-b8l
      @艾麗絲-b8l 4 ปีที่แล้ว +4

      @@meizhanglong6072 沒有break的話會執行else 假設你輸入25它會print 25的整數平方根是5 也會print 25沒有整數平方根

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

    謝謝老師,彭彭人,我的超人

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

    感謝彭彭老師的教學,以下是個人的練習,還請不吝教導,謝謝。
    #綜合範例:找出整數平方根
    while True:
    n = input("請輸入一個正整數或輸入Q/q離開: ") #input輸入的值為字串
    try:
    int(n) and n == "Q" and n == "q" #判斷輸入的字串是否可轉換整數或為離開程式的Q/q
    x = True
    except ValueError: #判斷輸入值若非整數及Q/q皆為非整數
    x = False
    if n == "Q" or n == "q":
    print("歡迎下次使用")
    break
    elif x == False:
    print("您輸入的非正整數,請重新輸入或輸入Q/q離開")
    else:
    n = int(n)
    for i in range(n): # i 從 0 ~ n-1
    if i*i == n:
    print("整數平方根", i)
    break
    else:
    print("沒有整數平方根")

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

      我覺得是很棒的練習,也仔細使用了 try except 的結構來偵測資料型態轉換失敗的狀況,感謝你的分享 :)

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

    老師好人一生平安 :)

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

    n=input("please enter a number")
    n=int(n)
    i=0
    for i in range(n):
    print("謝謝澎澎老師")
    print("第" ,i+1,"次" )
    else:
    print("程式結束。")

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

      哈哈哈,謝謝你程式中的謝謝 XDDDD

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

      @@arisapan4089 怎麼這麼棒 XDDD

  • @gcho2669
    @gcho2669 10 หลายเดือนก่อน

    老師講解的真的非常淺而易懂,非常感謝您的教學🙏🙏

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

      謝謝回饋,加油 :)

  • @dr.nonsense3025
    @dr.nonsense3025 3 ปีที่แล้ว +6

    我看了綜合範例後,嘗試自己先打看看
    a=int(input("尋找完全平方數"))
    x=a**(1/2)
    if x//1==x:#判斷開根後有無小數
    print(a,'的平方根為:',x)
    else:
    print(a,'不是完全平方數')
    老師對不起我沒有用到迴圈QQ
    謝謝你清楚的指導

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

      哈哈哈,雖然沒有用到迴圈但還是很不錯的練習和分享哦 :)))

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

      @@cwpeng-course 請問彭彭老師, 我使用這位樓主的程式碼下去嘗試, 為什麼出現的x 會是帶有小數點第一位的數字呢? (例如a輸入25, x會是5.0) 而不是出現整數(5)? 這是python預設的數字格式嗎? 謝謝!

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

    最後的綜合範例,試著寫寫看,寫完以後以為自己對了!
    結果發現跟老師的還是不一樣,試一試又好像真的沒問題~
    原來不同的思路,真的會產生不同的解答!
    程式語言好有趣!感謝老師仔細的教學~
    n=input("請輸入一個正整數:")
    n=int(n)
    for x in range(n+1):
    if x*x==n:
    print("此數有整數平方根為:",x)
    break
    elif x==n:
    print("此數無整數平方根")

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

      感謝你的心得分享,覺得有意思 :)

  • @tse-weiliao2780
    @tse-weiliao2780 2 ปีที่แล้ว +3

    # 有多加一個 while 迴圈就可以一直輸入了
    # 打q 就是 quit 的意思,跳出迴圈
    while True:
    num = input('請輸入一個正整數: ')
    if num == 'q':
    break
    else:
    num = int(num)
    for i in range(num):
    if i*i == num:
    print(num, '的根為', i)
    break
    else:
    print(num, '沒有整數根')

  • @Davis-n7j
    @Davis-n7j 4 ปีที่แล้ว +1

    剛剛測試之前學的開根號,最後一個範例也可以寫成這樣
    num=int(input('請輸入正整數:'))
    if num**0.5%1==0:
    print('整數平方根為',num**0.5)
    else:
    print('沒有整數平方根')
    相較之下若輸入的數字較大,貌似會跑得比較快(運算過程比較少的關係?)
    提供給大家參考,希望大家一起進步~~
    也謝謝彭彭老師的教學,真的受益良多!

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

      謝謝你的分享,我覺得很棒 :)

    • @CK-bu5wh
      @CK-bu5wh 4 ปีที่แล้ว

      不好意思 想請問一下%1在這裡的用法 是不是用來看開方根後的數字是不是有餘數 如果有就必定是泳有整數平方根 謝謝

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

    謝謝作者的製作。

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

    看了彭彭老师的官网,简洁、清爽,很漂亮、很舒服。

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

      谢谢对官网的回馈,很高兴你喜欢 :)

  • @chaka8645
    @chaka8645 3 หลายเดือนก่อน +1

    n=0
    for x in [1,2,3,4,5,6,7]:
    if x%2==0: #X如果是偶數 x=0會忽略下方程式
    continue
    print(x)
    n=n+1
    print("最後的n",n) #列表中為奇數的數量

    • @chaka8645
      @chaka8645 3 หลายเดือนก่อน +1

      n1=int(input("number"))
      for x in range(2,n1):
      if n1%x==0:
      print("no")
      break
      else:
      print("yes") 自己練習寫出判斷是否為質數

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

      很棒的練習 :)

  • @Kevin-fs1zt
    @Kevin-fs1zt 2 ปีที่แล้ว +1

    筆記分享~有錯還請大家幫忙更正
    ----------------------------------------------------------------------------------------------------
    #ctrl+A為全選,配合ctrl+/的集體註解很好用
    #break的簡易範例
    n=0
    while n

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

      哇,感謝你的詳細筆記,讚讚!

  • @GoldWing0927
    @GoldWing0927 2 หลายเดือนก่อน +1

    2024/07/04
    剛看到開根號的題目,在看解答之前,試著用自己過去的所學嘗試先解解看:)
    看完彭彭老師的解法後,我在想可能可以運用彭彭老師教的for迴圈的解法延伸應用到尋找"質數",晚點再來想想看^^
    ### 下面這是我自己嘗試寫出來的解法 ###
    num01 = int(input("請輸9入要取平方根的整數:"))
    num02 = num01 ** 0.5 # 輸入的數值,直接開根號
    if num02 % 1 != 0: # 判斷開根號之後的數值是否為整數
    print("這個數字沒有\"整數\"的平方根")
    else:
    print(f"平方根為:{num02:g}")

    • @GoldWing0927
      @GoldWing0927 2 หลายเดือนก่อน +1

      #判斷輸入數字是否為質數
      # "2"這個數字我實在想不出更好的判斷方法,所以直接告訴判斷式,2就是一個質數
      num01 = int(input("輸入一個大於1的數字,判斷是否為質數:"))
      if num01

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

      感謝你的分享,我覺得很棒耶 :)

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

    畫重點11:05
    一次註解這種快捷鍵真的很實用XD

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

      感謝幫忙畫重點 XDDD

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

      @@cwpeng-course請問一下為什麼只有注音輸入法能用? 像我用倉頡時, 按Ctrl + / 變成...

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

    我也不太理解n=2這段,爬了一下文,最後我的理解是只有1跟3符合往下計算的條件,因此當x=1時印出X同時n會被加上1, 而當下一次運算時x=3,這時的n已經是1,所以1再加1就得到2

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

      我覺得你的理解沒太大問題哦 ~

  • @迪洛西-p2e
    @迪洛西-p2e 4 ปีที่แล้ว +5

    關於找出平方根 我的寫法是直接對x開根號,然後除以1看是不是等於0,除以1等於0的就是整數,不知道這樣寫對不對?
    x=int(input("請輸入一數字:"))
    y=x**0.5
    z=y%1
    if z==0:
    print(y)
    else :
    print("無法整除")

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

      沒有問題哦,感謝你的分享。
      影片中只是要讓大家多多練習迴圈的思考方式 :)

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

    Contro+/ 我現在才知道 之前傻傻一直#####
    謝謝老師

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

      讚讚,小技巧很有用 XDDD

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

    最後是print n 不是print x
    所以最後的n是2 不是3!!!!!!!!!!!!!!!!
    以為是3的可能以為最後是print(x)
    但是最後一排程式碼是print(n)
    是在問for這個loop跑了幾次

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

    老師想請問一下關於else的用法,
    會不會覺得如果沒有break配合使用的話,感覺好像有點多餘,因為不管怎樣都會繼續執行下一行程式碼,
    有沒有什麼情況下是,需要else但是不需要同時配合break的例子呢?
    謝謝喔

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

      覺得搭上 break 相當好 XDDD 同樣的範例我用 JavaScript 寫就要多一點邏輯來處理 ~~~
      至於需要 else 不需要配合 break,目前沒有想到很必要的狀況,不過某種程度上可以把跟迴圈相關的後續動作包裹在結構中,或許對可讀性有些幫助 :)

  • @銘冠賴
    @銘冠賴 4 ปีที่แล้ว +2

    謝謝老師 我終於完整的弄懂迴圈了>

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

    感謝老師無私分享

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

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

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

    剛剛開始學python
    試了試你出的題 嘻嘻
    n=int(input('Number :'))
    a = n**(1/2)
    b = int(a)
    if b == a:
    print(b)
    else:
    print('not rational number')

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

      哦哦,讚讚,很不錯 :)))

  • @蕭皓文-w3r
    @蕭皓文-w3r 4 ปีที่แล้ว +2

    想不到for要怎麼寫
    所以就先這樣寫了,好像也行 XD
    x = input("請輸入整數:")
    x = int(x)
    if x % x**0.5 == 0:
    print(x,"的平方根為:",int(x**0.5))
    else:
    print("沒有整數平方根")

    • @蕭皓文-w3r
      @蕭皓文-w3r 4 ปีที่แล้ว +1

      如果用戶輸入超大的數字,這樣可能用if else會快一點點點點點點,因為不用跑迴圈算很多次

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

      直接利用內建的 ** 運算是好主意哦,使用 for 單純只是為了練習邏輯而已 :)

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

    x=int(input("請輸入一個正整數:"))
    y=x**0.5
    z=int(y)
    if y==z:
    print(x,"的整數平方根為",round(y),sep="")
    else:
    print(x,"沒有整數平方根",sep="")

  • @邱昱鈞-k7z
    @邱昱鈞-k7z ปีที่แล้ว

    用while迴圈挑戰
    #找出整數平方根
    x=int(input("請輸入整數: "))
    y=1
    while x>0:
    if y*y==x:
    print("整數平方根為:",y)
    break
    y+=1
    if y==x:
    break
    z=x**0.5
    int(z)
    if z**2x:
    print("平方根非整數")

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

      感謝你的分享,很棒 :)

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

    謝謝老師 原來迴圈也有else 可以用 又多了解一點了

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

      對你有幫助我覺得很棒 :)

  • @藍郁勛
    @藍郁勛 3 ปีที่แล้ว +1

    想請教彭彭老師
    倒數第二個例子 (else的簡單範例)
    我使用如下:
    sum=0
    for n in range(11):
    sum+=n
    print(sum)
    不用else也能跑出55
    那麼用else的差別在哪呢

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

      同一個問題的程式寫法通常會有很多種,在這個問題裡是否有 else 確實都可以正常運作,但若使用 else 的邏輯也一樣能解決問題嘍 ~

    • @藍郁勛
      @藍郁勛 3 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師您的頻道真的令人獲益良多

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

    感謝老師詳細的教學~
    有一個問題覺得不解
    x+=1的位置 放在print(印出迴圈中的x)上 就多一個尾數出來
    而用while 運算continue 又要放到if的上面才不會無限迴圈
    有點不太了解
    感謝~

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

      程式碼放在上方,會先執行,執行順序會影響最後結果。
      如果不斷地跑進 continue 指令,但變數中的資料沒有變化,就會產生無窮迴圈嘍。

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

    老師想詢問一下~關於else 的簡單範例
    sum=0
    for n in range(11):
    sum+=n
    else: >【這裡不知道為何需要有else,因為有無的結果都可以呈現出一樣的正確答案】<
    print(sum)
    這裡回去重新看if、elif、else的單元還是不能理解QQ
    謝謝老師在過程中,不斷地暗示要自己寫一遍,理解邏輯,自己默寫真的很有幫助~~謝謝老師~

    • @李峻豪-l9e
      @李峻豪-l9e 2 ปีที่แล้ว

      沒有 else會全部印出來吧

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

      感謝 @李峻豪 的回應 :)

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

      @@cwpeng-course 老師, 跟著這位同學的else問題, 我想多問:
      else:
      print(sum)
      如果我一樣把else拿掉,留下print(sum)但沒有縮排,結果會完全一樣,所以感覺else在這裡是多餘的,請問這理解對嗎?
      print(sum) --> 沒有縮排

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

      @@chhe453 這樣做也是可以的沒錯 ~

  • @詹耕銓
    @詹耕銓 4 ปีที่แล้ว

    #平方根 想請教一下彭彭老師
    n=int(input(‘請輸入一個正整數: ’)
    for i in range(n):
    if i * i == n:
    print(‘整數平方根‘ , i)
    break
    else:
    print(‘沒有整數平方根’)
    n=int(input(‘請輸入一個正整數: ’)
    for i in range(n):
    if i * i == n:
    print(‘整數平方根‘ , i)
    else:
    print(‘沒有整數平方根’)
    這兩段代碼結果是一樣的 所以我想說這裡的重點應該是沒有縮排的else:
    因爲我試了一下把else放在for迴圈中 這時候不管上面有沒有break 在終端機顯示的整數平方根上面都會出現 沒有整數平方根
    像是:
    n=int(input(‘請輸入一個正整數: ’)
    for i in range(n):
    if i * i == n:
    print(‘整數平方根‘ , i)
    break
    else:
    print(‘沒有整數平方根’)
    這個如果輸入16 上面會先出現四個沒有整數平方根 再出現 整數平方根:4
    這個比較好理解 因為感覺for迴圈是從0開始計算 四個沒有整數平方根代表的是 0 1 2 3
    但是:
    n=int(input(‘請輸入一個正整數: ’)
    for i in range(n):
    if i * i == n:
    print(‘整數平方根‘ , i)
    else:
    print(‘沒有整數平方根’)
    這個的答案下面就會出現超級多沒有整數平方根 這個應該也是因為沒有break 所以會一直運算下去
    最終還是想問 else擺放的位置 為什麼它要擺在迴圈外???

    • @詹耕銓
      @詹耕銓 4 ปีที่แล้ว

      我簡化一下我的問題😂
      (1)為什麼沒有break答案一樣?
      (2)為什麼不能把else 放在 for 迴圈中?

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

      1. break 會在找到答案時提前終止運作,就算沒有,也只是浪費後面的運算力,但不會影響答案。
      2. else 放在迴圈中代表每一圈都會執行,放在外層,才代表迴圈結束後執行,運作方式很不一樣。

  • @四季-t5q
    @四季-t5q 2 ปีที่แล้ว +1

    不好意思我想請教一下關於"綜合範例"部分的問題:
    藉由開根號可以理解到 i*i 次方及 n**0.5 的兩個特性
    *想知道彭彭是如何想到要用for、in range() 語法的出發點?
    靠 i*i 的理解是如何連想且運用到列表語法呢?是我沒熟悉 for in range() 的理解及 根號 的特性嗎?
    彭彭的解:
    n1 = int(input('輸入數字:'))
    for i in range(n1):
    if i*i==n1:
    print("整數平方根:",i)
    break
    else:
    print(n1,"無整數平方根")
    在未看到彭彭的解法時,我想到是用 while 及 if 作解,自己的解法如下:
    解1:
    n1 = int(input('輸入數字:'))
    x = n1**0.5
    i=x%1
    while i==0:
    print('正整數根號',x)
    break
    else:
    print(n1,'無整數平方根')
    解2:
    n1 = int(input('輸入數字:'))
    x = n1**0.5
    i=x%1
    if i==0:
    print('正整數根號',x)
    else:
    print(n1,'無整數平方根')
    非常感謝閱讀如此冗長的問題!

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

      教學用途而已,實務上確實直接使用 n**0.5 這樣的寫法即可,讓大家體會一下 for 迴圈會如何思考事情。

    • @四季-t5q
      @四季-t5q 2 ปีที่แล้ว +1

      @@cwpeng-course 好的!非常感謝回覆!!

  • @tatsumi08188
    @tatsumi08188 11 หลายเดือนก่อน

    用while試著寫找出平方根的程式><
    x=int(input("請輸入正整數:"))
    i=0
    while i>=0:
    if i*i==x:
    print("整數平方根:",i)
    break
    elif i>x:
    print("找不到整數平方根")
    break
    else:
    i+=1

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

      讚讚,很棒的練習和分享 :)

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

    謝謝老師🙏🏻🙏🏻

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

      謝謝呦,希望對你會有幫助 :)

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

    想問老師17:05 直接print(sum)的結果跟else print(sum)的結果出來是一樣的,那這樣else是必須要加的嗎

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

      以這個例子來看確實沒有一定要加,主要是迴圈中若是有 break 的指令才會影響到運作 ~

  • @鍾秉祁
    @鍾秉祁 2 ปีที่แล้ว +2

    想請問老師
    綜合範例這樣好像沒有辦法算出1的平方根?
    是不是把32行range後面的括號改成n+1就可以改善?

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

      對哦,很棒的細節,是我的失誤,確實如此 :)

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

    老師請問這樣正確嗎
    a = int(input("請輸入一個整數:"))
    b = a**0.5
    if a%b == 0:
    print("其平方根為:",b)
    else:
    print("無整數平方根")

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

    彭彭老師您好:
    n=0
    for x in [0,1,2,3]:
    if x%2==0: # x 是偶數
    continue
    print(x)
    n+=1
    print("最後的 n:", n)
    結果如下:
    1
    3
    最後的 n: 2
    #但是,將第一行修改成
    n=1
    for x in [0,1,2,3]:
    if x%2==0: # x 是偶數
    continue
    print(x)
    n+=1
    print("最後的 n:", n)
    最終結果會變成
    1
    3
    最後的 n: 3
    想請問老師最後print的 n 究竟是甚麼意義? 又為何會從2變成3?
    非常感謝!

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

      好像是用 [最後的n值] 解釋會比 [n+=1 ]執行了幾次更加精準?
      當n=1且x=1時
      執行n+=1
      -->得到新的n=2
      當n=2且x=3時 (x=2會執行continue 變成x=3)
      執行n+=1
      -->得到新的n=3
      故最後print(n)的結果為3。
      -------------------------------------------------------------------------------
      同理解釋課堂的
      n=0
      for x in [0,1,2,3]:
      if x%2==0: # x 是偶數
      continue
      print(x)
      n+=1
      print("最後的 n:", n)
      當n=0且x=1時
      執行n+=1
      -->得到新的n=11
      當n=1且x=3時 (x=2會執行continue 變成x=3)
      執行n+=1
      -->得到新的n=2
      故最後print(n)的結果為2。

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

      你的理解很 OK 哦,沒什麼問題 :)

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

      感謝你的詳解...我終於懂了...

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

    Thanks for your sharing!

  • @葉培民
    @葉培民 3 ปีที่แล้ว +1

    彭彭老師你好 我在練習的時候有遇到一個問題: 您解說想要開根號所使用的邏輯為 i*i=i的2次方。 但我想說用(1/2)次方比較直觀? 所以嘗試改寫練習卻發現我用兩種方式呈現卻出現不同結果@@ 想請教您
    Code1:
    x=input("plase type in number: ")
    x=int(x)
    y=input("請輸入欲開次方: ")
    y=int(y)
    for i in range (x):
    if i**y==x:
    if y%2==0:
    print(x,"的",y,"方根為:",i,-i)
    else:
    print(x,"的",y,"方根為:",i)
    break
    else:
    print(x,"的",y,"方根非整數")
    上述為老師指導的邏輯 這部分都正確 我想問的是下面的code:
    x=input("plase type in number: ")
    x=int(x)
    y=input("請輸入欲求知次方根: ")
    y=int(y)
    i=x**(1/y)
    if i==int(i):
    print(x,"的",y,"方根為:",i)
    else:
    print(x,"的",y,"方根非整數")
    這個code 我嘗試之後 (像是X=8 y=3)是正確的 但我只要輸入1000 y輸入3 卻不會出現10@@ 這個疑問

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

      因為 1000**(1/3) 得到的數字不會剛好是 10,你可以把 i 直接印出來觀察看看。這個跟電腦本身的浮點數運算誤差有關,所以我們可能更偏好使用逼近法來處理這樣的問題 ~

    • @葉培民
      @葉培民 3 ปีที่แล้ว

      @@cwpeng-course 謝謝彭彭老師 , 所以 不是寫法有錯 比較偏向 因為1/3 化成小數是0.33333(無限)的概念!? 了解 謝謝老師

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

    if i*i == n :
    ...
    elif i*i > n :
    print("沒有整數平方根")
    break;

  • @stanliu4476
    @stanliu4476 4 หลายเดือนก่อน

    彭彭老師您好
    請問一下在"14:40"
    第16行處的n+=1
    n和x 之間沒有任何的算式 (譬如n=n+x)
    為何第17行的結果print("最後的n",n)
    會顯示為2呢?

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

    後面那個開方的程式碼
    如果使用者輸入1
    就會跑出沒有整數平方根
    因為i只有0~0
    應該要再最上面加入1的情況

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

      謝謝你的補充和提醒 :) ~~~

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

      @@RH-nf3dn range(n)改成range(n+1)
      輸入1 的開根號就會得到1了
      (樓上網友\回的
      )

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

    # 一定要寫在迴圈內
    while 布林值:
    break
    for 變數名稱 in 列表或字串:
    break
    n = 1
    while n < 5:
    if n == 3:
    break # 程咬金
    n+=1
    print(n) # 印出3
    while 布林值:
    continue
    for 變數名稱 in 列表或字串:
    continue
    n = 0
    for x in [0,1,2,3]:
    if x % 2 == 0:
    continue
    n+=1
    print(n) # 印出2
    while 布林值:
    若布林值為True,執行命令
    回到上方,做下一次的迴圈判斷
    else:
    回圈結束前,執行此區的命令
    n = 1;
    while n < 5:
    print("變數n的資料是:", n)
    n+=1
    else:
    print(n) # 結束迴圈前,印出5
    >>> 變數n的資料是: 1
    >>> 變數n的資料是: 2
    >>> 變數n的資料是: 3
    >>> 變數n的資料是: 4
    >>> 5
    for 變數名稱 in 列表或字串:
    將列表中的項目或字串中的字元
    逐一取出、逐一處理
    else:
    回圈結束前,執行此區的命令
    for c in "Hello":
    print("逐一取得字串中的字元", c)
    else:
    print(c) # 結束迴圈前,印出c
    >>> 逐一取得字串中的字元 H
    >>> 逐一取得字串中的字元 e
    >>> 逐一取得字串中的字元 l
    >>> 逐一取得字串中的字元 l
    >>> 逐一取得字串中的字元 o
    >>> o
    # break
    n = 0
    while n < 5:
    if n == 3:
    break
    print(n) # 印出迴圈中的n
    n+=1
    print("最後的n: ", n) # 印出迴圈結束後的n
    >>> 0
    >>> 1
    >>> 2
    >>> 最後的n: 3
    # continue
    n = 0
    for x in [0,1,2,3]:
    if x % 2 == 0: # x是偶數
    continue
    print(x)
    n+=1
    print("最後的n: ", n)
    >>> 1
    >>> 3
    >>> 最後的n: 2
    # 遇到0,2會被跳過不印,continue執行下一個
    # else
    sum = 0
    for n in range(11):
    sum += n
    else:
    print(sum) # 印出1+2+3+...+10的結果
    >>> 55
    # 綜合範例: 找出整數平方根
    # 輸入9,得到3
    # 輸入11,得到【沒有】整數的平方根
    n = input("輸入一個正整數: ")
    n = int(n) # 轉換輸入值為數字
    for i in range(n): # i 從 0 ~ n-1
    if i * i == n:
    print("整數平方根", i))
    break # 用break強制結束回圈時,不會執行else區塊
    else:
    print("沒有整數平方根")
    >>> 輸入一個正整數: 25
    >>> 整數平方根 5
    >>> 輸入一個正整數:11
    >>> 沒有整數平方根

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

    請問老師,為什麼else跟for是齊頭,而不是縮排在for迴圈底下呢

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

      因為這裡的 else 講的是和 for 對應的 else,在迴圈結束後去執行的程式

  • @chih-minglin8833
    @chih-minglin8833 6 ปีที่แล้ว +38

    range(n)改成range(n+1)
    輸入1 的開根號就會得到1了!XD

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

      感謝分享和回饋 :)

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

      @@cwpeng-course 的确。同样当输入0的时候,也会得到平方根是0了。

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

      @@YeLiuyouyaqq 但是0不是正整數...

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

      @@weitingwang415 if i*i==n &n!=0: 多加個判斷就可以囉!🙂

    • @LukeDong-e2o
      @LukeDong-e2o 3 ปีที่แล้ว

      是不是不管range(n+任何數)都不會改變結果阿

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

    請教一下,最後解平方根那題,我自己想出來是
    n=int(input("請輸入數字:"))
    if n**0.5%1==0:
    print(n**0.5)
    else:
    print("沒有整數平方根")
    這樣也可以解出來,邏輯上有任何不妥嗎?

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

      沒有問題哦,使用 ** 可以直接達成開根號的目的沒錯,也是最簡便的方式。教學中只是試著利用這個題目來學習迴圈的運作而已 :)

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

      @@cwpeng-course 謝謝老師~

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

    老師好,即使我沒有打else
    在迴圈下一行我打print,還是會印出55
    這樣是否else在這裡是不必要的?
    for n in range(11):
    sum+=n
    print(sum)

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

      可以這樣說,在這個簡單的例子中,確實不一定需要用 else

    • @user-kg7hb3jg6w
      @user-kg7hb3jg6w 4 ปีที่แล้ว

      我也想過這問題

  • @希跃何
    @希跃何 5 ปีที่แล้ว +3

    很详细,通俗易懂。大陆这边叫循环,不过能懂你的意思

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

    請問老師綜合範例裡面的
    print("整數平方根:",i)
    break

    print("整數平方根:",i)
    break
    差別在哪呢?
    為何我打第二個會是錯誤
    請老師指點,感謝

    • @温辰瑋
      @温辰瑋 2 ปีที่แล้ว +1

      不需要tab吧

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

      感謝 @温辰瑋 回覆,確實如此哦 ~

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

    請問老師~我在做"取平方根"的練習的時候,不小心把if打成while,結果如下:
    x=input("請輸入數字")
    x=int(x)
    for n in range(x+1):
    while n*n==x:
    print(n)
    break
    else:
    print("無")
    結果
    5

    可以請問這是甚麼意思嗎?

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

      那個 break 會作用在 while,不會作用在 for,所以程式邏輯就無法跳過最後的 "無" 這個字。

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

    老師,在平方根那邊,如果輸入0或1,照一般數學是有答案的,用這個函式跑會跑出沒有平方根,這是這個函式的bug。

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

      可以把range(n)改成range(n+1)應該就解決了 但一開始輸入的條件要多一個0 因0不是正整數

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

      感謝 @Tim000李彥鋒 的分享 :)

  • @小灰灰-m4b
    @小灰灰-m4b 3 ปีที่แล้ว

    for c in 'hello':
    print(c)
    else:
    print(c)
    for c in 'hello':
    print(c)
    print(c) 彭彭老师你好,我想问一下 这俩个for循环 输出结果也一样啊 else的具体实际作用是啥??

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

      如果在回圈中额外搭配 break 指令,就会有些差别喽 ~

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

    老師,請問 continue的簡易範例中,那個最後的n,我可以當做「在x列表中不是偶數的個數」嗎?
    所以感覺像是把x列表中的資料以if判別出偶數的個數踢掉,剩下的個數即是最後的n
    以上是我把列表中的數字多增加實際去跑歸納出來的想法,這樣理解可行嗎?

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

      可以哦,我覺得沒太大問題 :)

  • @冯伟佳-w6p
    @冯伟佳-w6p 4 ปีที่แล้ว +1

    Good job

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

    老師好:
    y=input("數入正整數: ")
    y=int(y)
    z=0
    for x in range(y):
    if x*x==y:
    print("平方根數: ", x)
    break
    elif x*x>3:
    z=z+x
    else:
    print("無")
    print(z)
    數入正整數: 25
    平方根數: 5
    9
    想請教:z=9是怎麼算出來的?謝謝老師

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

      你的 elif 會在 x 是 4 和 5 的時候執行,累加到 z 中,最後就是 9。

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

      @@cwpeng-course 謝謝老師

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

      ​@@cwpeng-course 老師你好 我前天剛開始看您的影片自學
      謝謝您拍攝的影片讓我看得非常清楚
      上面這位同學提出的問題
      以學生今天學習理解後不知道是不是這樣:
      因為輸入Y = 25 所以在X=5之前程式都不會Break
      但因為elif z設定x*x>3 所以x=5之前的x=2.3.4都匯累加
      所以造成z=2+3+4=9 跑了3段
      又因5*5==25程式結束不會跑到elif這段z的累加
      不知道學生這樣見解正不正學!?

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

    請問老師,我注意到break 可以控制到if 上一層的for 迴圈,以後應用break 這個指令時,可以控制到往上幾層的指令啊?

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

      我實驗出來是1層

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

      感謝 @Justin Wu 的回應,是一層沒錯哦 ~

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

    想問一下15:50 那個else功能是不是多餘呢?
    還是說有什麼不一樣嗎

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

      不是哦,他會在最後,把加法的結果印出來。如果拿掉,就看不到結果了。

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

      sum=0
      for n in range(11):
      sum+=n
      print(sum)
      老師,我的意思是這樣,還是說這邊只是單純介紹else在for迴圈裡的用法呢

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

      @@raja78902010 我也是有相同的疑問,如果把else拿掉也是印出55, 覺得再這邊else的用處不大?!

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

    請問彭彭老師:
    else:
    print
    跟最後在最外層print效果一樣
    差別在於一個在迴圈內;一個圈外(迴圈結束後)
    請問有什麼好的應用嗎?否則跟在外面直接寫print好像都一樣?
    只有搭配break才有意義?因為強制結束,導致一個print,一個不print
    這樣理解正確嗎?謝謝

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

      如果沒有else直接在外圍print會印出
      請輸入數字:81
      整數平方根: 9
      沒有整數平方根
      else再print的用意:在if的條件下若無法執行(輸入沒有整數的平方根的n)則會印出'沒有整數平方根'
      如果沒有else則不論如何都會印出'沒有整數平方根'
      我的理解 有錯請指正

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

      感謝 @JOANNE YEN 協助回應 :)

    • @John-le8ou
      @John-le8ou 5 ปีที่แล้ว

      怎麼好像沒回答的問題ww

  • @yu-chengchang550
    @yu-chengchang550 3 ปีที่แล้ว

    老師請問我的程式是否缺少
    File "c:\Users\OneDrive\桌面\python\loop-control.py", line 32, in
    n=int(n) #轉換成整數
    TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'
    PS C:\Users\OneDrive\桌面\python>

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

      要看你前面的程式賦予 n 變數什麼樣的資料了 ~

  • @施奕成-z6c
    @施奕成-z6c 6 ปีที่แล้ว +1

    請問一下,在5分30的時候,為什麼會印出n=2?
    在x=2的時候會整除,continue X=3不能整除,所以會跳過continue 此時n=3?所以會印出3?(我的觀念是不是錯了?這個n是不是指跳過continue的次數?

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

      迴圈會跑四次,x 分別是 1, 2, 3, 4,其中 x=2 和 x=4 的時候會執行 continue,導致 n+=1 命令被跳過。
      因此整個迴圈跑完之後,n+=1 這個命令只被跑兩次,代表 n 被加了兩次,最後就是 2 嘍 ~

    • @施奕成-z6c
      @施奕成-z6c 6 ปีที่แล้ว +1

      您是不是打錯了?應該是X是0,1,2,3?
      所以是指只要是False就會忽略continue 然後n就會往上加一 最後X停留在3 總共忽略了continue 兩次 所以n=2這樣嗎?

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

      哦哦哦,沒錯 x 是 0, 1, 2, 3 ~
      是的,你後面說的沒錯 :) ~

    • @施奕成-z6c
      @施奕成-z6c 6 ปีที่แล้ว +1

      謝謝老師

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

      彭彭老師您好:
      這邊我也不是很懂,我以為最後的n是3+1=4,n+=1不是表示n=n+1的意思嗎?最後一次加總怎麼不是3+1=4?為何最後的n會變成是跳過的次數?

  • @廖俊豪-m9d
    @廖俊豪-m9d 3 ปีที่แล้ว

    謝謝老師的教學!
    想問一個題外話,同樣的程式碼在Google Colab 是跑得出來,但在visual studio code 卻會出現錯誤,發現有" "或是()或是 : 時才會出現錯誤,但明明有注意英文書寫,想詢問看看,再麻煩老師解惑!

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

      你可能用複製貼上程式碼,要確定有沒有複製到一些特殊的,尤其是看不見的字元,會造成程式執行時的錯誤。

  • @阿飛阿基
    @阿飛阿基 5 ปีที่แล้ว

    彭彭老師好
    平方根的範例我自己練習如下,雖然輸出結果是一樣的,但是跟您所寫的不同。
    請問有哪邊需要改正嗎? 或是邏輯哪邊可以加強的嗎? 謝謝。
    x=int(input("輸入正整數:"))
    y=0
    while y*y < x:
    y += 1
    if y*y == x:
    print("平方根為:", y)
    else :
    print("沒有整數平方根")

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

      若只看你在留言中這段,
      if y*y == x:
      print("平方根為:", y)
      這兩行程式要往內做縮排哦 ~

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

      @@cwpeng-course @小肯 print("平方根為:", y)
      的下面不用break嗎?應該要有吧
      否則else那部分不是一定會被印出來嘛

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

      print("平方根為:", y)
      的下面不用break嗎?應該要有吧
      否則else那部分不是一定會被印出來嘛

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

      @@s406032002 對 !! 加上 break 就能直接結束不理會 else
      x=int(input("輸入正整數:"))
      y=0
      while y*y

  • @冬雪の迷子
    @冬雪の迷子 3 ปีที่แล้ว +1

    想問一下老師 最後找整數平方根 range(n) 不適從0開始到n-1嗎 我怎麼想都好奇怪

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

      對哦,就是從 0 到 n-1,一個一個去測試是否為正確的平方根答案 ~

    • @無名預言家
      @無名預言家 3 ปีที่แล้ว

      @@cwpeng-course 那這樣n=1就找不到平方根了

  • @葉培民
    @葉培民 3 ปีที่แล้ว

    彭彭老師好 我在聯席時有另一個疑問:
    我想求出立方根,用 下面的code可以,但請問為什麼把if換成while就會有問題 else怎樣都會被印出來就算用break 也還是印出來
    Code:1
    x=int(input("請輸入一正整數: "))
    for i in range (x+1):
    if i**3==x:
    print(x,"的立方根為",i)
    break
    else:
    print("此正整數無整數立方根")
    Code:2
    x=int(input("請輸入一正整數: "))
    for i in range (x+1):
    while i**3==x:
    print(x,"的立方根為",i)
    break
    else:
    print("此正整數無整數立方根")

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

      卡個, 想問老師break是不是只能用在條件語句後, 不能直接用在while裡面?

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

      裡面使用 while 會影響到 break 的運作,break 只會跳出內層的 while 迴圈,不會跳出外層的 for 迴圈。

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

    请问出现如下错误该如何处理呢?谢谢您。
    Suggestion [3,General]: 找不到命令 LoopControl.py,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为
    键入“.\LoopControl.py”。有关详细信息,请参阅 "get-help about_Command_Precedence"。

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

      您的命令应该要输入:python LoopControl.py
      试试看 ~

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

    老師好跟您請教
    n=0
    for x in [0,1,2,3,]:
    if x%2==0: # x 是偶數
    continue
    print(x)
    n+=1
    print('最後的 n:', n)
    若最後是是n+=1,因為跑了2次,所以最後的n是2,那若改成n+=2跑出來卻是4,n不是就是跑2次應該永遠都為2?
    不好意思這邊卡好久...

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

      n+=2 的意思是 n=n+2, 跑兩次變成n=(n+2)+2, 一開始n=0, 代進去就是4了

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

      感謝 @MrSilence 的說明,相當清楚 :)

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

    0:55
    break

  • @我就亂聊別介意
    @我就亂聊別介意 2 ปีที่แล้ว

    彭彭老師你好,請問在13:50的時候,為何剛開始要設定n=0不是x=0呢?
    print(x)後,n=n+1 ,這個被印出來的值,為何可以被放入n呢?

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

      n=n+1 是把 n 本身加 1,和 x 沒有關聯性。x 只是用來控制迴圈的運作。前面 n=0 給 n 一個初始值,不然沒辦法做後續的加法。

  • @可婷林-e8k
    @可婷林-e8k 2 ปีที่แล้ว

    彭彭老師 我不太明白其他留言說的用RANGE(N+1) 。是只有在n=1 的時候才會發生錯誤嗎?發生錯誤的原因又是甚麼呢?

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

      因為 n=1 的時候若使用 range(n) 就只會測試到 0,不會測試到 1,無法正確取得 1 開根號的結果 ( 也是 1 )

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

    老師請問
    n=0
    for x in [0,1,2,3,4]:
    if x%2==0:
    continue
    print(x)
    n+=1
    print("last number :", n)
    印出結果:
    1
    3
    last number : 2 ---------------------------- 請問為什麼不是3? 4也是偶數不是嗎?

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

      continue是指可以無視下面print(x)與n+1的部分 ,由於x%2==0 是指找出x這個列中的偶數,已知數列中0,2,4為偶數,由於
      if x%2==0:
      continue
      0,2,4 continue 直接回到了迴圈跑下個數字,不再做以下print(x)及 n+=1的處理
      所以內部迴圈只印出了非偶數的 1, 3
      而外部迴圈所跑的是 n 在這次迴圈中遇到非偶數而加一的結果
      也就是非偶數沒有遇到continue回到迴圈跑下一個,而是繼續往下跑的事件
      所以迴圈外部跑出的結果其實 n 只有加兩次1 (前面的 n= 0)
      所以印出結果:
      1
      3 (這個是非偶數的繼續跑print(x)的部分
      last number : 2 (這個是n遇到迴圈中非偶數的情況 +1)
      一開始我也不是很懂
      這部片重新看了三次理解了
      新手這個粗淺的回答還請不吝指教

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

      @@ririsuaki9707 非常感謝你!!

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

      感謝 @Rachel chung 回應 :)

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

    老師好,想問最後一個綜合範例,#用break強制結束迴圈時,不會執行else區塊
    那比如說輸入12,為何還是會跳到else?
    另外,如果把break拿掉,也是會有一樣的結果,那break在這邊是不是可以省略?
    謝謝老師!

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

      n=12 好像不是整數的平方根 所以 沒有整數i*i =12 所以不會有執行break 所以會跳到else
      如果我沒理解錯老師的意思的話

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

      感謝 @Zac Tu 的說明,很清楚哦 :)

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

      但這邊你如果把break拿掉,會變成不管你的輸入是不是完全平方數,結果都會有顯示else:內的輸出,因為沒有break跳出迴圈

  • @和和周
    @和和周 3 ปีที่แล้ว

    請問一下
    要寫重複無限次除了
    while True:
    ....
    以外有沒有別種寫法
    比如
    while :
    ...

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

      while True: 是很標準的寫法,任何可以被判斷成 True 的資料也可以,例如 while 1:

  • @行動方程式
    @行動方程式 3 ปีที่แล้ว

    老師您好
    想詢問一下,想問一下最後一個綜合範例,為什麼在定義i時需要用迴圈,是否能直接帶入,想問老師,以下如果這樣寫主要的邏輯問題在哪裡,再麻煩老師撥空回答,謝謝
    n=int(print("請輸入數字"))
    x=int(x)
    x

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

      1.在綜合範例之中,如果你今天輸入的數字是12,for i in range(12)的目的是執行0~11共12個數字的平方,去看看有沒有平方會等於12的
      2.你用x

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

      補用for 迴圈的寫法供參考:
      n=int(input("請輸入數字:"))
      for x in range(100):
      if x*x==n:
      print("整數平方根",x)
      break
      else:
      print("沒有整數平方根")

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

      感謝 @櫻花,散! 的詳細回應和分享哦 :)

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

    打卡學習!

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

    21:11
    break強制結束時,不會執行else區塊

  • @林翰仔
    @林翰仔 4 ปีที่แล้ว +7

    謝謝老師的教學,不過似乎2倍速比較剛好XD

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

      哈哈哈哈,好像很多人這麼說 ~~~~

  • @陳昱銓-z9x
    @陳昱銓-z9x 3 ปีที่แล้ว

    彭彭老師好 想問一下老師說 像最後一個讓使用者輸入數字的範例(語法) 那個課程的名字是甚麼呢?! 想特別了解那段

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

      你可以找找看系列課程的第二部或第三部吧:
      th-cam.com/play/PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk.html

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

    老師, 這是我照你課程練習做的語法, 目的是只顯示出開根號出來的數是整數, 若不是整數則顯示" 開根號出來的結果非整數", 但我試跑出現一個問題, 當我輸入為11時, 它還是會顯示開根號的結果為3.3166247903554 (非整數), 想問一下我的判斷試錯誤不知道在那裡。請老師幫忙看一下, 謝謝^^
    print("請輸入一個數字:")
    x=int(input())
    y=x **0.5
    z=y*y
    if z%x==0:
    print("開根號的結果為:",y)
    else:
    print("您輸入的數字開根號完不是整數")

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

      開根號後再乘回去,不會和原來的數字完全一樣,小數運算都會有些許的誤差在零下十幾位的地方,所以判斷邏輯不能這樣寫。

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

    我想問為什麼else不用tab?
    因為前幾課看到if的應用範列,if和else是整齊貼邊,但這裡好像又不同用法。

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

      else寫在外面是迴圈正常結束時執行,寫在裡面是if else的條件判斷,如果寫在裡面的話直到找到平方根前都會print沒有整數平方根

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

      感謝 @康博元 的回應,確實如此。要看我們的 else 是要對應到哪一個層次的語法而定 ~

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

    老師您好 我想請問最後一題(約21:26的地方)
    為什麼else與if並排結果會不一樣 直觀感覺可行?
    x=int(input("請輸入一個正整數:"))
    for i in range(x):
    if i*i==x :
    print(i)
    break
    else :
    print("沒有整數平方根")

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

      這樣的話 else 是對應 if,在迴圈中每次都會執行。範例中的 else 是對應 for,只有在迴圈結束之後,才會執行一次 ~

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

      @@cwpeng-course 意思是開根號不需要每次都執行else,前提之下是整數平方根,是等到結果不是整數平方根在來執行else就好了?

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

    老师,我很奇怪每次到n=input就不行,其他都可以运行,除了这个。反复检查了没有出错可就是一直显示
    File "loop-control.py", line 26
    n=input("a numbet: ")
    ^
    IndentationError: unexpected indent
    上一个课程也是n=input不运行。

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

      应该是因为程式码的前面多了一些空白哦 ~~~

  • @譚承柔
    @譚承柔 4 ปีที่แล้ว

    老師您好,有個問題想請教您
    1.
    x=int(input('寫出一個數字: '))
    for n in range(x):
    x+=n
    else:
    print('列印出總和: ',x)
    2.
    sum=0
    for w in range(11):
    sum+=w
    else:
    print('總和: ', sum)
    我的理解是
    如果第一個程式碼輸入11,才會加總1至10(同程式碼二),可是為什麼會是1加到11呢@@?

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

      我發現是x變數一開始是11, 所以x+=n→變成11開始加0+1+.......+10

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

      感謝 @楓天下 的回應,確實是如此。
      另外建立一個變數儲存總和,並且先指定為 0,就不會有這個問題嘍 ~

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

    3:10 精華

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

    老師您好,想請教一下,我試著用range來練習,但是我的這個算式出來,為什麼印出來顯示的
    最後的n: 3,而不是6呢?
    謝謝老師!
    n=0
    for x in range(0,7):
    if x%2==0:
    continue
    print(x)
    n+=1
    print("最後的n:",n)

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

      因為當x=2,4,6,在continue那邊程式會直接跳到下一圈for,不會經過n+=1,也就是說只有在x=1,3,5的時候n會累加,所以等於3

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

      @@20044442001 懂了,非常感謝!:)

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

      感謝 @李晟豪 的回應哦 :)

  • @musicnotec.3325
    @musicnotec.3325 ปีที่แล้ว

    最後的那個小程式如果輸入1答案是不是就錯了,因為1是1的平方根,所以是不是應該改成for i in range(n+1):

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

    老師 請問可以把下面程式中的x都改成n嗎?(因為嘗試過,結果一樣)
    n=0
    for in [0,1,2,3,4]:
    if x%2==0:
    continue
    print(x)
    n+=1
    print("最後的n:",n)

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

      在這個程式中會是一樣的結果,但其實概念不一樣哦,所以不是任何程式都可以替換的。
      x 是從列表中一一取得的值,n 則是我們自己控制從 0 往上加一,只是剛好列表中是 0, 1, 2, 3, 4 所以結果一樣 ~

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

      @@cwpeng-course 謝謝老師的解答!

  • @Isa-d6h
    @Isa-d6h 4 ปีที่แล้ว

    彭彭老師好
    我想知道為什麼我跑了下面的程式,輸入4以外其他有平方根的正整數之後還是會跑出沒有"整數平方根"?
    n=input("請輸入一個數字: ")
    n=int(n)
    for i in range(n):
    if i**i==n:
    print("整數平方根 ",i)
    break
    else:
    print("沒有整數平方根")

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

      也許你可以把程式執行結果列出來,我們比較好替你看喔

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

      是 if i*i==n: 哦,只有一個 *

    • @Isa-d6h
      @Isa-d6h 4 ปีที่แล้ว

      @@cwpeng-course 感謝老師的解答,沒問題了喔!