學習反思

import math #導入數學
radius=eval(input()) #半徑
print("Diameter","=","%.2f"%(radius*2)) #直徑
print("Perimeter","=","%.2f"%(radius*2*math.pi)) #圓周長
#直徑*PI
print("Area","=","%.2f"%(radius**2*math.pi))
#面積:半徑*半徑*PI

班級:111夜程式設計(一) 廖玲銹
發佈時間: 12月19日 22:36:29 (週一)

之前剛學函數時,以為在return之後可以加入print的寫法,
但這樣是不對的,
return僅是回傳funtion的結果
做輸出的話只能寫在funtion內,或者在呼叫funtion後再做輸出,
才是正確的寫法,否則系統報錯的機率會很大。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 12月17日 22:38:23 (週六)

def f(hours):
        hourTable = [0, 2, 4, 6]
        feeTable = [30, 50, 80, 100]
        fee = 0
        
        print("停車時數:" + str(hours) + "小時")
        
        i = len(hourTable)-1
        while (i > 0):   # 先找出最高費率區段
            if (hourTable[i] < hours):
                break
            i-=1
        
        while (i >= 0):    # 由最高費率區段往下累加
            fee += (hours - hourTable[i]) * feeTable[i]
            hours = hourTable[i] #上一個級距
            i-=1    #下一個級距
        
        print("應繳費用:" + str(fee) + "元整")
        
n=eval(input())        
f(n)

班級:111夜程式設計(一) 廖玲銹
發佈時間: 12月01日 20:59:19 (週四)

def compute(n):
    n1 = 0
    n2 = 1 #費氏數列前2項必定為0與1
    print(f'{n1} {n2}',end=' ')
    for i in range(3 ,n+1): #數列前2項已被指定為0與1,故迴圈由3開始
        n3 = n1 + n2 #後面的數值必定是其前兩項的和
        print(f'{n3}',end=' ')
        n1 = n2
        n2 = n3 #依序產生數列
n = eval(input())
compute(n)

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月30日 11:59:57 (週三)

一般執行計算連加或連乘都是用迴圈下去帶,
課本解答提供了另一種解法:
a/b二數連加公式:
((a+b)*(b-a+1)/2)
但公式要背(除非能寫出證明&理解)
突然覺得迴圈也有那麼一點點可愛的地方。
(但大多數時間還是挺可惡的)

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月26日 23:47:41 (週六)

之前是迴圈卡關,經過期中的洗禮後(強迫自己刷題)
就大約略懂略懂。
現在是串列卡關,語法非.常.不.熟
這題能過也是去爬網路資料得出的結果,
(但網路為什麼這樣寫我完全不懂)

後來看到柏均的寫法就大概看的懂,
老師是用另一種寫法:dic(dictionary)
有興趣的同學可以參考:
https://medium.com/ccclub/ccclub-python-for-beginners-tutorial-533b8d8d96f3

目前的做法就是看到不懂的就是一列一列的寫註解,
理解/熟悉語法/再刷題。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月24日 16:40:47 (週四)

a = int(input()) #迴圈輸入跑幾次
b = 1 #數值從1開始
c = 0 #設立計數變數
if a==0:
    print("n需大於零") #若輸入值為0,輸出
else:
    while True: #設立無窮迴圈
        if a == 0: 
            break #若輸入值為0,迴圈中斷
        for n in range(1,b+1): #跑迴圈
            if b%n == 0: #若b值可被n整除,n是b的因數
                c+=1 #計數加1
        if c == 2: #若b值%1與%n均可被整除時
                   #若b值為7,在迴圈數為1與7時同時可被整除,b就是質數
            print(b) #b值是質數,輸出
            a-=1 #迴圈數-1
        b+=1 #若b值已跑到7,下次就從8開始做檢查
        c=0 #計數歸0,重新判斷

這題好難,應該可以拿來當成競賽等級的題目了。
要先了解質數的定義(除了1與自身,無法被其他數整除)
我也是請教學長請他寫出註解給我,
我才能看得懂程式,
能夠寫的出質數的判斷式,
這題基本上就解完一半了。

