Python 標準入力について

# はじめに
　paizaラーニングを活用して、pythonを学んでいます。
　スキルチェックにおいて、標準入力で時間がかかることがあるので、備忘録を兼ねて入力要領を整理しました。 　

# 標準入力とは
　Pythonの組み込み関数`` input() ``を使用し、キーボードから入力を受け付けるものです。


　以下の表のとおり整理して記述します。
| 入力値 : 入力先  |入力値が１行 |入力値が複数行 |
|:---------------:|:----------:|:------------:|
| 数値：変数１つ   | ①          | ②            |
|　　　変数複数    | ③          | ④            |
| 文字：変数１つ   | ⑤          | ⑥            |
|　　　変数複数    | ⑦          | ⑧            |



# 数値入力
### ①　変数が1つの場合（入力値が１行）
　（例）入力値が（12）や（1.0）の場合
```python:入力方法
n = int(input())
n = float(input()) #以下、floatは省略
```
　（例）入力値が（12 13 14）の場合
```python:入力方法
n = list(map(int,input().split()))
#又は
n = [int(x) for x in input().split()]

# 結果
print(n)
# [12, 13, 14]
```
　（例）入力値（12,13,14）や入力値（12/13/14）の場合
```python:入力方法
n = list(map(int,input().split(",")))
n = [int(x) for x in input().split("/")]

# 結果
print(n)
# [12, 13, 14]
```

:::note info
小数の入力値に対しintで受け取ると「ValueError」になるので注意
split()の入力値が、”/” で区切られている場合は、split( )内を ”/” する。
:::

### ②　変数が1つの場合（入力値が複数行）
　（例）入力値（12　　　　
   　　　　　　　　13　
　　　　　　　　14）の場合
```python:入力方法
#入力値が３行の場合
n = [0]*3
for i in range(3):
    n = int(input())

#又は    

n = [int(input()) for _ in range(3)] 
```
　（例）入力値（12 22　　　　
   　　　　　　　　13 23　
　　　　　　　　14 24）の場合
```python:入力方法
n = [0]*3
for i in range(3):
    n[i] = list(map(int,input().split()))

#又は    
n =[list(map(int,input().split())) for _ in range(3)]

#又は
n =[[int(x) for x in input().split()] for _ in range(3)]

#結果
print(n)
#[[12, 22], [13, 23], [14, 24]]
```

### ③　変数が複数の場合（入力値が１行）
　（例）入力値が（12 13 14）の場合
```python:入力方法
a, b, c = map(int,input().split())
a, b, c = [int(x) for x in input().split()]
```
### ④　変数が複数の場合（入力値が複数行）
　（例）入力値（12　
   　　　　　　　　13　
　　　　　　　　14）の場合
```python:入力方法
a, b, c = (int(input()) for x in range(3))
```
　（例）入力値（12 22 32　
   　　　　　　　　13 23 33　
　　　　　　　　14 24 34）の場合
       
```python:入力方法
a, b, c = [0]*3, [0]*3, [0]*3
for i in range(3):
    a[i], b[i], c[i] = list(map(int,input().split()))

# 結果
print(a, b, c)
# [12, 13, 14] [22, 23, 24] [32, 33, 34]

a, b, c = [list(map(int,input().split())) for _ in range(3)]
a, b, c = [[int(x) for x in input().split()] for _ in range(3)]

# 結果
print(a, b, c)
# [12, 22, 32] [13, 23, 33] [14, 24, 34]
```
:::note info
内包表記は、入力先の変数が１つでも複数でもほぼ同様の記述で済むため、覚えておくと便利です
:::       

https://qiita.com/fukufukusonreiz/items/31c44738ea8d145d48f6

# 文字列入力
### ⑤　変数が1つの場合（入力値が１行）
　（例）入力値 （Qiita） の場合
```python:入力方法
s = input()
# 結果
print(s)
# Qiita

s = list(input())
# 結果
print(s)
# ['Q', 'i', 'i', 't', 'a']
```
　（例）入力値 （Qiita Qiita Qiita）の場合
```python:入力方法
s = input().split()

# 結果
print(s)
# ['Qiita', 'Qiita', 'Qiita']

s = [list(x) for x in input().split()]
# 結果
print(s)
[['Q', 'i', 'i', 't', 'a'], ['Q', 'i', 'i', 't', 'a'], ['Q', 'i', 'i', 't', 'a']]
```
### ⑥　変数が1つの場合（入力値が複数行）
　（例）入力値（Qiita　
   　　　　　　　　Qiita　
　　　　　　　　Qiita）の場合
       
```python:入力方法
s = [""]*3
for i in range(3):
    s[i] = input()

# 又は

s = [input() for _ in range(3)] 

# 結果
print(s)
# ['Qiita', 'Qiita', 'Qiita']
```
名簿のような入力の場合（setを使用）
　（例）入力値（1 Mario
 　　　　　　　　2 Luigi
　　　　　　　　3 Princess_Peach）の場合
        
```python:入力方法               
# keyを文字列で入力
roster = {(x, y) for x, y in [input().split() for _ in range(N)]}
print(roster)
# {('1','Mario'),('2','Luigi'),('3','Princess_Peach')}

# keyを数字で入力
roster = {(int(x), y) for x, y in [input().split() for _ in range(N)]}
print(roster)
# {(1,'Mario'),(2,'sLuigi'),(3,'Princess_Peach')}
```   
辞書のキーとリストの箱を作る場合
　（例）（Mario
　　　　　Luigi
　　　　　Princess_Peach）の場合

```python:入力方法 

roster = {input(): [] for _ in range(3)}
print(roster)
# {'Mario': [], 'Luigi': [], Princess_Peach': []}

```   


### ⑦　変数が複数の場合（入力値が１行）
　（例）入力値 "Qiita Qiita Qiita"の場合
```python:入力方法
s, t, u = map(str,input().split())

# 結果
print(s, t, u)
# Qiita Qiita Qiita
``` 
### ⑧　変数が複数の場合（入力値が複数行）
　（例）入力値（Qiita　
   　　　　　　　　Qiita　
　　　　　　　　Qiita）の場合
```python:入力方法
s = input()
t = input()
u = input()

# 又は

s, t, u =(input() for _ in range(3))
＃結果
print(s, t, u)
# Qiita Qiita Qiita
```       


組み込み関数 - input() — Python 3.12.4 ドキュメント

https://docs.python.org/ja/3/library/functions.html#input

# 結びに
　誤記等がありましたらご指摘いただけると幸いです。