---
# System prepended metadata

title: 'FDCSC110 Sep17 Handout - Hello, Python!'

---

# FDCSC110 Sep17 Handout - 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()` 函數一次輸入一行，如果要輸入多行，可以用**迴圈**來達成。
這時就會有個問題產生，如果要在一行之內輸入兩個變數時怎麼辦?
這裡的知識就有點超出範圍了，如果不懂的話怎麼辦? ~~背起來就對了~~
基本上，如果有超過一個變數的話要用 `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`，不然會提高除錯難度。