上次解這題時,狀況真的不好,而下週就是期中考。
得了感冒(還燒了2天,很擔心自己沒辦法考期中考)
原本要去醫院掛急診了,但幸好狀況回穩了。
謝謝英喬關心,感謝^_^

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月13日 23:21:27 (週日)

num = eval(input())
min_num = num
while num != -1:
    if num < min_num:
       min_num = num 
       #這行順序很重要,最小值變數需放在前面,繼續與後續輸入值比對
    num = eval(input())
if min_num == -1:
    print('不存在最小值')
else:
    print(min_num)

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月12日 18:37:56 (週六)

n = int(input())
for i in range(1 ,n+1):
    for j in range(0, n-i):
        print(" ",end="")
    for k in range(0, 2*i-1):
        print("*",end="")
    print()
以上是我寫的程式:   
n = int(input())
for i in range(1 ,n+1):
        print(" "*(n-i)+"*"*(2*i-1))
剛發現同學用這個敘述更為簡單,連寫雙層迴圈都不用了,
直接輸出對應的空格數及*號數就好,
真的很棒!

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月11日 11:14:08 (週五)

l=[]#宣告串列變數
for i in range(5):#迴圈跑5次(對應資料筆數)
    l.append(input())#依序加入至串列內容中
print('原來串列內容',l)#輸出

#依序輸出串列內容可以用以下幾種做法:
#1)
for i in l:#建立串列迴圈
    print(i)#輸出
#2)
#for i in range(len(l)):或使用funtion len()查詢串列資料
    #print(l[i])輸出
#3)    
#for i in range(5):print(l.pop(0))
#或使用funtion pop()將list內的資料刪除並彈出/輸出。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月11日 09:25:38 (週五)

這題當下我有想到要用條件判斷的做法去寫,
但要準備期中考所以就一直放著。

我準備考試的原則就是把握自己可以拿分的部份,
至於難題或真的讓自己卡關很久的題目就先放著,
待上課時再詢問老師,
這樣也不至於讓自己的時間空轉,
一點心得,希望能對其他同學有些許幫助。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月06日 21:16:13 (週日)

老實說我遇到迴圈的確是卡關了,
尤其是在while迴圈的部份。
這題是用取餘數再取商數依序讀取數字,
再執行判斷式即可計算出5這個數字有幾個,
但老實說我while迴圈沒什麼概念,
還是只能透過大量練習解題去理解內化。
(感謝提供解答的同學)

還有上週四的週中考,我的表現很差,
回家後我自己再解題,其實裡面有八題我是可以解出來的。
除了尋找最小值(解一半),
及數字三角形倒序輸出。
(我猜我是在格式化輸出這部份寫錯,直到現在我還是未解出來)

說出來也不怕同學笑,我.會.怯.場。

我也很習慣(甚至可以說是高度依賴)使用自己的筆電,
如果一但使用公用電腦,我會十分不習慣。
只能再努力試著克服自己的心魔。

但老實說10題內有8題可以靠自己的力量解出來,
代表自己對python真的是能有些許理解的,
這應該是近期內些許能讓自己寬慰的事。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 11月06日 21:09:32 (週日)

n=int(input())#輸入的秒數
h=n//3600#時
m=(n-(3600*h))//60#扣掉小時後還有幾分
s=(n-3600*h)%60#餘數為秒
a=""#字串連接
if h>0:
    a=a+str(h)+"小時"
if m>0:
    a=a+str(m)+"分" 
if s>0:
    a=a+str(s)+"秒"    
print(f'{n}秒可轉換為===>{a}',end="")

班級:111夜程式設計(一) 廖玲銹
發佈時間: 11月03日 16:24:51 (週四)

n=int(input())#天數設定
s=0 #迴圈運算值設定
m=5 #m起始值
for i in range (1,n+1):#參數設定
    s+=m#累計值運算
    print(f'第 {i} 天 存入 {m} 累計 {s}')    
    m=m*2#m值定義

班級:111夜程式設計(一) 廖玲銹
發佈時間: 11月03日 16:22:23 (週四)

好難

班級:壢商資處科411 114112黃翊洋
發佈時間: 10月31日 14:16:39 (週一)

   

班級:111CS102 陳揚鵬
發佈時間: 10月31日 10:09:58 (週一)

早日康復!!

班級:111夜程式設計(一) 廖英喬
發佈時間: 10月30日 16:14:06 (週日)

