# 輸出結構
###### tags: `Python`
## `print ( ) 函數`
> `函數` 可以視為程式的快捷鍵;以 `print( )` 函數為例,只要輸入 `print(想輸出的東西)` ,它就可以幫你 `print` 出來,而程式語言中存在這種各式各樣,各種功能的函數,在未來就會碰到了
## 普通輸出
> 在Python中輸出變數時,可以指定一些格式,例如...
### int 整數
``` python=
n = 10
print('我有%d個喜歡的遊戲' % n)
# 輸出結果:
# 我有10個喜歡的遊戲
```
#### 或是...
``` python=
n = 10
m = 3
print('我有%3d個朋友,我們每週會一起玩%2d次Apex' % (n,m))
# 輸出結果:
# 我有 10個朋友,我們每週會一起玩 3次Apex
# %3d表示指定輸出3位數字(未滿則以空格填補
```
### str 字串
``` python=
n = 'Mr.'
print('我的綽號是%s' % n)
# 輸出結果:
# 我的綽號是Mr.
```
### float 浮點數
``` python=
n = 3.14159
print('圓周率到小數點後四位是%.4f' % n) #小數點前位數也可指定 例:%2.4f
# 輸出結果:
# 圓周率小數點前四位是3.1416
```
### 外加...
#### print 換行
> 加入`\n`會判別為需要換行
``` python=
print('我有10個喜歡的遊戲\n我有10個朋友,我們每週一起玩3次Apex')
# 輸出結果:
# 我有10個喜歡的遊戲
# 我有10個朋友,我們每週一起玩3次Apex
```
#### print 不換行
> 加入`,end=''`會判別為輸出結尾應為`''`
``` python=
print('我有10個喜歡的遊戲', end='')
print('我有10個朋友,我們每週一起玩3次Apex')
# 輸出結果:
# 我有10個喜歡的遊戲我有10個朋友,我們每週一起玩3次Apex
# 預設為:
# print('我有%d個喜歡的遊戲' % n , end='\n')
```
或是
> 將輸出內容進行拆分
``` python=
n = 10
m = 12
print ('我有%d個喜歡的遊戲,' % n, '同時,', '我有%d個朋友會跟我一起玩' % m)
# 輸出結果:
# 我有10個喜歡的遊戲, 同時, 我有12個朋友會跟我一起玩
```
#### print 空格
> 加入`\t`會判別為需要輸出同`tab鍵`的空格
``` python=
print('我有10個喜歡的遊戲\t我有10個朋友,我們每週一起玩3次Apex')
# 輸出結果:
# 我有10個喜歡的遊戲 我有10個朋友,我們每週一起玩3次Apex
```
#### print 特殊符號
```python=
print('\\')
print('\'')
print("\"")
# 輸出結果:
# \
# '
#"
```
#### print 對齊(靠右)
```python=
n = 'name='
print('[%10s]' % n)
# 輸出結果:
# [ name=]
```
#### print 對齊(靠左)
```python=
n = 'name='
print('[%-10s]' % n)
# 輸出結果:
# [name= ]
```
### print 多行
```python=
print('''Hi
我是 Harry!
''')
# 輸出結果:
# Hi
# 我是 Harry!
```
## format 格式化輸出
### int 整數
``` python=
n = 123
m = 456
print('{} {}'.format(n, m)) # 不數字編號
print('{0} {1}'.format(n, m)) # 帶數字編號(程式語言順序由0開始)
print('{1} {0}'.format(n, m)) # 自訂順序
print('{0} {1} {0}'.format(n, m)) # 重複多次輸出
print(f'{n} {m}') # 直接指定
# 輸出結果:
# 123 456
# 123 456
# 456 123
# 123 456 123
# 123 456
```
### str 字串
``` python=
n = Hello
m = World
print('{} {}'.format(n, m)) # 不數字編號
print('{0} {1}'.format(n, m)) # 帶數字編號(程式語言順序由0開始)
print('{1} {0}'.format(n, m)) # 自訂順序
print('{0} {1} {0}'.format(n, m)) # 重複多次輸出
print(f'{n} {m}') # 直接指定
# 輸出結果:
# Hello World
# Hello World
# World Hello
# Hello World Hello
# Hello World
```
### float 浮點數
``` python=
n = 3.14159
m = 6.02214
print('{} {}'.format(n, m)) # 不數字編號
print('{0} {1}'.format(n, m)) # 帶數字編號(程式語言順序由0開始)
print('{1} {0}'.format(n, m)) # 自訂順序
print('{0} {1} {0}'.format(n, m)) # 重複多次輸出
print(f'{n} {m}') # 直接指定
# 輸出結果:
# 3.14159 6.02214
# 3.14159 6.02214
# 6.02214 3.14159
# 3.14159 6.02214 3.14159
# 3.14159 6.02214
```
### 外加...
#### print 對齊(靠右)
```python=
n = 'name='
print('[{:10}]'.format(n))
# 輸出結果:
# [ name=]
```
#### print 對齊(靠左)
```python=
n = 'name='
print('[{:>10}]'.format(n))
# 輸出結果:
# [name= ]
```
#### print 對齊(置中)
```python=
n = 'name='
print('[{:^10}]'.format(n))
# 輸出結果:
# [ name= ]
```
# 輸入結構
## input()函數
### int 整數
```python=
n = input('請輸入你的年齡:')
print(n)
# 輸出結果:
# 你的年齡
```
### str 字串
```python=
n = input('請輸入你的名字:')
print(n)
# 輸出結果:
# 你的名字
```
### float 浮點數
```python=
n = input('請輸入圓周率到小數點後2位:')
print(n)
# 輸出結果:
# 3.14
```
### 請試試輸出三段程式的n的型別...
```python=
n = input('請輸入你的年齡:')
print(n)
print(type(n))
# 輸出結果:
# 你的年齡
# <class 'str'>
```
```python=
n = input('請輸入你的名字:')
print(n)
print(type(n))
# 輸出結果:
# 你的名字
# <class 'str'>
```
```python=
n = input('請輸入圓周率到小數點後2位:')
print(n)
print(type(n))
# 輸出結果:
# 3.14
# <class 'str'>
```
#### 沒錯,皆是`str 字串`
> 這是Python的設定,但也可以將`str 字串`調整成正確的型別
## `int() 函數`
```python=
n = input('請輸入你的年齡:')
n = int(n)
print(n)
print(type(n))
# 輸出結果:
# 你的年齡
# <class 'int'>
```
## `str() 函數`
```python=
n = 3.14159
n = str(n)
print(n)
print(type(n))
# 輸出結果:
# 3.14159
# <class 'str'>
```
## `float() 函數`
```python=
n = input('請輸入圓周率到小數點後2位:')
n = float(n)
print(n)
print(type(n))
# 輸出結果:
# 3.14
# <class 'float'>
```
## `eval() 函數`
> 上述三個函數是強制將變數轉換成指定的型別;但如果不確定變數是`int 整數`還是`float 浮點數`時,直接用`int() 函數`會把`float 浮點數`的`小數`去掉,強制轉換成`int 整數`
>
>而`eval() 函數`則是會自動判斷需要轉換成`int() 函數`還是`float 浮點數`
```python=
n = input('請輸入你的年齡:')
n = eval(n)
print(n)
print(type(n))
# 輸出結果:
# 你的年齡
# <class 'int'>
```
```python=
n = input('請輸入圓周率到小數點後2位:')
n = eval(n)
print(n)
print(type(n))
# 輸出結果:
# 3.14
# <class 'float'>
```
## `split() 函數`
> 在需要單行輸入多個變數的值時,可以使用`.split() 函數`,它會根據`()`內要求分割,並依順序賦值於變數
``` python=
n,m = input('輸入生日的月份及日期,範例5/13:').split('/')
print(n)
print(m)
# 輸出結果:
# 月份
# 日期
# 預設為:
# n,m = input('輸入生日的月份及日期,範例5/13:'.split('')
```