どうも!リョクちゃです。
さて、今回は以前に入力値の受け取り方を紹介したと思います。
(下の記事になります。)
前回は、一つの値の受け取りを学び、
複数の値を取得するといったことには触れていませんでした。
この会では、半角区切りで入力された複数の値を受け取る方法を解説していきます。
ちなみに前回は、
目次
複数の値を取得
さっそく、例として
入力値として、半角スペース区切りで下の値が入力されます。
その前に半角スペースで区切られた値を受け取るには…… 【split関数】
まず、半角スペース区切りで与えられた値を受け取るには、
sprit関数を使います。
<構文>
※ 空白だと空白文字として認識されます。
たとえば、
1 2 3 4 5 6 7 8 |
# 入力値の受け取り方 a = 'dog,Python,egg,apple' print(a) print(a.split(',')) # 出力 # dog,Python,egg,apple # ['dog', 'Python', 'egg', 'apple'] |
このようにして、使うことで区切られた値を受け取ることができますが、
ここで注目してほしいのが、区切られた値をsplit関数を使って、受け取った場合
値はリストとして返されます。
リストで返されることで、ひとつひとつの区切られた値がリストに格納されます。
では、さっそく実践してみましょう。
<与えられる入力値>
2 5 6 7 8 9
これを受け取り、ひとつずつ出力してみましょう。
前回の受け取り方で受け取ると下のようになります。
1 2 3 4 5 6 |
# 入力値の受け取り方 x = input() print(x) # 出力 # 2 5 6 7 8 9 |
これを先ほどのsplit関数を使うと、
1 2 3 4 5 6 |
# 入力値の受け取り方 x = input().split() print(x) # 出力 # ['2', '5', '6', '7', '8', '9'] |
このようにして書くことができます
。
※ 数値型は、リストに格納されるとき文字列として格納されます。
これは、input関数で受け取った際の”返り値”の型は、文字列型になるからです。
イラストでも解説していきます。
以上、イラストでの解説になります。
他にも様々な場合の受け取り方の紹介
たとえば、サイコロを3回投げた時の出目が与えられます。
これらを足した数を出力してください。
入力値としては、
<入力値>
N回 : サイコロを投げた回数
N_1 : N_1回目の出目
N_2 : N_2回目の出目
N_3 : N_3回目の出目
N_n : N_n回目の出目
2パターン書き方を紹介します。
for文
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# パターン① X = int(input()) lstX = [] for i in range(X): lstX.append(input()) print(lstX) # 入力 # 3 # 5 # 2 # 4 # 出力 # ['5', '2', '4'] |
内包表記
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# パターン② X = int(input()) lstX = [input() for i in range(X)] print(lstX) # 入力 # 3 # 5 # 2 # 4 # 出力 # ['5', '2', '4'] |
パターン①では、シンプルにfor文を使って書いています。
パターン②では、前回学んだ内包表記を使って書いています。
このようにして、様々な方法で受け取ることができます。
練習問題
① とある生徒の国語、数学、社会、理科、英語の点数がカンマ区切りで与えられます。
この生徒の5科目の点数の”合計”と”平均”を、算出し出力してください。
例)
<入力>
“40,70,88,68,32”
<望ましい出力>
合計:298
平均:59.6
おわりに
ざっくりと解説してみました。
複数の値をひとつひとつ受け取る場合は、split関数を使います。
複数行にわたった値を変数に受け取りたい場合、内包表記やfor文を使って、
リスト変数などに格納をしていきます。
入力値の受け取り方については、プログラムコンテストなどに挑む際に、
基本になってくる部分でもあるので、覚えておいてください。
・こちらの書籍を参考にPythonの理解を深めました。