這題不難,但比較要求格式化輸出一定要學好,
且系統不接受使用tab鍵做跳格定位控制(即便輸出長的都一樣)
如這二行:
print(f'Month    Amount')
print(f'  {i}    {total:.2f}')
詳解請參閱課本p3-26

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月29日 20:07:44 (週六)

n = eval(input())
#此數字代表後面測試資料的數量,使用eval函式轉為數值
for i in range(n):
    num = eval(input())
#根據使用者輸出的資料測試筆數,去抓取對應次數的測試資料,一樣使用eval函式轉為數值
    tmp = num
#建立一個暫存變數
    sum = 0
#再建立一個累加變數
    while tmp != 0:
#建立一個while迴圈,若tmp不為0則繼續執行
        sum += tmp % 10
#累加暫存數%10之後的餘數
        tmp //= 10
#取得餘數後,暫存數再取商即為上一位數值(個位數除掉,再取十位數,以此類推)
    print(f'Sum of all digits of {num} is {sum}')
#執行輸出

#詳解請參閱課本p3-23/24
#https://www.youtube.com/watch?v=74lhoEzi5po&t=806s

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月29日 19:34:13 (週六)

num = eval(input())
while num != 0 :
#當使用者數入數值不等於0時:
    print(num % 10, end = "")
#執行數字%10(取餘數=即為取下一位數)並不換行(即為反轉順序輸出)
    num //= 10
#再取商數,周而復始,直至數值=0,迴圈結束。

#其他應用範例:
#print(input()[::-1])
#列印出最後一個索引值並輸出
#或
#num = input()
#string=''.join(reversed(num))
#print(string) 
#使用reversed函式並使用join語法反轉輸出。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月29日 15:08:12 (週六)

import math
#使用數學模組下的funtion需要在開頭先撰寫import math,
#將math mode載入

num = eval(input())
#使用者輸出任意數值

if num % 1 > 0:
#若變數無法被1整除,執行以下動作:
    print(f'不足1公里額外加計車資')
    print(f'{num} 公里的車資為 {(math.ceil(num)-1)*20+60}')
#math.ceil-無條件進位 math.ceil(變數名) 
#如輸入4.5 km,有餘數,則無條件進位至5km
#再來計算對應車資

else:    
    print(f'{num} 公里的車資為 {(num-1)*20+60}')
#反之,即無需無條件進位,及輸出計算之車資。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月27日 16:08:31 (週四)

注意此題是三角形內數字為正序輸出的寫法,
注意空格數的輸出,
觀念正確就可順利作答。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月24日 12:40:29 (週一)

day = eval(input())
amount = 5
total = 0
for i in range(1 ,day+1) :
    total += amount
    print(f'第 {i} 天 存入 {amount} 累計 {total}')
    amount = amount * 2
    #"amount = amount * 2"這一行code的順序很重要,不能寫在輸出之前,否則第一天就會變成存入10元,
    #需要寫在輸出第一次迴圈之後,這樣累加內容才會正確

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月23日 21:41:49 (週日)

day = 0
#天數需累加,故起始天數為0
m = eval(input())
long = m
while m > 3:
#什麼時候適合使用 while 迴圈?
#不確定要重複執行運算次數, 但有明顯的滿足終止條件
#迴圈數小於3時即終止
    less = m / 2
    #每天剪去一半
    m -= less
    #長度每日累減
    day += 1
    #天數累加
    print(f'第 {day} 天剩下 {m} 公尺')
print(f'{long} 公尺的繩子剪去 {day} 天後會少於 3 公尺')

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月23日 21:26:05 (週日)

此題可以copy迴圈敘述題組#16題(數字三角形)的code做修改,
注意此題是倒三角形與數字為倒序輸出的寫法,
及注意空格數的輸出,
觀念正確就可順利作答。

空閒時間太零散真的非.常,的,討.厭!
每天都睡不飽,每天都覺得時間不夠用!!!!!

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月23日 00:40:34 (週日)

