Python 函式參數詳解:參數預設值、名稱對應、任意長度參數 By 彭彭

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024
  • 喜歡彭彭的教學影片嗎?點擊「加入」按紐取得更多會員服務哦。
    加入會員: / @cwpeng-course
    1. 參數預設資料
    1.1 定義參數的預設值
    1.2 呼叫函式時,可不給資料,直接使用預設值
    2. 參數名稱對應
    2.1 呼叫函式時,用參數名稱來對應資料
    3. 任意長度的參數
    3.1 定義任意長度的參數
    3.2 使用 Tuple 處理參數
    3.3 呼叫函式時,可給定任意長度的參數資料
    更多學習資訊,
    請到彭彭的課程網站:training.pada-...

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

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

    老師教得太好了,提到過去課程上的一些名詞還會複習一下真棒!

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

      謝謝哪 :) 希望對你有幫助就好 ~

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

    老師教學真的是既仔細又清晰,真的是救世神啊!

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

      謝謝哪,很高興對你有幫助 :)

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

    謝謝老師的課程 其實初學者最需要學的就是老師在課常中提到對程式高手來說非常簡單的東西
    對初學者卻是搞不懂的東西 真的要一步一步來

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

      謝謝你的回饋,很高興對你有幫助 :)

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

    謝謝彭彭老師的教學,讓我們非本科生受益良多!
    課程中沒有提到對於平均值(無限/不定參數)input應該如何設定,上網查資料想解決自己的困惑,最終於google大神們的幫助下得出幾行指令,終於可以input了!!!
    def avg(*num):
    sum=0
    for n in num:
    num+=n
    else:
    print(num/len(num))
    x = eval(input("請輸入數字串: ")) #對str做計算,int()無法
    avg(*x)
    (TEST)
    Input:12,14,16
    Ans:14
    Input:20,-10,15,15
    Ans:10

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

      很棒的分享哦,肯定會對大家有幫助的 :)

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

      num=+n >>>> sum=+n,print(num/len(num)) >>>> print(sum/len(num)) 幫你糾錯 : )

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

    很喜歡老師講課的語速,講課內容很詳細清楚,影片呈現方式十分易懂 !
    謝謝老師無私分享

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

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

  • @90weker29
    @90weker29 3 ปีที่แล้ว +3

    謝謝老師的細心教學,影片介紹非常詳細,讓新手能夠消化吸收

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

      不會,謝謝你的回饋 :)

  • @bigo.kn1599
    @bigo.kn1599 ปีที่แล้ว +1

    上了7堂克,發現老師講解好仔細
    完全可以懂耶,講話速度剛剛好
    適合在邏輯中建立倒轉思維
    目標看完41堂(加油

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

      讚讚,謝謝你詳細的回饋,覺得很棒 :)

  • @余岱原
    @余岱原 3 ปีที่แล้ว +1

    def avg(*ns):
    sum=0
    for n in ns:
    sum+=n
    print(sum/len(ns))
    n1=int(input('Enter how many numbers want to calculate: '))
    numbers=[0]*n1
    for n2 in range(1,n1+1):
    a=int(input('Please enter number %s is: ' % n2))
    numbers[n2-1]=a
    numberstuple=tuple(numbers)
    print(numberstuple)
    avg (3,4,5)
    avg (numberstuple)
    老師您好,看了您的教學之後嘗試了撰寫互動式的程式以重現您在這個影片的最後一個程式,程式碼如上,該程式分為3段,第一段是為計算平均數的函數,第二段具有讓使用者自行建立字串並轉換為有序陣列的程式,第三段為利用第一段的函數計算第二段由使用者輸入所產生的數列中的平均值。想請教的問題是如果將第二段程式碼『獨立』運行是可以產生有序數列的,將第一以及第三段(不包含"avg (numberstuple)")『獨立』運行也可以計算出有序數列(3,4,5)的平均值,這一點再麻煩老師利用分段執行程式進行確認。不過如果想要將整個程式一起運行時就會發生問題,第一段函數似乎不接受我利用第二段程式產生的有序數列,有關於這一點我想想老師請益一下原因為何,十分感謝您。

    • @余岱原
      @余岱原 3 ปีที่แล้ว

      老師您好
      抱歉我剛剛自己試出來了
      def avg(ab):
      sum=0
      for n in ab:
      sum=sum+n
      print(sum/len(ab))
      n1=int(input('Enter how many numbers want to calculate: '))
      numbers=[0]*n1
      for n2 in range(1,n1+1):
      a=int(input('Please enter number %s is: ' % n2))
      numbers[n2-1]=a
      numberstuple=tuple(numbers)
      print(numberstuple)
      avg (numberstuple)
      要這樣子才可以,也在這邊提供經驗給共學者討論,謝謝老師

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

      能自己試出來很棒哦 :)

    • @余岱原
      @余岱原 3 ปีที่แล้ว

      @@cwpeng-course 十分感謝老師的指點,期待未來有更多機會能夠與老師請益,謝謝您🙂🙂🙂

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

    #參數的預設資料
    # def power(base,exp=0):
    # print(base**exp)
    # power(3,3)
    # power(4)
    #使用參數名稱對應
    # def divide(n1,n2=1):
    # print(n1/n2)
    # divide(5,10)
    # divide(n2=10,n1=5)
    #無限(不定)參數資料(tuple)
    # def avg(*ns):
    # print(ns)
    # avg(3,4)
    # def avg(*ns):
    # sum=0
    # for x in ns:
    # sum+=x
    # print(sum/len(ns))
    # avg(3,4)
    # avg(3,4,10,55)

  • @リシンコウ
    @リシンコウ 3 ปีที่แล้ว +1

    适应了彭彭老师的教课风格,很是感谢老师的Python课程。

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

      不会呦,希望对你有帮助 :)

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

    感謝老師,這一系列影片不論是對剛上手Python,還是會python的都有幫助~!

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

    謝謝你用心的教學!!學到太多有用知識了!

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

      很高興對你有幫助哦,也謝謝你的回饋 :)

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

    感謝老師,我看別的網課學習python每次看一點就放棄了,因為老是卡殼也不知道為什麼要這麼操作,彭彭老師的視頻拯救了我,感謝🙏

  • @user-bk3zt8sp1dfnodes
    @user-bk3zt8sp1dfnodes 5 หลายเดือนก่อน +2

    tuple的 資料長度,能取到。18:10 len()
    14:53 ,這很好用。不定參數;tuple是【有(時間)序列(可分析)表,如果有time( 自動時間戳記)、sleep(
    自動載入 和 發呆( idle ))就更好用了。。】。

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

    最後在寫平均數時,因為都會固定複習前面影片學過的東西,就自己想出來應該可以用len(ns)當分母了,好開心!感謝老師的教學

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

      哈哈哈,很高興你能自己連結在一起,很棒 :)

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

    老師一直笑場,感覺更親切...謝謝老師您 戲心的教學,老頭子 挺進第十堂課了

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

      哈哈哈,不客氣,很高興對你有幫助 :)

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

    謝謝作者的製作。

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

    謝謝老師的詳細講解!真的很有幫助!

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

    非常實用,感謝老師的錄製

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

    老师讲得真的非常非常非常的好!真好好好好好!

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

    謝謝老師的教導~~解釋的好清晰!!

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

      不客氣,也謝謝你的回饋!!

  • @苏玉超
    @苏玉超 5 ปีที่แล้ว +2

    讲解的很详细,跟着真的能学会,感谢老师!

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

    感謝老師,這次的課程也是清晰明白!!

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

    老师讲的太好了,我每天都学习一节课

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

    謝謝老師,

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

    期待很久了~希望彭彭老師能持續更新!影片介紹非常詳細

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

      謝謝,會持續上線新的內容 :) ~

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

    首先,再次感謝有彭彭老師的課程
    自己雖然是念其他領域,但希望未來多學習軟體相關課程
    聽老師的課程很淺顯易懂未來也想這邊發展!!!
    我有兩個問題:
    1.# 若想讓使用者自己輸入數字串
    def avg(*ns): # 要做 "平均數"的功能
    sum=0
    for n in ns:
    sum=sum+n
    print(sum/len(ns)) # 這邊 len(ns) 代表 列表的長度
    x=eval(input("請輸入數字串: "))
    avg(x)
    我照上述執行,系統一直跟我說會有問題,跑出下方提示
    Traceback (most recent call last):
    File "lession 9.py", line 86, in
    avg("x")
    File "lession 9.py", line 82, in avg
    sum=sum+n
    TypeError: unsupported operand type(s) for +: 'int' and 'str'
    2. 本身是光電領域相關,若想朝軟體發展
    a.彭彭老師會建議有甚麼方向可以練習(目前看老師的影片學習Python 基礎與應用)
    b.對於想望這邊發展有甚麼甘苦談或是要去求職前能怎麼增加自己競爭力

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

      1. 要看你實際上輸入了什麼內容,才能判斷為什麼會出錯哦。
      2.
      我這邊目前主要提供的是 Flask 後端開發的進階課程,可以針對後端工程師的職位學習。
      如果不是相關科系,原則上就是要有些作品來證明自己的程式開發能力,這個是最重要的。

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

      avg(x) >>>> avg(*x)

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

    謝謝老師用心的教學!

  • @張黴菌
    @張黴菌 5 หลายเดือนก่อน +1

    老師您好我想請問sum=0為何要放在def裡,放在def之前像是以下程式這樣系統會說不知道sum這個變數,可是我不是在def之前已經宣告變數了,為何會這樣?覺得很玄
    sum=0
    def avg(*n):
    for m in n:
    sum=sum+m
    print(sum/len(n))
    avg(3,4,5)

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

    感謝老師 找時間來訂閱贊助你!

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

      謝謝你的回饋和支持 :)

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

    重新學習再來拜見!!

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

    很棒的教學!

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

    彭彭老師 謝謝你!!

  • @Rance111
    @Rance111 10 หลายเดือนก่อน +2

    老師有沒有講解涵式裡面呼叫函式
    比如:
    def greeting():
    print("Hello World!")
    greeting()

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

      沒有哦,不過概念類似,就只是再呼叫一次自己,以你的程式來說會跑不完。

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

    您好 在最後無限/不定參數資料的部分
    我在python3.9會出現兩組數值 比如avg(3, 4) 會出現1.5跟3.5
    顯而易見是3+0/2 跟 0+3+4/2的結果
    但回1.5並沒有意義也不需要所以我將程式碼改成
    def avg(*ns):
    s = sum(ns)
    result = [s/len(ns)]
    return result
    avg(3, 4)結果就會只有3.5了
    想問還有沒有建議的做法 謝謝!

    • @張育華-p4j
      @張育華-p4j 3 ปีที่แล้ว +2

      會出現1.5的答案是因為 print(sum/len(ns)) 寫到for的區塊裡。所以才會出現1.5和3.5兩個值
      不過您的寫法我也學到了。

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

      感謝 @張育華 的回應和說明 :)

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

    2021/05/24
    #參數的預設資料
    def power(base,exp=0):
    print(base**exp)
    power(3,2)
    power(4)
    #使用參數名稱對應
    def divide(n1,n2):
    print(n1/n2)
    divide(2,4)
    divide(n2=2,n1=4)
    #無限/不定 參數資料
    def avg(*numbers): ## Tuple 有序列表
    for n in numbers:
    print(n)
    avg(1,4,-1,-8)
    def avg(*ns):
    sum=0
    for n in ns:
    sum=sum+n
    print(sum/len(ns)) ##ns 是一個列表 Tuple
    avg(3,4)
    avg(3,5,10)
    avg(1,4,-1,-8)

  • @坤億陳
    @坤億陳 3 ปีที่แล้ว

    受益良多 感謝。

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

    def a(n1,n2):
    b=n1**n2
    return b
    -
    a(3,3) --> 終端機無法跑出結果
    v=a(n1=2,n2=3)
    print(v) ---> 順利跑出答案8
    -------
    彭彭老師,你好^^
    請問一下為什麼當有兩參數時,
    return反而無法透過a(3,3)呼叫函式得出結果?
    備註:上一堂課,測試過如果只有單一參數,return可以順利透過呼叫得到結果

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

      a(3,3) 也是有結果嘍,只是你沒有把回傳值像下面的程式一樣印出來,
      如果想要看到回傳值,可以寫:
      v=a(3,3)
      print(v)

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

    教的好清楚

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

    @預設資料@
    # -------------
    def 函式名稱(參數名=預設資料):
    函式內部的程式碼
    # 參數msg預設資料為"Hello"
    def say(msg = "Hello"):
    print(msg)
    say("Hello Function") # 印出 Hello Function
    say() # 印出 預設資料 Hello
    # -------------
    @名稱對應@
    # -------------
    def 函式名稱(名稱1, 名稱2):
    函式內部的程式碼
    # 呼叫函式,以參數名稱對應資料
    函式名稱(名稱2=3, 名稱1=5)
    # 定義一個可以做除法的函數:
    def divide(n1, n2):
    result = n1 / n2
    print(result)
    divide(2,4) # 印出0.5
    divide(n2=2, n1=4) # 印出2.0
    # -------------
    @無限/不定 參數@
    # -------------
    def 函式名稱(*無限參數))):
    無限參數以Tuple資料型態
    處理函式內部的程式碼
    # 呼叫函式,可輸入無限數量的參數
    函式名稱(資料一,資料二,資料三)
    #
    # 函式接受無限參數msgs
    def say(*msgs):
    # 以Tuple的方式處理
    for msg in msgs:
    print(msg)
    # 呼叫函式,傳入三個參數資料
    say("Hello","Arbitary","Arguments")
    >>> Hello
    >>> Arbitary
    >>> Arguments
    # --------------
    # 參數的預設資料
    # ----01
    def power(base,exp):
    print(base**exp)
    power(3,2)
    power(4)
    >>> 9
    >>> TypeError
    # ----02
    def power(base,exp=0):
    print(base**exp)
    power(3,2)
    power(4)
    >>> 9
    >>> 1
    # --------------
    # 使用參數名稱對應
    # --------------
    def divide(n1, n2):
    print(n1/n2)
    divide(2,4)
    devide(n2=2,n1=4)
    >>> 0.5
    >>> 2.0
    # --------------
    # 無限/不定 參數資料
    # --------------
    def avg(*ns):
    print(ns)
    avg(3,4)
    avg(3,5,10)
    avg(1,4,-1,-8)
    >>> (3, 4)
    >>> (3, 5, 10)
    >>> (1, 4, -1, -8)
    # ----
    def avg(*ns):
    for n in ns:
    print(n)
    avg(3,4)
    >>> 3
    >>> 4
    # ----求平均數
    def avg(*ns):
    sum = 0
    for n in ns:
    sum = sum + n # sum+=n
    print(sum/len(ns))
    avg(3,4)
    avg(3,5,10)
    avg(1,4,-1,-8)
    >>> 3.5
    >>> 6.0
    >>> -1.0

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

    老師 請問您有講解 在Function內的(雙**) 意思嗎?
    我現在終於明白「無限參數」,但是前幾天心血來潮去嘗試編寫Discord Bot有看到Function內有Main(*args, **kwargs),我搞不太清楚 **kwargs 是什麼意思

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

      +1,我也想知道

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

      他可以讓函式接受任何帶有名稱的參數輸入,並且存成一個字典,可以試著執行以下程式看看:
      def test(**kwargs):
      print(kwargs)
      test(a=3, b=4, c=5)
      test(x=3, y=4, z=5)

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

    說得很清楚而且很易懂,唯一想說的是0**0呢?

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

      謝謝 :)
      是指 0 的 0 次方嗎?我剛剛試了一下跟數學定義一樣會得到 1

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

    def power(base,exp=0):
    print(base**exp)
    power(3,3)
    我本來想說為什麼不是印出none 而是9
    後來想到 這是迴圈裡面的Print 而不是跳出來後再print ,所以不受return影響

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

      感謝你的經驗分享哦 :)

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

      印出的應該是27吧? 3的3次方

  • @林冠樺-v5w
    @林冠樺-v5w 4 หลายเดือนก่อน +1

    老師請問avg()裡面可以預設一個tuple嗎?
    例如如果都不輸入的情況下預設為(1,2,3)

  • @曾紹幃
    @曾紹幃 4 ปีที่แล้ว

    def avg(*ns):
    total=0
    m=0
    for m in ns:
    total+=m
    print(total/len(ns))
    n=int(input("請輸入平均數字的數量:"))
    if isinstance(n,int):
    x=[0]*n
    for i in range(n):
    print("第",i+1,"位:")
    x[i]=[int(input())]
    a=[ ]
    for j in range(n):
    a=a+x[i]
    avg(tuple(a))
    這段程式會把for迴圈內的m轉成tuple(這樣會讓函式內total跟m無法相加) 就算在後面加上int(m)也沒有用
    請問老師 為什麼m會轉成tuple
    又要怎麼解決?

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

      ns 會吃到你給的 tuple(a),所以印出來就是 tuple 了,最後面呼叫 avg 的時候,按照影片的作法一一把數字放進去就可以,不需要事先轉換成 tuple 嘍 ~
      真的要轉換成 tuple,定義時就不需要使用不定長度參數這個概念,只要一般參數就可以了。

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

    總覺得每次寫到程式練習題都好像複習數學,因為我都忘光啦~~~~(問了朋友還被罵QQ

  • @王森林
    @王森林 3 ปีที่แล้ว +1

    謝謝老師!不知道有沒有對陣列直接運算(平均)的函數呢?

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

      可以用 statistics 模組:
      import statistics
      data=[11, 21, 11, 19, 46, 21, 19, 29, 21, 18, 3, 11, 11]
      result=statistics.mean(data)

    • @王森林
      @王森林 3 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師

    • @王森林
      @王森林 3 ปีที่แล้ว

      @@cwpeng-course 謝謝老師

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

    彭彭老師您好:
    如果函式名稱(*無限/不定參數),直接將設定好的參數名稱加上*,是否等同於直接呼叫函式並執行函式?
    以下為個人練習,懇請不吝教導,感謝。
    nums1 = tuple(map(int, input("輸入要計算的值: ").split()))
    def avg(*nums1): # *加上參數名稱,無限/不定參數以Tuple資料型態處理
    sum = 0
    for i in nums1:
    sum += i
    print(sum / len(nums1))
    avg(*nums1)

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

      不會說加上 * 就等同於直接呼叫函式哦,呼叫函式還是從:函式名稱() 這樣觸發的,你的程式中就是最後一行的 avg() 這個部份。

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

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

  • @麻雀不會呱呱叫
    @麻雀不會呱呱叫 3 ปีที่แล้ว +1

    有沒有辦法有兩個無線參數

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

      例如? 這問題很像一個無限還是兩個無限比較多哈哈哈

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

      不行哦 ~

  • @李明璋-t8o
    @李明璋-t8o 3 ปีที่แล้ว

    看了七部就決定訂閱會員!!! 初學者誠心學習XD
    想詢問老師avg的函式 sum=sum+n 出現在"縮排內"是否就開始進行迴圈,直到拆解完畢才進入print

    • @李明璋-t8o
      @李明璋-t8o 3 ปีที่แล้ว

      已經申請加入臉書會員社團~~~ 未來勞煩老師釋疑了XDD

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

      感謝你的回饋和支持哦 :)
      出現在縮排內代表是在迴圈內部,會隨著迴圈一起運作,直到迴圈運作結束後,才 print 印出結果沒錯 ~

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

    彭彭老師想請教一題考古題 題目如下
    def a(v1):
    def b(v2):
    return v1**v2
    return a
    a1=a(5)
    print(a1(3))
    想請問為什麼答案是125 還有第八行為什麼不行直接print(a1)一定要加(3) 程式才跑得出來

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

      最後的答案是 5 的 3 次方所以是 125。a1 會是一個函式,所以你要呼叫函式並且給定參數的值才能夠執行函式,並取得回傳值。

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

      @@cwpeng-course 謝謝彭彭老師 大致理解了

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

      我實作的結果發現,考古題中的 return a 要改成 return b 才會得到 答案 125

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

      @@wenwenwen2088
      v1=5
      def b包在def a裡,但最後return b,所以def a = def b = a1
      所以最後print a1(3)= b(3) ,代表v2=3
      最後從def b 中return 得出 v1**v2 = 5**3 =125
      請問以上有誤解的地方嗎

  • @Eric-x3f9i
    @Eric-x3f9i 4 ปีที่แล้ว

    老師您好,我想問一下
    把影片最末的函式改成
    def avg(*ns):
    # sum=0
    # for x in ns:
    # sum+=x
    # return sum/len(ns)
    再呼叫 avg(3,4),為什麼沒顯示出值?

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

      print 會直接印出結果,改成 return 是把結果回傳,就不會印出來了。
      先確認理解回傳的意義之後,就可以按照自己的需求改程式,把呼叫地程式調整如下:
      result=avg(3,4)
      print(result)

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

    老師您好
    有看到別人寫的函式程式碼為
    def f(x,y,z):
    return x+y+z
    print(f(1,20,300))
    有些疑惑,函式內部執行的算式可以直接利用return執行?
    也可以直接利用print呼叫函式嗎?
    因為沒有看到呼叫函式的程式碼

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

      return 後面接一個資料,可以直接寫 return 3,或者是一個運算得到的資料,例如 return x+y
      仔細看 print() 裡面的 f(1,20,300) 就是呼叫函式的程式碼哦,只是寫在一起,後面的 print(f(1,20,300)) 也可以拆解為:
      result=f(1,20,300)
      print(result)

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

    老師,我想請問第一個範例為甚麼不能只預設 n1 不預設n2 ,
    例如 def a (n1=2,n2):
    print(n1**n2)
    a(n2=2)
    這樣打程式是錯的
    請問為什麼??
    ___________
    還有無限參數的部分sum=0為什麼不能放在程式最外面??
    是因為沒有在定義裡面所以算到嗎?

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

      這是一個規定,也就是有預設的參數一定要放在後面。
      因為我打算讓 sum 這個變數在函式中運作,每次函式被呼叫都會先被歸零,放在最外面,就只會在程式執行時歸零一次,後續的函式呼叫就都不會先歸零。

  • @陳泰豪-e1q
    @陳泰豪-e1q 5 ปีที่แล้ว

    謝謝老師的教導,但是最後的無限參數都照著老師的程式碼打卻終端機卻沒有任何顯示,附上程式碼還請老師能指導一下!謝謝!
    def avg(*ns):
    sum=0
    for n in ns:
    sum=sum+n
    print(sum/len(ns))
    avg(3,4)
    avg(3,5,10)
    avg(1,4,-1,-8)

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

      程式碼的縮排要注意哦:
      print(sum/len(ns))
      avg(3,4)
      avg(3,5,10)
      avg(1,4,-1,-8)
      這四行都多縮了一層。

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

    看了1-10的影片,用1-10的影片做了一個簡單計算機,自己試寫的靈感,很謝謝有讓我學到,但還不會輸入數字以外也顯示訊息告知使用者,所以還有一個會報錯誤
    def addoutput():
    while True:
    aa=input('輸入數字(結束請輸入@):')
    if aa=='@':
    return
    aa=int(aa)
    while True:
    add=input('請輸入加減乘除(重新計算請輸入#)(結束請輸入@):')
    if add=='+':
    aa_2=int(input('輸入數字:'))
    bb=aa+aa_2
    print('答案:',bb)
    aa=bb
    continue
    elif add=='-':
    aa_2=int(input('輸入數字:'))
    bb=aa-aa_2
    print('答案:',bb)
    aa=bb
    continue
    elif add=='*':
    aa_2=int(input('輸入數字:'))
    bb=aa*aa_2
    print('答案:',bb)
    aa=bb
    continue
    elif add=='/':
    aa_2=int(input('輸入數字:'))
    bb=aa*aa_2
    print('答案:',bb)
    aa=bb
    continue
    elif add=='#':
    break
    elif add=='@':
    return
    else:
    print('只能輸入加減乘除四個符號')
    addoutput()

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

      很棒的練習和分享,能自己去完成一些想做的操作是很有意義的 :)

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

    # 使用參數的名稱對應
    def divide(n1,n2):
    print(n1/n2)
    divide(2,4)
    divide(n2=2,n1=4)
    為何印出的是
    0
    2
    是否是第一個沒有印到小數點後呢?
    像是我單打
    x=7/3
    print(x)
    也只會印出2
    請問是程式本身的問題嗎?

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

      你可能是使用了 python 2 的版本,會將 / 做整數除法,忽略小數的部分。
      建議升級到 python 3 來做學習。

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

    老師您好
    想請問可以給無限參數預設值嗎?
    例如
    def avg(*ns=(3,4)):
    sum=0
    for n in ns:
    sum=sum+n
    print(sum/len(ns))
    avg()

  • @林立亞
    @林立亞 2 ปีที่แล้ว

    請問彭彭老師 最後一段 def avg(*ns): 為什麼ns前要加 * ? (影片15:40處) 謝謝
    反覆聽了幾次只有提到 星星+numbers

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

      * 代表無限參數,影片: 4:59 開始有解釋~

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

      感謝 @Penny Lin 說明 :)

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

    無法接受也太可愛

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

    老師這樣呼叫可以?
    def divide(n1,n2,n3):
    print(n1/n2+n3)
    divide(n2=10*20,n1=n2+2,n3=n1/10+n2)

  • @Andrew-rw4op
    @Andrew-rw4op 3 ปีที่แล้ว

    老師打擾了
    想問一下 假如說想配合迴圈以及函式 來做一個平均數的計算
    該如何利用迴圈將每一次所輸入的數字丟進計算平均的函數呢?
    例如說 輸入0來結束迴圈
    我打
    6 (enter)
    4 (enter)
    0 (enter)
    最後出來的結果是:5

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

      可以搭配 List 來操作,每次輸入都把資料加入 List 中,最後再把所有資料取出來算平均數。

    • @Andrew-rw4op
      @Andrew-rw4op 3 ปีที่แล้ว

      @@cwpeng-course 謝謝老師!!問題解決了!

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

    請問一開始定義函式時,ns為什麼要加*呢,後面在print時為什麼不用星號呢?謝謝

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

      用來表達這個參數名稱可以接受任意長度的參數,所以傳遞進來的多個參數資料都可以透過這個名稱來取得,後續使用就只要使用那個名稱就可以了。

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

    不好意思,我想問為什麼無限參數資料最後一行不能寫成return (sum/len(ns))呢?謝謝。

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

      剛剛嘗試了一下,沒有不行耶

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

      感謝 @錦蓮林 的回應。確實應該是可以,或許可以貼上錯誤訊息來看看 ~

  • @Gary-fq1ti
    @Gary-fq1ti 4 ปีที่แล้ว

    请问彭彭老师:def divide(n1,n2):
    print(n1/n2)
    divide(2,4)
    divide(n2=2,n1=4)
    为何结果出现的是0,2而不是0.5,2呢?

    • @刘小顺-l4j
      @刘小顺-l4j 4 ปีที่แล้ว

      你程式码print(n1/n2)那里是不是多打了个/,你这个结果很像整数除法的运算结果

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

      因为是执行整数除法,不会处理小数的部份哦。
      要处理小数的部份,要写成 print(n1//n2)

  • @陳柏霖-e2j
    @陳柏霖-e2j 5 ปีที่แล้ว

    老師您好
    def value(x=2,y=3):
    z=x**y
    return z
    print(value(4))
    我把x和y都預設了
    程式印出來結果是4^3=64
    為甚麼4是會代替x而y是用預設值
    而不是4代替y,x是預設值呢?
    如果我要讓4代替y的話要怎麼做
    謝謝老師

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

      預設是前面的參數,如果要y要寫y=4

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

      感謝樓上的回答 :)

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

    彭彭老師可以問個問題嗎?
    呼叫自定義函式()中的參數資料可以使用list 或是 tuple 而非直接輸入嗎?
    如果 A=[1,2,3], f(A)就能得到想要的結果 感覺會比呼叫 f(1,2,3)來的便利許多
    --------------------------------------- 函式練習 ---------------------------------
    # 定義正規化向量函式 某向量進來 會印出各單位向量並回傳單位向量列表
    def normalize(*Tuple1):
    if len(Tuple1)

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

      彭彭的課程 感謝~ 原來修改*就好了 想說不知道輸入進去的資料有多長就加*了

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

      讚讚 :)

  • @黃子玹-k3d
    @黃子玹-k3d 4 ปีที่แล้ว

    老師:
    關於可以輸入無限參數的函式...
    請問我可以設定動態長度的touple嗎?
    要傳到函式的值可以是touple嗎?
    舉例來說~ 我可以使用input來一直輸入我要算平均的數字,並設while讓他判斷我輸入0他會break,之後利用touple傳到函式計算

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

      可以的。
      若你自己準備好一個資料的列表,就不一定要使用無限參數的函式,用單一參數把列表傳進去就可以 ~

    • @黃子玹-k3d
      @黃子玹-k3d 4 ปีที่แล้ว +1

      彭彭的課程 好的👌謝謝彭彭老師解惑!

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

    請問為何無限參數不是list的方式儲存呢?為何一定是tuple?不太了解這跟其不可動的特性有何關聯,謝謝!

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

      這倒也沒為什麼,就是 Python 內部的運作機制,可能他不太希望你去更動最原始的參數內容 ~

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

    老師,我遇到問題 我照著打這組程式
    //
    def avg(*ns):
    for n in ns:
    print(3,4)
    avg(3,4)
    //
    出來的結果卻顯示現二次3 4:
    3 4
    3 4
    而不是
    3
    4
    為什麼呢?

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

      你的print(3,4)打錯了,應該是print(n)
      大約在17:13的地方

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

      @@Urania_. 謝謝

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

      感謝 @張米拉 的說明 :)

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

    想請教如何於def avg(*ns):
    # print(ns)
    sum=0
    for n in ns:
    # print(n)
    sum=sum+n
    print("平均:",sum/len(ns))
    print("總和:",sum)
    後面建立一個迴圈,讓使用者逐項輸入資料後,再呼叫avg函式算出基本統計數據 總和,平均。
    謝謝喔!

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

      看來你已經寫完了呀 XDDDD

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

      謝謝回覆,但是除了這樣avg(29,2,21,10,22)逐項輸入後呼叫 ,能否使用input 搭配 迴圈設定終止條件存入列表,然後再呼叫函式,輸出關於剛剛輸入的數字平均與總和。 3Q~自覺還是新手...

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

      @@haungsir8992 不過就算搭配 input 也一樣要逐項輸入不是嗎 (

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

    老師您好, 想請教
    #使用參數名稱對應
    def divide(n1,n2):
    print(n1/n2)
    divide(2,4)
    divide(n2=2,n1=4)
    跑出來的答案是
    0
    2
    沒有小數點...請問該怎麼調整呢

    • @以撒-z2z
      @以撒-z2z 5 ปีที่แล้ว +1

      你使用的python版本可能是 python2
      python3有對整數除法做調整 照理來講2/4會跑出0.5

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

      感謝 @以撒 的回應,確實很可能是版本的問題。
      如果是 Mac,安裝最新版的 python 之後,使用:python3 檔案名稱
      來執行程式嘍。

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

    請問之後會有開Pandas 相關的教學嗎?

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

      可能會有,還不確定。
      目前正在按照規畫完成基礎教學。進階的主題諸如 Django、Database、或是 Pandas 都還在考慮中,所以暫時無法很明確地回答。不過既然提了,彭彭會特別留意盡量把這塊內容納入教學範圍 :)

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

      @@cwpeng-course 老師 若有 "進階的主題" 不論 收不收費 請老師 通知我 ,一定參加 謝謝

  • @許皓翔HSUHAO-HSIANGF5406
    @許皓翔HSUHAO-HSIANGF5406 4 ปีที่แล้ว

    彭彭老師好
    想請問一下最後面那個任意長度參數的用法
    我如果要寫1-10的平均值,可否使用Range的搭配?
    我目前已經嘗試過:
    def avg(*numbers):
    sum=0
    for x in numbers:
    sum=sum+x
    print(sum/len(numbers))
    a=range(11)
    avg(print(a))
    或者
    def avg(*numbers):
    sum=0
    for x in numbers:
    sum=sum+x
    print(sum/len(numbers))
    avg(range(11))
    兩者都不能跑出正確的東西,想請問如何使用,謝謝老師

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

      def avg(min,max):
      sum=0
      for n in range(min,max+1):
      sum=sum+n
      print(sum/len(range(min,max+1)))
      min=int(input("請輸入數字一:"))
      max=int(input("請輸入數字二:"))
      avg(min,max)
      我是這樣寫,min輸入1,max輸入10,就可以算出1加到10的平均
      把大大的寫法改成以下這樣也可以
      def avg(*numbers):
      sum=0
      for x in numbers:
      sum=sum+x
      print(sum/len(numbers))
      avg(1,2,3,4,5,6,7,8,9,10)
      不知道不能寫range(1,11)的原因是不是跟任意長度參數本來就是「不定個數」參數有關係
      求其他高手解答XDD

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

      感謝 @王馨君 的分享,很棒哦 :)
      range 不能使用在這個地方,不合語法的 ~

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

      @@SUJUloveforever13 想要使用range(1,11)求其平均數也是可以,把程式稍微修改如下即可
      def avg(*numbers):
      sum=0
      for x in numbers[0]:
      sum=sum+x
      print(sum/len(numbers[0]))
      avg(range(1,11))

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

      @@wenwenwen2088 可以請問為甚麼是numbers[0]嗎

  • @蕭舜修
    @蕭舜修 3 ปีที่แล้ว

    彭彭老師您好,想請問您的YT上有串列的課程嗎?

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

      如果你說的是 List 的話,這系列課程的前面有基本的介紹 ~

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

    彭彭老師你好,請問可以跟你索取一份python影片裡面的slides嗎? 謝謝

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

      欸欸欸欸,讓我考慮一下,不好意思 XDDDDD

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

    打卡~

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

    老師好 我在寫最後一個範例時出了點問題
    原本是
    def avg(*ns):
    sum=0
    for n in ns:
    sum+=n
    print(sum/len(ns))
    avg(3,4)
    但是我寫成了
    def avg(*ns):
    sum=0
    for n in ns:
    sum+=n
    print(sum/len(ns))
    avg(3,4)
    我把print放到迴圈裡面了 運行時就先印出1.5 再印出3.5
    為什麼會這樣😂 希望老師可以解答 謝謝🙏

    • @陳慶宇-j4c
      @陳慶宇-j4c 4 ปีที่แล้ว +1

      Hi ,同學 你的print(sum/len(ns)) 放到迴圈就會錯誤唷,
      你想想
      for n in ns:
      sum+=n
      print(sum/len(ns))
      那你就會發現 第一個資料進入迴圈做的事情是 sum=0+3 印出 3/2 =1.5
      第二個資料進入迴圈 sum =3+4 印出 7/2 = 3.5
      因為for 是重複執行完資料 才會跳出 你放在迴圈內就會一直做 !
      所以要放在迴圈外 執行完才能印出 才使正確的唷 !

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

      #陳慶宇 謝謝指教 你的回答非常清楚👍

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

      感謝 @陳慶宇 的回應,很棒的分享 :)

  • @user-campingbeach__
    @user-campingbeach__ 3 ปีที่แล้ว

    老師妳好,我在最後一個算平均數的環節,發現我平均數沒辦法呈現小數點以後的部分,
    想請問是什麼狀況呢?

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

      你使用的 Python 應該是第 2 版的,如果是 Mac 執行時使用:python3 檔案名稱

  • @DarrylLee-cz5rv
    @DarrylLee-cz5rv 5 ปีที่แล้ว

    老師您好
    我想將最後一個計算平均值的範例改成讓使用者自己決定要輸入哪些數值,若想停止輸入的話請輸入bye,停止後輸入到函式進行運算並print出計算後的平均值結果
    以下程式碼在Jupyter Notebook執行時完全沒問題,但以Visual Code卻顯示錯誤,請問是哪邊出了問題呢?
    感謝老師!
    ----------------程式碼----------------
    def average(ns):
    sum=0
    for n in ns:
    print(type(n))
    sum+=int(n)
    print("What you entered" + str(ns))
    print("The average is %.2f" % (sum/len(ns)))
    x = []
    go = True
    while go == True:
    x.append(input("Please enter integers, ends it by entering a bye:"))
    if x[len(x)-1] == 'bye':
    go=False #若偵測到使用者最後一個輸入值為bye字串,即改變go的值來停止使用者輸入
    x[len(x)-1]=0 #把list中最後一個資料值從bye改為0以利正確計算
    average(x)
    ----------------錯誤碼----------------
    File "average.py", line 12, in
    x.append(input("Please enter integers, ends it by entering abye:"))
    File "", line 1, in
    NameError: name 'bye' is not defined

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

      我測試過你的程式沒什麼問題。
      可能看看你電腦中的 python 版本是否是 3.x 版,如果是 Mac,用 python3 來執行程式。

    • @DarrylLee-cz5rv
      @DarrylLee-cz5rv 5 ปีที่แล้ว +1

      @@cwpeng-course wow老師感謝您,我把執行命令從python改成python3後就可以了,,,

    • @DarrylLee-cz5rv
      @DarrylLee-cz5rv 5 ปีที่แล้ว

      @@cwpeng-course 老師抱歉再請教一個邏輯問題,若再將程式碼
      x = []
      go = True
      while go == True:
      x.append(input("Please enter integers, ends it by entering a bye:"))
      if x[len(x)-1] == 'bye':
      go=False
      其中x.append(input("Please enter integers, ends it by entering a bye:"))
      改成x = x.append(input("Please enter integers, ends it by entering a bye:"))
      此時x在輸入後為什麼我print(x)出來的答案是None呢?

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

      x.append(資料) 會把資料放進 x 列表本身裡面。但回傳 None。
      所以你寫 x=x.append(資料) 反而會把 x 變數中的資料用 None 覆蓋。

    • @DarrylLee-cz5rv
      @DarrylLee-cz5rv 5 ปีที่แล้ว

      @@cwpeng-course 感謝老師。
      是否也就是說,原本定義append()的fucntion裡面是類似以下
      def append(資料):
      執行append的程式碼
      return
      所以才會使用x=x.append(資料)後,除了已經執行append的程式碼之外,最後回傳None給x導致最後x變成None

  • @泱苗千翔
    @泱苗千翔 4 ปีที่แล้ว

    我隨便寫了一個:
    def z(z1,x2):
    print(z1**x2)
    z(2,3)
    發現也可以開次方
    好像沒有一定要用(base,exp)?

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

      那只是你自訂的變數 沒有差

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

      感謝 @Marvin V 的回應 ~~

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

    想請問老師,在打程式碼的地方,有什麼快捷鍵可以直接切換到RUN的地方嗎,用滑鼠點感覺有點慢,上網也沒有查到

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

      可以試試看用 ctrl+` 最左上角那個符號 ~

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

      @@cwpeng-course 謝謝老師!課程受益無窮!

  • @許哲嘉-x6k
    @許哲嘉-x6k 4 ปีที่แล้ว

    請問為什麼一定要用for迴圈
    我自己寫的時候直接用
    def avg(*ns):
    a=sum(ns)/len(ns)
    print(a)
    value=avg(3,5,8,9,6)
    也跑的出答案

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

      也是可以的,使用 for 迴圈也只是教學上的一個考量 :)

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

      請問這樣寫也能夠得到一樣結果的邏輯是什麼?

    • @許哲嘉-x6k
      @許哲嘉-x6k 4 ปีที่แล้ว

      不知道你是不是在問這個 我那個ns前面加上一個*的話可以輸入好幾個參數然後把這些參數變成一個list

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

      ​@@許哲嘉-x6k 謝謝你的回應。我另外做了嘗試,原來sum本身就是內建加總的函數,因此不用另外定義sum。

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

    我想问一下,如果我想让使用者自己输入一个tuple的话可以这样写吗?
    x=int(input(""))

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

      你可以寫 x=eval(input("")),然後輸入的時候就輸入 (3,4)

  • @chang-shunyang4411
    @chang-shunyang4411 6 ปีที่แล้ว +1

    期待已久>"

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

    想問老師 有推薦的網站可以練習python的題目嗎

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

      LeetCode 是一個大家常用的刷題網站,也可以用 Python 撰寫 ~

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

    老師您好 我想請問一下 如果我讓使用者自行輸入 但是他沒輸入任何值 似乎沒有作用 請問該如何解決呢 謝謝
    def power(base,exp=0): #exp=預設等於0
    print("答案為: ",base**exp)
    power(float(input("請輸入被平方數: ")),float(input("請輸入平方數: ")))
    請輸入被平方數: 3
    請輸入平方數:
    Traceback (most recent call last):
    File "funtion.py", line 3, in
    power(int(input("請輸入被平方數: ")),int(input("請輸入平方數: ")))
    ValueError: invalid literal for int() with base 10: ''

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

      這一題其實因為輸入的值都會是String,建議轉換資料型態可以另外寫 接著去判斷 再把值傳到def裡面去 以下是我的解法 如果有其他人有更好的方法 也請留言 我是一位Python新手 請大家鞭小力一點
      def power(base,exp=0): #exp=預設等於0
      if exp == " ":
      int(exp=0)
      print("答案為: ",base**exp)
      else:
      print("答案為: ",base**exp)
      #main()
      num1=input("請輸入被平方數: ")
      num2=input("請輸入平方數: ")
      num1=int(num1)
      if num2 == "":
      power(num1)
      else:
      num2=int(num2)
      power(num1, num2)

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

      感謝 @Wen-Zhi Mick,很棒的分享 :)
      也可以用 isdigit() 這個方法來事先判斷輸入是否為數字,如下:
      data=input("請輸入數字")
      if data.isdigit():
      print("是數字")
      else:
      print("不是數字")

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

      @@cwpeng-course 老師您好,我看到這則留言想提問:
      我將上面分開就可以執行,跟原Po的差別只有 有沒有接在丟進print差別,程式有影響這麼多嗎?
      def bang(base,exp): # 要做 "次方" 的功能
      print("答案是: ",base**exp)
      a=int(input("請輸入底數: "))
      b=int(input("請輸入次方數: "))
      bang(a,b)

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

    good

  • @user-xt1fi7jy5e
    @user-xt1fi7jy5e 3 ปีที่แล้ว

    請問想讓使用者自己輸入Tuple 為什麼不能寫 x=int(input(""))?

    • @吳小雞-f6w
      @吳小雞-f6w 3 ปีที่แล้ว +2

      不能直接用int把Tuple內的資料轉成整數

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

      感謝 @classE_21_李星亞 的說明 :)

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

    請問老師 如果無限參數函式裡面程式碼改用while做avg要怎麼跑呢?

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

      你可以參考看看以下的程式:
      index=0
      while index

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

    老師很可愛都會偷笑

  • @哲哲的頻道就試試看
    @哲哲的頻道就試試看 3 ปีที่แล้ว

    def divide(n1=0,n2):
    print(n1/n2)
    divide(n2=8)
    這個跑不出來,為甚麼不能用預設值呢?

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

      有個小細節,有預設值的參數一定得放在沒有預設值的參數後面,不然就是兩個都要有預設值

    • @哲哲的頻道就試試看
      @哲哲的頻道就試試看 3 ปีที่แล้ว +1

      @@cwpeng-course 謝謝你

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

    Tuple 有序列表

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

    您好,
    感謝有此平台能學習python
    碰到一個問題
    程式執行時最後會出現
    ""
    請問是什麼問題?感謝丫
    程式請參考下方, 謝謝
    #輸入開始值及結束值,算出總和及加總次數
    def a(min,max):
    min=int(input("請輸入開始值:"))
    max=int(input("請輸入結束值:"))
    sum=0 #sum為總和
    n=0 #加總次數
    for x in range (min,max+1):
    sum+=x
    n+=1
    else:
    print(min,"+",max,"總和為",sum)
    print("加總次數為:",n)
    a(min,max)
    print(a)

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

      有點不懂最後一行要印什麼,答案是否在倒數第二行就可以得到了

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

      Chen Chi Hu
      感謝,
      確實最後一行是多餘。
      真心感謝

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

      Lucy Hsu 不會喔,也還在學,一起加油👍

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

      感謝 @Chen Chi Hu 的回應 :)

  • @AK-di6xs
    @AK-di6xs 3 ปีที่แล้ว

    # 函式參數詳解
    # 基本語法
    #def 函式名稱(參數名稱=預設資料):
    #函式內部的程式碼
    # 程式範例
    # 參數 msg 預設資料為"Hello"
    def say(msg="Hello"):
    print(msg)
    # 印出 Hello Function
    say("Hello Function") # 參數輸入為"Hello Function"
    say() # 印出預設資料"Hello" (沒有輸入參數就是用預設參數"Hello")
    # 名稱對應
    # 基本語法
    #def 函式名稱(名稱1,名稱2):
    #函式內部的程式碼
    # 呼叫函式,以參數名稱對應資料
    #函式名稱(名稱2=3,名稱1=5) # 參數的輸入可以不用按照順序放 不過參數名稱要打出來加等於 (用名稱對應)
    # 程式範例
    # 定義一個可以做除法的函式
    def divide(n1,n2):
    result=n1/n2
    print(result)
    divide(2,4) # 印出 0.5
    divide(n2=2,n1=4) # 印出 2.0
    # 無限參數
    # 基本語法
    #def 函式名稱(*無限參數) (參數的前面加一個* 代表無限參數 要放幾個資料都可以)
    #無限參數以 Tuple 資料型態處理
    #函式內部的程式碼
    # 呼叫函式,可傳入無限數量的參數
    #函式名稱(資料一,資料二,資料三)
    # 程式範例
    # 函式接受無限參數msgs
    def say(*msgs):
    # 以 Tuple 的方式處理
    for msg in msgs:
    print(msg)
    say("Hello","Arbitrary","Arguments")
    # 參數的預設資料
    def power(base,exp=0): # 做開方 預設值設為0
    print(base**exp)
    power(3,2)
    power(4)
    # 使用參數名稱對應
    def divide(n1,n2):
    print(n1/n2)
    divide(2,4)
    divide(n2=2,n1=4) # 參數名稱對應
    # 無限/不定 參數資料
    def avg(*ns): # 做平均數的函式
    print(ns)
    sum=0
    for n in ns:
    sum=sum+n
    print(sum/len(ns)) # len() 列表的長度
    avg(3,4)
    avg(3,5,10)
    avg(1,4,-1,-8)

  • @劉威廉-g8d
    @劉威廉-g8d 3 ปีที่แล้ว

    老師,請問如何一鍵就讓整排#字號,謝謝老師

  • @林宛萱-p3u
    @林宛萱-p3u 5 ปีที่แล้ว

    老師你好,請問有辦法把使用者輸入的資料存入清單中後,再用定義的函式去做計算嗎

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

      可以啊 ~~~~~

    • @林宛萱-p3u
      @林宛萱-p3u 5 ปีที่แล้ว

      @@cwpeng-course 請問一下要如何把使用者的input放進清單中??

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

      @@林宛萱-p3u
      n1=int(input("請輸入數字一 : "))
      n2=int(input("請輸入數字二 : "))
      def add(n1,n2):
      print(n1+n2)
      add(n1,n2)
      稍微寫一下,不知道這樣是不是你要的。

    • @林宛萱-p3u
      @林宛萱-p3u 5 ปีที่แล้ว

      @@wei5225 謝謝你 不過我想要的是不管使用者想要輸入多少個值都可以做計算。 我後來有想出來了。

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

      @@林宛萱-p3u 方便請教如何讓使用者自己輸入幾個值都可以的寫法嗎?
      上完課想應用但怎麼都寫不出來

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

    老師請問有關python 中有個內建函數eval()的用法。我查了很多資料,但是都寫得非常深奧,我真的是有看沒有很懂。所以就想到,彭彭老師應該可以用深入淺出的方法解釋eval()函數的用法。 我剛剛有玩個實驗,通常我都會用n=int(input()) 讓使用者輸入數值,後來我發現 n=eval(input())也可以讓使用者輸入數值,兩者都可以將數字字串轉換成整數(我有用type()函數驗證過)。但我知道eval()應該不是只有這種用法,它還有那些用法可以應用在撰寫程式上呢? 上述的兩種輸入數值的方法哪一種是比較好的寫法呢? 請老師有空幫我解惑,謝謝老師!!!!

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

      eval() 可以用把程式寫成字串,去執行。
      eval("3") 就相當於你平常開一個程式檔案,在裡面打 3,然後用命令列執行那個檔案。
      eval("x=3") 就相當於你平常開一個程式檔案,在裡面打 x=3,然後用命令列執行那個檔案。
      如果只是要轉成整數這個動作,我們會使用 int(),eval() 是更廣泛的目的,平常大概不太建議使用。

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

      @@cwpeng-course 老師用這樣比喻來解釋eval()的用法比我之前看的那些深奧的文件更容易讓我了解eval()的用法。謝謝!! 可我還是對所謂運用eval()達成的更廣泛目的感到好奇和興趣ㄟ ! 老師建議你開個有關運用eval()的課程教學,我一定準時收看。 目前我撰寫程式就聽你的建議使用int()來將輸入資料轉換成整數囉!! 感謝!!

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

    老师,平方和开方是相反的,两个*到底是平方还是开方。

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

      **
      前面放底數 後面放指數

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

      是開次方。4**2次方=4*4 (4乘於4)
      2**3次方=2*2*2(2乘於2再乘於2)

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

      感謝 @黃啟桓 和 @Pei KON 的回應,就是這樣嘍 :)

  • @猜猜我是誰-z4o
    @猜猜我是誰-z4o 4 ปีที่แล้ว

    老師老師 為什麼這裡的def沒有return

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

      沒有寫 return 就會在最後面自動 return 哦 ~