# FDCSC110 Sep17 Slideshow - Hello, Python!
---
## Syntax 語法
----
`Python` 是一種**強縮排語言**,意思是它的縮排就是它語法的一部份。
----
:::spoiler `縮排是什麼?`
縮排是把程式碼依照一定的格式用**換行、Tab、Space**來做排版
在**弱縮排語言**中,這個動作只是讓程式碼更好閱讀而已
:::
----
而 `Python` 是以**Tab**或是**Space**加上**換行**來作為主要縮排語法。
----
縮排的時機原則上只要上一行的最後一個字元是「:」,就要縮排。
----
```python=
def main():
try:
print(input())
except EOFError:
return
if __name__ == '__main__':
main()
```
----
在上面的程式碼中,採用**Tab**加上**換行**來縮排,這也是大部分的人的縮排方法。
---
## Comments 註解
----
**註解**在程式語言中是不可或缺的一部份,因為當你需要分享你的程式碼,或是程式碼比較複雜時就會需要用到。
----
而 `Python` 的註解是用 `#` 來表示
```python=
print('hello, world.') # output "hello, world."
```
----
很可惜的是 `Python` 沒有多行註解,但可以用多行字串宣告來代替。
```python=
print('hello, world.')
'''
This is a Program
that output "hello, world.".
'''
```
---
## Variables 變數
----
**變數**,是在程式中儲存數值的方法。
在 `Python` 中,因為是**弱型別語言**,所以不需要宣告變數就可以使用。
```python=
a = 1.0
b = '1.0'
c = 1
print(b)
```
----
這裡要注意,雖然不需要宣告,但在賦予一個變數值之前,是不能使用的。
```python=
print(FDCSC) # 這是非法的
```
---
## User Input 輸入
----
在 `Python` 中,輸入是用 `input()` 函數來達成的。
----
而 `input()` 函數一次輸入一行,如果要輸入多行,可以用**迴圈**來達成。
----
這時就會有個問題產生,如果要在一行之內輸入兩個變數時怎麼辦?
----
:::spoiler 這裡的知識就有點超出範圍了,如果不懂的話怎麼辦?
~~背起來就對了~~
:::
----
基本上,如果有超過一個變數的話要用 `split()` 函數。
```python=
a, b, c = map(int, input().split()) # 輸入 "1 2 3"
print(a+b+c) # 輸出 6
```
---
## Boolean 布林值
----
`Boolean` 其實就是電腦裡面的邏輯,也就是0跟1。
----
在 `Python` 裡,`True` 代表的是1,`False` 代表的是 0。
----
在這裡要給大家一個概念,只要一個物件(變數)的值是「0」、「空」等代表**沒有**的概念,轉換成 `Boolean` 幾乎都是 `False`,反之就是 `True`。
---
## If..Else 判斷語句
----
### 邏輯運算
----
在了解 `判斷語句` 前,必須了解甚麼是程式裡的邏輯。因為這種語句在寫的時候必須要用邏輯來實現。
----
下面的表格呈現的是 `True`、`False` 經過邏輯運算子運算後的結果。
----
`and`運算子
| |True|False|
|--- |--- |--- |
|**True** |True|False|
|**False** |False|False|
----
`or`運算子
| |True|False|
|--- |--- |--- |
|**True** |True|True |
|**False** |True|False|
----
`not`運算子
|True|False|
|--- |--- |
|False|True|
----
範例程式碼
```python=
print(True and False) # False
print(not True) # False
print(True or False) # True
```
----
### 語法
----
```python=
if [Boolean]:
pass
elif [Boolean]:
pass
else:
pass
```
----
- `if` 是每個判斷句個開頭。只能有一個。
- `elif` 的意思是**else if**,也就是如果還有第二個條件的話,就可以用。可以有**多**個。
- `else` 就是除了 `if`、`elif` 條件以外的東西。只能有一個。
- `pass` 需要再在一個縮排後,沒有程式碼時使用,目的是保持語法的正確性。
----
```python=
a, b = map(int, input().split())
if a > b:
print(a)
elif a < b:
print(b)
else:
print(a+b)
```
在上面的程式碼中,
如果輸入「1 2」會輸出「2」(第五行)
如果輸入「5 3」會輸出「5」(第三行)
如果輸入「4 4」會輸出「8」(第七行)
---
## Try...Except 偵錯
----
```python=
try:
pass
except [Exception]:
pass
finally:
pass
```
----
概念跟 `判斷語句` 很像,只要找到 [Exception] 就執行該 `except` 底下的東西,如果都沒錯就執行 `try` 底下的東西,如果有意料之外的錯誤,就執行 `finally` 底下的東西。
----
其中 [Exception] 可以是 `Exception`、`EOFError`、`TypeError` 等。
----
建議要明確找出是哪一種錯誤,不要都用 `Exception`,不然會提高除錯難度。
{"metaMigratedAt":"2023-06-16T10:34:46.051Z","metaMigratedFrom":"Content","title":"FDCSC110 Sep17 Slideshow - Hello, Python!","breaks":true,"contributors":"[{\"id\":\"f6e5d959-6236-46bd-9933-dbc93eaee9e0\",\"add\":3037,\"del\":106}]"}