輸入n值決定三角型的高度(意亦迴圈數)
再來計算出空格與星號要輸出的數量,
之後再做一次迴圈,
但這次的迴圈起始值就要從n-1開始(才會得到一個完整的菱型)
#10.22更新:
看到同學使用reversed()函數(逆序)更為簡單:
只需控制輸出行數即可。
(老師教材中尚未提及,但感謝同學寫出程式碼可供參考,感謝。)

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月22日 15:39:56 (週六)

昨晚上串列輸出,
原本對於字串利用變數去拼湊出輸出而感到困擾的我,
今天又再利用時間預計將迴圈輸出的所有題目再裸解一次,
#重複裸解練習真的很重要 *3
因為很重要,所以後面*3
每行的程式碼比較重要的部份就用註解一行一行寫給自己看,
但每當真的進入情況時間卻又往往不夠用,
只能再好好的調配時間做練習,
也順便將我練習題目的心得分享出來,希望能幫助跟我有一樣困擾的同學們,
一起加油! 

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月21日 22:55:08 (週五)

h = eval(input())
for i in range(1 , h+1)
#高度即迴圈數
    print(" " * (h-i) + "*" * (2*i-1))
#計算出輸出的空白與星號數量與答案的輸出數相符即可
#無需用到雙迴圈

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月21日 14:43:21 (週五)

num1 = int(input())
total1 = 0
for i in range(1,num1) :
    if num1 % i == 0 :
        total1 += i
#計算a數之公因數之總和
num2 = int(input())
total2 = 0
for i in range(1,num2) :
    if num2 % i == 0 :
        total2 += i
#計算b數之公因數之總和
if total1 == num2 and total2 == num1 :
#若a數公因數之總和=b數、b數公因數之總和=a數
    print(f'{num1}和{num2}是友誼數')
else:
    print(f'{num1}和{num2}不是友誼數')
#輸入與輸出數值分別取變數名稱區隔開來再做條件判斷即可。

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月21日 00:48:47 (週五)

d=[0,1]#串列前兩項題目有給。
n=int(input())#變數設定
s=0#迴圈運算值設定
for i in range (n-2):#循環運作n次要扣掉2次
    s+=d[(i-1)]+d[(i-2)]#s累加等於題目給的n-1項+n-2項
    d.append(s)#加進去串列
print(*d)#輸出

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月21日 00:00:33 (週五)

d=[]#空串列
while True:#while迴圈設定(起手式)
    key=input()#變數輸入設定
    if key =="-9999":#假設輸入等於-9999
       break#跳離迴圈
    d.append(key)#把變數加進去
print('原資料',*d)#輸出"*d"技巧使用
print('數值 6','共出現',d.count("6"),'次')#"count函數使用"

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月20日 23:55:49 (週四)

d=[]#空串列
for i in range (5):#迴圈參數設定
    n=eval(input())#變數輸入設定
    d.append(n)#變數丟進去
    d.sort()#串列遞增排序(小到大)
    d.reverse()#再把他反轉過來(大到小)
print(*d[2:])#輸出後面三個

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月20日 23:52:18 (週四)

d=[] #設定空串列
for i in range (5): #五筆資料迴圈參數設定
    n=eval(input())#變數輸入設定
    d.append(n)#把變數丟進去串列
    d.sort()#串列遞增排序d=[12345]
print(*d[2:5])#輸出後三位的資料也可以寫print(*d[-3:])

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月20日 23:30:46 (週四)

d=[]#空串列
for i in range (5):#迴圈參數設定
    n=eval(input())#變數輸入設定
    d.append(n)#把變數丟進去迴圈裡
print('原資料',*d)#輸出串列 "*d"技巧運用
for i in range (len(d)):#再設定一個迴圈參數
                             #用len去帶串列共有幾筆資料
     print(f'第{i+1}筆{d[i]+5}')#d[i]+5循環輸出

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月20日 23:25:03 (週四)

d=[]#先設定一個空的串列
for i in range(5):#迴圈參數設定
    key=eval(input())#變數設定
    d.append(key)#把變數丟進去串列裡
print("數值",*d)#*d,純粹是技巧,取出數值。
s=sum(d)#函數總和
avg=s/len(d)#除以幾筆資料=平均
print("總和",s) #輸出
print("平均",avg) #輸出

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月20日 23:21:17 (週四)

l = []
n = eval(input())
total = 1
for j in range(1,n+1):
 total *= j
