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) 要這樣子才可以,也在這邊提供經驗給共學者討論,謝謝老師
老師您好我想請問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)
您好,老師想詢一下 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) 這裡的print 為何往後退到 sum=sum+n 會出現錯誤 如: def avg(*ns): sum=0 for n in ns: sum=sum+n print(sum/len(ns)) 但 def avg(*ns): sum=0 for n in ns: print(n) avg(3,4) 這裡的print就要縮到很後面 才會有答案。 想問一下 這裡 要怎麼區分 我哪些要縮排?
彭彭老師您好: 如果函式名稱(*無限/不定參數),直接將設定好的參數名稱加上*,是否等同於直接呼叫函式並執行函式? 以下為個人練習,懇請不吝教導,感謝。 nums1 = tuple(map(int, input("輸入要計算的值: ").split())) def avg(*nums1): # *加上參數名稱,無限/不定參數以Tuple資料型態處理 sum = 0 for i in nums1: sum += i print(sum / len(nums1)) avg(*nums1)
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 又要怎麼解決?
老師您好 我想將最後一個計算平均值的範例改成讓使用者自己決定要輸入哪些數值,若想停止輸入的話請輸入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 老師抱歉再請教一個邏輯問題,若再將程式碼 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-course6 жыл бұрын
x.append(資料) 會把資料放進 x 列表本身裡面。但回傳 None。 所以你寫 x=x.append(資料) 反而會把 x 變數中的資料用 None 覆蓋。
彭彭老師好 想請問一下最後面那個任意長度參數的用法 我如果要寫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)) 兩者都不能跑出正確的東西,想請問如何使用,謝謝老師
@SUJUloveforever134 жыл бұрын
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-course4 жыл бұрын
感謝 @王馨君 的分享,很棒哦 :) range 不能使用在這個地方,不合語法的 ~
@wenwenwen20883 жыл бұрын
@@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))
謝謝老師的教導,但是最後的無限參數都照著老師的程式碼打卻終端機卻沒有任何顯示,附上程式碼還請老師能指導一下!謝謝! 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)