# 英打隨堂考! https://www.arealme.com/typing-test/zh/ ### 選擇[高頻單字]&[2分鐘] 接著點擊[開始]即可 ---- ## 學期末再考一次 ### 前三名(3+3)有獎歐~(社師請 #### 大家記得回去練練:D --- # 資料 ---- # 資料型態 ![image alt](https://cdn.discordapp.com/attachments/986084746578771978/1030118454797271181/unknown.png) ---- 確認資料型態 利用type()可以確認資料型態 ```python name = "Kevin" print(type(name)) ``` output ``` <class 'str'> ``` --- ## 整數interger(int) ```python property = 0 students = 27 debt = -10 ``` ---- # 浮點數float(float) ```python score = 0.3 sin= 0.7666 #簡單來說就是小數 ``` ---- ### 算術運算子 ---- | 運算子 | 意義 | 輸入 | 輸出 | |:----:|:------------:| ---- | ---- | | + | 加法 | 3+2 | 5 | | - | 減法 | 3-2 | 1 | | * | 乘法 | 3*2 | 6 | | / | 除法 | 3/2 | 1.5 | | // | 除法(取整數) | 3//2 | 1 | | % | 除法(取餘數) | 3%2 | 1 | | ** | 次方 | 3**2 | 9 | ---- ### 複合算術運算子 ---- ```python a=3 b=5 a+=b #a+b print(a) ``` ---- ```python! a=3 b=5 a+=b a=a+b ``` --- # 字串string(str) ```python name = "CKSH" food = "Hotdog" email = 'non'#使用''亦可 ``` ---- ## 字串的運算 ---- 字串相連接 ```python word = "Genshin" feed = "turn on" output = word+feed #print(word+feed) print(output) ``` ---- 字串乘法 ```python word ="Genshin" output = word*3 #print(word*3) print(output) ``` ---- ## 索引(Index) 用[]取元素 ---- ```Python S="Hello,world!"#第一個字是從0開始數 print(S[1:4])#ell print(S[-5:-2])#orl print(S[1])#e print(S[6:])#world! ``` ---- 假設我想從friend提取出fiend並且輸出,程式碼該怎麼打(5分鐘) ---- ```py word = 'friends' devil = word[0] + word[2:4] + word[-3:-1] #print(word[0]) #print(word[2:4]) #print(word[-3:1]) print(devil) ``` ``` fiend ``` ---- ## .format() ---- ### 填充題 ``` Remember me to one _(A)_ lives there, she once was a true love of _(B)_. ``` (A) _who_ (B) _mine_ ---- ```python! #第一種,直接按照順序將參數填入空格: print('Remember me to one {} lives there, she once was a true love of {}.'.format('who','mine')) #第二種,在大括號中指定參數名稱(關鍵字參數) print('Remember me to one {p} lives there, she once was a true love of {v}.'.format(p = 'who',v = 'mine')) #第三種,在大括號中指定參數的索引值(index) print('Remember me to one {0} lives there, she once was a true love of {1}.' .format('who','mine')) ``` ---- ## 有什麼好處? ---- ### 如果不使用 ```python UserName="Smarsh" UserID="123456789" Server="CSDC4TH" joinTime= "2077/01/01 21:35" print(UserName,'is welcome to',Server,'at',joinTime,'ID:',UserID ) ``` ---- ```python UserName="Smarsh" UserID="123456789" Server="CSDC4TH" joinTime= "2077/01/01 21:35" print('{} is welcome to {} at {},ID:{}' .format(UserName,Server,joinTime,UserID)) ``` --- # 布林值(bool) ### A.K.A對或錯 ```python 社長是子腸 = False 社長是子暘 = True 福利社不會漲價 = False 校長家很大 = True ``` ---- ## 選擇性敘述 ---- ## 敘述 ![](https://hackmd.io/_uploads/rytAsKAGT.png) ![](https://hackmd.io/_uploads/B1Sm-MkQp.png) ---- ##### 過多的if反而會造成邏輯判斷的混淆,拖累執行的速度 ---- ### 巢狀if ---- ![](https://i.imgur.com/jnGnkHU.png) ---- ### 判斷三角形的類型(5分鐘) ``` 輸入三線段長度,判斷是否構成三角形, 且是鈍角、直角﹑還是銳角三角形 ``` 提示 ``` 若a、b、c為三個線段的邊長,且c為最大值,則 若 a+b ≦ c,三線段無法構成三角形 若 a×a+b×b < c×c,三線段構成鈍角三角形(Obtuse triangle) 若 a×a+b×b = c×c,,三線段構成直角三角形(Right triangle) 若 a×a+b×b > c×c,三線段構成銳角三角形(Acute triangle) ``` ---- ```python a=input("輸入邊長1:") b=input("輸入邊長2:") c=input("輸入邊長3:") ``` ### 那怎麼比較大小? ---- ```python max=0 if a>max: max=a if b>max: max=b if c>max: max=c ``` --- # list ---- ## 宣告方式 : [逗點分隔的清單] ```python! nums = [1, 2, 3.0, '4'] # 不一定要相同型別 arr = [] # 也可以是空的 list ``` ---- ## 取得 list 的元素 ```python! # 0, 1, 2, 3 # -4, -3, -2, -1 nums = [ 1, 5, 2, 3] print(nums[0]) # 1 print(nums[2]) # 2 print(nums[-1]) # 3 print(nums[-2]) # 2 ``` ---- ## 新增元素到 list 結尾 ```python! nums = [1, 5, 2, 3] nums.append(5) print(nums) # [1, 1, 2, 3, 5] ``` ---- ## 練習(3分鐘) 輸入一個 list,再把他 print 出來。 ```python n = int(input('請輸入 list 的長度:')) # 提示:迴圈 + 一個個 append ``` 期望執行結果: ``` 請輸入 list 的長度:3 4 5 6 [4, 5, 6] ``` ---- ### 參考解答- ```python n = int(input('請輸入 list 的長度:')) arr = [] for i in range(n): inp = int(input()) arr.append(inp) print(arr) ``` ---- ## 取得 list 的長度:len() ```python arr = [] len(arr) # 0 arr = [2, 4, 6] len(arr) # 3 ``` ---- ## list 大小排列:list.sort() & sorted() ---- ```python arr = [9,8,5,2,7,4,6,3,1,0] arr.sort() print(arr) # 0 1 2 3 4 5 6 7 8 9 arr.sort(reverse=True) print(arr) # 9 8 7 6 5 4 3 2 1 0 ``` ---- <iframe width="100%" height="500" src="https://shengyu7697.github.io/python-sort/" frameborder="0"></iframe> [點擊前往](https://shengyu7697.github.io/python-sort/) ---- ### 判斷三角形(5分鐘) ---- ```python arr = [] for i in range(3): inp = int(input()) arr.append(inp) n.sort() a = n[0] b = n[1] c = n[2] l = a * a + b * b r = c * c print(a, b, c) if a + b <= c: print('無法構成三角形') elif l < r: print('銳角三角形') elif l == r: print('直角三角形') elif l > r: print('鈍角三角形') ``` --- ## 我上次教太快了 ### 所以我再補充一下迴圈的內容 ---- ## while 的用法 #### 這裡就先自己看看 ---- ``` 迴圈是一種控制結構,允許程式在一個或多個條件成立的情況下重複執行一段程式碼,直到特定的條件不再成立。迴圈的主要目的是減少重複性的工作,讓程式可以有效處理大量相似的任務。 狀況使用迴圈的例子包括: 1. 處理列表或陣列:當你需要依次處理列表或陣列中的每個元素時,使用迴圈可以讓你一一訪問並處理它們。 2. 輸入驗證:當你需要持續驗證使用者的輸入,直到它符合特定條件,例如輸入正確的密碼。 3. 重複性任務:當你必須執行相同的操作多次,例如列印特定模式的星號或數字。 4. 檢查條件:當你需要重複檢查某個條件,直到該條件不再成立,例如等待某個事件發生。 5. 資料處理:當你需要處理大量資料或執行一系列操作,以檢查、轉換或過濾資料。 ``` ---- ## 他的用法就是 ``` python while 條件: # 迴圈內的程式碼 ``` ---- #### 說明 ``` while 是 Python 中的關鍵字,用來標示開始一個 while 迴圈。 條件 是一個布林表達式,它決定是否繼續執行迴圈。只要這個條件為真(True),迴圈就會持續執行。 迴圈內的程式碼位於冒號(:)之後,並使用縮排(通常是四個空格)來表示它們屬於迴圈的內容。 當 條件 為真時,迴圈內的程式碼將被執行,然後再次檢查 條件。這個過程將一直重複,直到 條件 變為假(False),此時迴圈停止執行,程式流程繼續向下。 ``` ---- ## 舉個例子 #### 我要如何使用while來印出數字 1 到 5 #### 那麼就可以這樣寫 ``` python count = 1 while count <= 5: print(count) count += 1 ``` ``` 這裡的 count += 1 代表 count=count+1 當 count 變數小於或等於 5 時 print(count) 會被執行 然後 count 會遞增 當 count 變成 6 時 條件變為假,迴圈停止執行。 ``` --- ## 接下來來講 for i in range #### 文字說明(一樣自己看看:) ) ``` 當你教導 Python 的迴圈 for 時,通常會使用它來重複執行一組程式碼,並對不同的元素或項目進行操作。 1.迭代列表、元組、字典、字串等容器中的元素。 2.執行固定次數的迭代,比如從 1 到 N。 3.在特定範圍內迭代,例如在一個區間內。 ``` ---- ### 有人不懂迭代嗎? ![image.png](https://hackmd.io/_uploads/S1MRs2JQp.png) ---- ### range 的用法 ``` 在Python中,range是一個用於產生一系列整數的函數。它通常用於循環和迭代操作,允許你指定一個起始值、一個結束值和一個可選的步長來產生一系列整數。 ``` #### range函數的語法一般如下: ```python! range([start], stop, [step]) ``` ``` start是可選的,表示範圍的初始值,預設為0。 stop是必需的,表示範圍的結束值(不包含在範圍內)。 step是任選的,表示範圍中相鄰兩個整數之間的步長(預設為1)。 range函數傳回一個包含從start到stop之間的整數序列,按照指定的步長遞增。該序列通常用於for循環中,用於迭代處理一系列整數。 ``` ---- ### 以下是一些範例: ```python! # 生成整数序列 [0, 1, 2, 3, 4] for i in range(5): print(i) # 生成整数序列 [2, 4, 6, 8] for i in range(2, 10, 2): print(i) # 生成整数序列 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] for i in range(10, 0, -1): print(i) ``` #### 大家可以自行練習一下 (2 min ---- ![image.png](https://hackmd.io/_uploads/rJ0hMTk7a.png) --- ### 接下來有一些小題目讓大家練習 #### 這些題目都可以用while 或for i in range 解 ---- ### 問題1:計算 1 到 10 的總和。 (2min) ---- ##### for i in range 的解法 ```python! total = 0 for i in range(1, 11): total += i print(total) ``` ##### while 的解法 ```python! total = 0 i = 1 while i <= 10: total += i i += 1 print(total) ``` ---- ### 問題2:列印 1 到 10 的平方。 (2min) ---- ##### for i in range 的解法 ```py! for i in range(1, 11): print(i ** 2) ``` ##### while 的解法 ```py! i = 1 while i <= 10: print(i ** 2) i += 1 ``` ---- ### 問題3:列印 1 到 100 中的所有偶數。 (2min) ---- ##### for i in range 的解法 ```py! for i in range(2, 101, 2): print(i) ``` ##### while 的解法 ```py! i = 2 while i <= 100: print(i) i += 2 ``` ---- ### 問題4:計算 5 的階乘。 (2min) #### 階乘還沒忘吧 ![image.png](https://hackmd.io/_uploads/HkKmJakXp.png) ---- ##### for i in range 的解法 ```py! factorial = 1 for i in range(1, 6): factorial *= i print(factorial) ``` ##### while 的解法 ```py! factorial = 1 i = 1 while i <= 5: factorial *= i i += 1 print(factorial) ``` ---- ### 問題5:列印 10 到 1 的倒數。 (3min) ---- ##### for i in range 的解法 ```py! for i in range(10, 0, -1): fraction = 1 / i print(fraction) ``` ##### while 的解法 ```py! i = 10 while i >= 1: print(1/i) i -= 1 ``` ---- ![image.png](https://hackmd.io/_uploads/ByNreJema.png) ---- ## 難度提高囉 :) ### 問題6:求1到100之間所有質數。 ##### 質數是指只能被1和自身整除的正整數。 (4min) ---- ```py! for num in range(2, 101): is_prime = True for i in range(2, int(num ** 0.5) + 1): if num % i == 0: is_prime = False break if is_prime: print(num) ``` ---- ![image.png](https://hackmd.io/_uploads/HkRUWklma.png) ---- ### 問題7:計算1到100之間所有質數的平方和。 (5min) ---- ```py! prime_sum_of_squares = 0 for i in range(2, 101): is_prime = True if i <= 1: is_prime = False for j in range(2, int(i**0.5) + 1): if i % j == 0: is_prime = False break if is_prime: prime_sum_of_squares += i**2 print(prime_sum_of_squares) ``` ---- ### 好啦 最後一題了 ### 問題8:計算1到100之間所有質數的平方和,找出這個平方和的因數。 #### 這題很難 自己想想吧 ---- ![image.png](https://hackmd.io/_uploads/Hyaol6kmT.png)
{"title":"資料","description":"image alt","contributors":"[{\"id\":\"3963913a-1955-4863-b231-e15edfb3078e\",\"add\":5994,\"del\":1214},{\"id\":\"35a0644c-29d6-4dd3-98eb-9df68421a475\",\"add\":4222,\"del\":194}]"}
Expand menu