l = [str(i) for i in range(1,n+1)]
print('*'.join(l)+'='+str(total))
這是利用建立串列的方式與使用join funtion將串列分割並加入指定字元。
上週其實也是有類似題目,只是這次老師出的新題改成累乘, 
有興趣的同學可以參考看看,把老師上週的code"改一個符號"就是解答了,

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月20日 14:32:37 (週四)

🐻🈹🐃🅱

班級:111程式設計(一) 王君皓
發佈時間: 10月20日 12:04:43 (週四)

謝謝承恩哥教得好,祝恩哥把妹妹順利

班級:111程式設計(一) 王君皓
發佈時間: 10月20日 11:15:29 (週四)

好難

班級:壢商資處科411 114112黃翊洋
發佈時間: 10月17日 14:12:52 (週一)

我把它想得太複雜了,其實不需要打這麼多行

班級:111程式設計(一) 洪郁絜
發佈時間: 10月12日 00:13:49 (週三)

題目是頗簡單,字元判斷正確就對應何種輸出,
但在指定字元的時候發覺要一個一個打的話實在太麻煩了,
就看了一下課本的解答。
(同學們,老師出這整個題組幾乎可以算是賺積分的題組了,
但還是希望能靠自身的理解力去完成才是正確的做法喔!)
發現原來除了可以指定變數介於何者數值之間,
(這也是最常用到的功能)
連"英文字母"都可以指定(包括大小寫)

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月11日 16:28:47 (週二)

語法,計算式都對,
卡在四拾五入,跟正確解答差1元,
覺得有點無言...
不知系統是怎麼判定的?

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月11日 01:57:01 (週二)

再來複習一下條件判斷有三種情況:
1) if (符合結果才會執行,意即只會有一種結果)
2) if ...else(會有正/反二種結果)
3) if...elif...else(會有多種結果)

班級:111夜程式設計(一) 陳虹羽
發佈時間: 10月11日 00:24:58 (週二)

n=eval(input())
s=0
for i in range(10,n+1):
    s+=(1.0/i)
print("1/10+1/11+1/12+...+1/%d=%.2f"%(n,s))

這題我想複雜了哈哈哈,固定輸出的東西蠻多的,
所以只要設定出最後的加總值就可以了。

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 12:35:38 (週一)

n=int(input())#n值設定
for i in range (1,n+1):#參數1-n+1範圍設定
    print(f"{i}隻兔子,共有{i*4}隻腳")
#一隻兔子四隻腳,輸出吧~~

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 12:16:45 (週一)

n=int(input()) #n值設定ex.n=3
s=""#字串設定
t=0#迴圈運算使用
for i in range (1,n+1):#設定參數1-n+1範圍
    if i!=n:#如果i值不等於n,ex:i=1or2
        s=s+str(i)+"+"#那麼輸出s是1+ 【str(i))+"+"】
    else:#如果不是上述條件,也就是n=i ex.i=3
        s=s+str(i)+"="#那麼輸出s是3= 【str(i))+"="】
    t=t+i#總和
print(s+str(t))#輸出

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 12:15:33 (週一)

n=int(input())#設定輸入幾個值
s=0#迴圈運算使用
for i in range(n):#n個值重複運算
    k=int(input())#輸入的值設定
    s=s+k#加總
print(s) #輸出

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 12:08:54 (週一)

h=int(input())#h值設定
for i in range(1,h+1):#參數值設定1-h+1範圍
    print(' ' * (h-i) + '*' * (2*i-1))#重複輸出

三角形這關自己已經想到很接近答案了,
但是就是在*的個數想不到怎麼設定輸出,
後來找了一下文章,摁,原來如此阿~
迴圈難就難再怎麼敘述輸出,趁今天放假,
趕快把思緒理一理,加強一下。

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 12:05:20 (週一)

n=int(input())#設定n值
for i in range (1,n+1):#參數設定1-n+1範圍
   if i%3!=0:#不是三的倍數不輸出
        print(i)

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 12:00:21 (週一)

解答是用參數設定(2,n+1,2)
code碼更簡略了
自己的方式則是找出2的倍數 
迴圈的思考邏輯還要再強化

班級:111夜程式設計(一) 廖玲銹
發佈時間: 10月10日 11:44:35 (週一)