---
# System prepended metadata

title: 變數
tags: [Python]

---

---
tags: Python
---

# 變數

## 宣告？Python不需要！

### Python中的變數是不需要事先進行宣告的，我們只要直接使用即可。

---
## 輸入

在Python中，我們使用 `input()` 函式來進行輸入，且預設輸入型態皆是字串 `str`。
因為 `input()` 是一個函式，所以小括號是不可以省略的。
而Python也提供了一個便利的功能，讓我們可以直接在 `input()` 的小括號裡面打上提醒使用者輸入的內容，例如:
```python=
s = input("請輸入你的名字: ")
```
此時在螢幕上會顯示 `請輸入你的名字: ` 並等待使用者輸入，
當我們輸入時，便會直接存進s這個變數中。

---
## 輸出

Python的輸出是使用`print()`函式，括號內可以有多個變數，且輸出完會自動換行。
例如:
```python=
s = input("請輸入你的名字: ")
print(s, "你好!")
```
輸入: `ABC`
輸出: `ABC 你好!`

我們可以發現，以逗號隔開的變數，Python會自動輸出空格間隔，若不想要空白區隔，有幾種方式可以解決。

* 使用`end=`來實現
    
    在`print()`函式新增一個參數`end=`，這個參數可以讓我們決定`print()`要以什麼作為結尾，沒有此參數便是以換行字元`'\n'`為結尾。
    
    以上面的程式碼為例，我們如果不想要名字與你好之間有空格，則可以寫成:
    ```python=
    s = input("請輸入你的名字: ")
    print(s, end='')
    print("你好!")
    ```
    輸入: `ABC`
    輸出: `ABC你好!`
    
* 使用**字串串接**來實現
    
    Python的字串只需要使用`+`便可以進行串接，串接時自然就不會有空格了，
    以同樣的程式碼舉例:
    ```python=
    s = input("請輸入你的名字: ")
    print(s + "你好!")
    ```
    輸入: `ABC`
    輸出: `ABC你好!`
    可以發現程式碼變短了，可讀性也沒有降低，因此這是一個不錯的方法！
    但是，這是輸出的變數同樣是字串的情況，如果想要輸出的變數不是字串呢？
    這時候就要使用到**資料轉型**了！

---
## 資料轉型

前面有說到，Python預設輸入型態都是字串`str`，那如果我們想要運算數字，就需要把輸入轉換成整數 `int` 或是浮點數 `float` 型態，
寫法也非常簡單，只要用 `新的變數型態(原本的變數名稱)` 便可以完成資料轉型。

假設我要寫一個程式運算某生成績加十分後的結果 ~~(聽起來很白癡，但就先這樣吧)~~ ，可以寫成:
```python=
grade = int(input("請輸入成績: "))
print("新的成績:", grade + 10)
```
輸入: `55`
輸出: `新的成績: 65`

其中的 `int(input("請輸入成績: ")` 有使用到**複合函式**的概念， 
我們先用 `input()` 來取得使用者輸入的內容，再用 `int()` 來將剛剛的輸入轉型成整數型態。

如果要解決前面不想要輸出有空格的問題，也可以使用資料轉型來達成，範例如下:
```python=
grade = int(input("請輸入成績: "))
print("我今天小考考" + str(grade) + "分~")
```
輸入: `55`
輸出: `我今天小考考55分~`
