Python3で外部からの入力値を扱うときのメモ
キーボード入力値や、Paiza などのスキルチェックでの入力値を取得する方法を初心者なりにまとめてみた
#1 基本
入力値を読み取るには input()
関数を使う。
input()
のカッコ内に文字列を入力すれば、その文字列がキー入力待機中に表示される
例)
読み取れるのは(スペースなども含めた)一行のみの入力
→ 競プロなどで複数行入力されるときは、一行ごと(上から順に)に読み取る必要㊒
a
12
abcd ef
が与えられたときは、
A = input()
B = input()
C = input()
print(A) #出力値: a
print(B) #出力値: 12
print(C) #出力値: abcd ef
となる
注) input()
では str (文字列) 型 として取得されるので、場合に応じて型変換が必要
参考
欲しいデータ型 | 記述例 |
---|---|
文字列型 | s = input() |
整数型 | n = int(input()) |
浮動小数点数型(小数値) | f = float(input()) |
#2 複数値の入力
##2-1 一行に数個のデータが与えられるとき
N(1) N(2) N(3) …
データ数が少ないときは、リスト化するよりも変数に直接代入した方がラクちん
A, B, C, … = map(int, input().split()) #データ数Nは不要
split()
は カッコ内に入力した文字で文字列を分割してくれる。
なお、初期値(未記入のとき)ではスペースで分割される。
例) カンマで区切られた文字列 → split(',')
##2-2 データ数が多いとき
###2-2-1 横1列のとき
N(1) N(2) N(3) N(4) … N(n)
このときは、リスト化する
Nums = list(map(int, input().split()))
文字列ならば int
ではなく、 str
を使う
###2-2-2 縦1列のとき
N
N(1)
N(2)
︙
N(n)
このときは、(1)リスト化する、もしくは (2)上から順に1個ずつ処理する
Nums = []
n = int(input())
for i in range(n):
Nums.append(int(input())) # Nums+=[int(input())] でも可
append()
は、カッコ内のデータをリストの最後尾に添える関数
リストを追加すると、リストのまま追加される。
例) [1, 2, 4, [2, 3]]
extend()
を使えば、リストの要素だけがリストに追加される
n = int(input())
for i in range(n):
a = int(input())
#以下、N(i) に対する処理内容を書く
#3 特殊な入力
##3-1 データ数が分からない縦列の入力
N(1)
N(2)
N(3)
︙
N(n)
try-except構文を使い、データが入力されている間だけリストに追加する
Nums = []
while True:
try:
Nums.append(int(input()))
except:
break
##3-2 多次元配列
N
a(1) b(1) c(1)
a(2) b(2) c(2)
︙ ︙ ︙
a(n) b(n) c(n)
このときは、先にリストを作っておきfor文で代入
n = int(input())
a = [0] * n
b = [0] * n
c = [0] * n
for i in range(n):
a[i], b[i], c[i] = map(int, input().split())