---
# System prepended metadata

title: Python程式設計入門 9/12-10/3上課內容筆記

---

# Python程式設計入門-課堂筆記 
9/12-10/3上課內容和問chatGPT得到的內容整理

9/12 變數、資料型別、運算符號
---
變數：
1.整數
2.浮點數(有小數)
3.字串(用‘’)
4.list[]
5.dict{}
6.布林值(True or False)

資料型別：
List  set  tuple(元組)  都是儲存資料的數據結構

差別：
List :  [   ]         用append remove 來增加刪除 list.append()
有序的
可變性
重複元素

Set :  {   }
無序
不可變性
不能重複

Tuple : (  )
有序
不可變性
重複元素

Dict : dict( ) or {   }
[關鍵字] =  ‘敘述’ 
可以用if 檢測字典中資料
可以用del刪除字典中資料

運算符號：
算術運算符號：

```python=
+：加法，用於將兩個數字相加。
-：減法，用於將一個數字減去另一個。
*：乘法，用於將兩個數字相乘。
/：除法，用於將一個數字除以另一個，結果是浮點數。
//：整數除法，用於將一個數字除以另一個，結果是整數部分。
%：取餘數，用於獲取兩個數字相除的餘數。
**：冪運算，用於計算一個數的次方。
```

比較運算符號：

```python=
==：等於，用於檢查兩個值是否相等。
!=：不等於，用於檢查兩個值是否不相等。
<：小於，用於檢查一個值是否小於另一個值。
>：大於，用於檢查一個值是否大於另一個值。
<=：小於等於，用於檢查一個值是否小於或等於另一個值。
>=：大於等於，用於檢查一個值是否大於或等於另一個值。
```

賦值運算符號：

```python=
=：賦值，用於將右邊的值賦給左邊的變數。
+=：加等於，用於將右邊的值加到左邊的變數上，並將結果賦給左邊的變數。
-=：減等於，用於將右邊的值減掉左邊的變數上，並將結果賦給左邊的變數。
*=：乘等於，用於將右邊的值乘到左邊的變數上，並將結果賦給左邊的變數。
/=：除等於，用於將左邊的變數除以右邊的值，並將結果賦給左邊的變數。
```

邏輯運算符號：

```python=
and：邏輯與，用於檢查兩個條件是否都為True。
or：邏輯或，用於檢查兩個條件是否至少有一個為True。
not：邏輯非，用於反轉條件的值。
```



---

9/19 條件、迴圈、函數
---
for 迴圈：
for 變數 in range()
可以自訂迴圈次數，或是變數要從多少到多少，但是最後一項並不會做迴圈
例如說要從變數1迴圈到變數10
`for i in range(1,11):`

if 條件語句：
可以用來篩選資料，或根據不同資料做不同處理。
結構是
```python=
if ...:
elif ...:
else:
```

for迴圈和if條件可以搭配運用，像是針對一個資料庫中的所有數據做檢測時，用for迴圈使檢測可以檢測到每個數據，再搭配if來去幫數據分類

while (if + for)：
有條件的迴圈，特定條件下才會做迴圈

自定義函數:
用def 後面接函數代號
接者輸入想要給這個函數的指令
之後就可以用這個函數

---

9/26 類別、物件導向、Python模組
---
類別：
```python=
> class Dog:
> 
>     def __init__(self, name, age):
>         self.name = name
>         self.age = age
> 
>     def bark(self):
>         print(f"{self.name} 嗚嗚叫！")
> 
> # 創建兩個Dog物件
> dog1 = Dog("旺財", 3)
> dog2 = Dog("皮皮", 2)
> 
> # 存取物件屬性
> print(f"{dog1.name} 的年齡是 {dog1.age} 歲。")
> print(f"{dog2.name} 的年齡是 {dog2.age} 歲。")
> 
> # 呼叫物件方法
> dog1.bark()
dog2.bark()
```
定義了一個Dog類別，該類別具有屬性name和age，以及一個方法bark用於打印狗叫聲。
通過創建兩個Dog物件（dog1和dog2），我們可以存取物件的屬性並呼叫方法。

物件導向：
封裝（Encapsulation）將資料和方法封裝在一個類別中，以保護資料。
繼承（Inheritance）繼承允許你創建一個新的類別，基於現有的類別。
多型（Polymorphism）多型允許不同的物件對相同的方法做出不同的回應。

```python=
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} 嗚嗚叫！"

class Cat(Animal):
    def speak(self):
        return f"{self.name} 喵喵叫！"

# 創建不同的動物物件
dog = Dog("旺財")
cat = Cat("小花")

# 使用多型呼叫speak方法
print(dog.speak())  # 輸出："旺財 嗚嗚叫！"
print(cat.speak())  # 輸出："小花 喵喵叫！"
```

模組：
用import 導入python的各種模組
```python=
# 創建一個自定義的Python模組
# 儲存為 mymodule.py

def greeting(name):
    return f"你好，{name}！"

def add(x, y):
    return x + y

# 在另一個程式中使用模組
import mymodule

print(mymodule.greeting("Alice"))  # 輸出："你好，Alice！"
result = mymodule.add(5, 3)
print(result)  # 輸出：8

```
---


10/3 輸入、輸出、除錯、例外處理
---
輸入輸出：
用input print來做輸入輸出數值
```python=
# 使用input()函數接收用戶輸入並顯示
name = input("請輸入您的名字：")
print("您的名字是：" + name)

# 使用print()函數輸出訊息
print("歡迎來到Python世界！")
```

也可以輸入檔案：
```python=
# 使用內置的 open() 函數打開一個檔案
with open('example.txt', 'r') as file:
    # 讀取檔案內容
    file_content = file.read()
    print("檔案內容：")
    print(file_content)
```
也可以輸入檔案並針對檔案內容編輯並輸出
```python=
# 打開 "input.txt" 檔案以讀取
with open('input.txt', 'r') as input_file:
    # 讀取檔案內容
    file_content = input_file.read()

# 對文本內容進行編輯（這裡只是一個示例，你可以根據需要進行編輯）
edited_content = file_content.replace('old_text', 'new_text')

# 打開 "output.txt" 檔案以寫入
with open('output.txt', 'w') as output_file:
    # 寫入編輯後的內容
    output_file.write(edited_content)

print("編輯後的文本已保存到 output.txt 中。")

```

除錯和例外處理：
用try except來處理程式錯誤
```python=
# 處理無效輸入的例外
try:
    num = int(input("請輸入一個整數："))
    result = 10 / num
    print("結果：", result)
except ValueError:
    print("請輸入有效的整數。")
except ZeroDivisionError:
    print("不能除以零。")
```
Valueerror是已經定義好的錯誤，也可以自己定義錯誤，應用在程式上面來使程式能順利運行
