7. 標準入力と標準出力

7-1. input関数による標準入力
 Pythonでは、input関数を用いることでキーボードからのキー入力を文字列として取り込むことができます。数値を入力しても文字列として入力されている点に注意してください。PyScriptでinput関数を使用すると、入力ウィンドウが開くのでそこからキー入力できます。
※input("*****")のように*****部分に入力した文字列は入力受付時に表示されます。ただし、本ページ記述時の2023.11.03時点において、本ページで利用しているPyScriptではエラーになりますので注意してください。

▽サンプルプログラム7-1. input関数

a=input()
print(a)
print(type(a))
a=input("入力してください:") #2023.11.03時においてPyScriptではエラー
print(a)
▼プログラミングセル7-1. packages = [] terminal = false

7-2. input関数の入力値による算術演算
 input関数で取り込んだ値を算術演算する場合は、int型やfloat型に変換する必要があります。

▽サンプルプログラム7-2. input関数の入力値の変換

a=int(input())
print("入力値の3乗;",a**3)
a=float(input())
print("入力値の3乗;",a**3)
▼プログラミングセル7-2.

7-3. input関数における複数値の取得
 input関数で取り込んだ文字列オブジェクトでメソッド関数splitを使用することで複数の値を取得することができます。split関数は、半角スペースで文字列を分割します。split(",")のように引数を指定することで分割する区切り文字を指定することもできます。取得した複数の値は、個別に変数に代入したり、リストに格納することができます。

▽サンプルプログラム7-3. input関数を用いた複数値の取得

a=input() #半角スペース区切りで入力2つ、それ以外はエラー
b,c=a.split()
print(b, c)
a=input() 
b,c=a.split(",") #カンマ区切りで入力2つ、それ以外はエラー
print(b, c)
a=[]
a=input() #リストに格納
print(a)
▼プログラミングセル7-3.

7-4. map関数による複数値の変換
 input関数で複数の値を取得する場合、str型をint型に変換したい場合があります。そのときにmap関数を使うと複数の値を同時に変換することができます。また、a,b=のような形で代入時に複数の値を順番に対応する変数に代入(アンパック代入)することができます。

▽サンプルプログラム7-4. map関数による複数値の変換

a=input()
b,c=a.split()
d,e=map(int, (b,c))
print(d, e)
print(type(d),type(e))
a,b=map(int,input().split())
print(a, b)
print(type(a),type(b))
▼プログラミングセル7-4.

7-5. print関数による標準出力
 すでにprint関数を利用していますが、print関数についてもう少し詳しく見ていきましょう。「3. 文字列と操作」では、数値や文字列、変数の値の表示、文字列と値の並記・連結、f文字列などを紹介しました。

▽サンプルプログラム7-5. 既述のprint関数の機能

print(100) #数値の表示
print("文字列の表示")
a=100
print(a)
print("変数の値:", a) #表示の並記
print("変数の中身:"+str(a)) #文字列変換での連結
print(f"文字列への値{a}の埋め込み") #f文字列
▼プログラミングセル7-5.

 ここでは、改行なし表記と区切り文字の指定について見てみましょう。print関数のendオプションで行末の設定を変更することができます(デフォルトでは改行\n)。また、sepオプションで区切り文字を指定することもできます(デフォルトでは半角スペース)。ただし、PyScriptを利用している本サイトではendオプションはエラーになる点に注意してください。

▽サンプルプログラム7-6. 改行なし表記と区切り文字の指定

print(123, end="") #本サイトではエラー
print("abc", end="-") #本サイトではエラー
print(123, 456, sep="\n") #改行を区切り文字に設定
print(123, 456, sep="-") #ハイフンを区切り文字に設定
▼プログラミングセル7-6.

7-6. 区切り文字によるリストの表示
 リストの引き数に*を付けてsepオプションを利用すると、指定した区切り文字を使ってリストの要素を表示できます。

▽サンプルプログラム7-7. 区切り文字によるリストの表示

a=[1, 2, 3, 4, 5]
print(a, sep="-") #*がないので通常通りの表示
a=[1, 2, 3, 4, 5]
print(*a, sep="-")
▼プログラミングセル7-7.

7-7. f文字列以外の埋め込み方式
 f文字列の他に、文字列に値を埋め込む方式として、文字列のメソッド関数formatを使う方式とパーセントを使った変換指定子(%d, %f, %s)を使う方式があります。文字列のメソッド関数formatを使う方式では、文字列の.format(xxxxx)を指定すると、文字列の中の波括弧{ }の場所(フォーマットフィールド)にxxxxxを置き換えます。また、フォーマットフィールドが複数個ある場合は、順番に置換したり、インデックスで指定したり、キーで指定したりすることができます。パーセントを使った変換指定子(%d, %f, %s)を使う方式では、C言語のprintf関数のように整数値を置き換える場合は%dを、実数(浮動小数点数)を置き換える場合は%fを、文字列を置き換える場合は%sを利用します。

▽サンプルプログラム7-8. 文字列のメソッド関数format

print("{}の得点は{}点です".format("あなた", 100))
print("{1}点をとったのは{0}です".format("あなた",100))
name="あなた"
score=100
print("{}の得点は{}点です".format(name, score))
print("{name}の得点は{score}点です".format(name="あなた", score=100))
print("%sの得点は%d点です" % ("あなた", 100))
print("平均点は%f点です" % (81.3))
name="あなた"
score=100
print("%sの得点は%d点です" % (name, score))
▼プログラミングセル7-8.

7-8. 桁数の指定
 f文字列を使用例として、数値の表示桁数の設定について見てみましょう。f文字列の場合、print(f"{変数:9.5f}")のような形式で、コロンの後でフォーマットを指定します。X.Yfの場合、整数部と小数部、小数点も含み全体をX桁で表示し、小数部をY桁(四捨五入)で表示させます。

▽サンプルプログラム7-9. 桁数の指定

a=12345
print(f"{a:9d}") #全体9桁
print(f"{a:09d}") #開いている桁を0で埋める
a=3.141592653589
print(f"{a:9.5f}") #全体9桁=整数部3桁+小数点分1桁+小数部5桁
print(f"{a:09.5f}") #開いている桁を0で埋める

▼プログラミングセル7-9.

問題
 以下の問題の解答となるプログラムを記述しましょう。

  1. 5つの整数を入力し、その平均値を計算して表示させましょう。
  2. ▼プログラミングセル
  3. 名前を標準入力し「私の名前は○○です」と表示させましょう(○○を入力した名前に置き換える)。
  4. ▼プログラミングセル
  5. 学籍番号と名前、単位数をキーとした辞書型変数を用意し、値を標準入力から入力させましょう。
  6. ▼プログラミングセル
  7. 身長(cm)と体重(Kg)の2つを入力し、BMI値を求めて表示させましょう。
  8. ▼プログラミングセル
  9. 円の直径の長さ(cm)を標準入力し、円の面積を求めて表示(小数第4位を四捨五入して小数第3位までの精度)させましょう。
  10. ▼プログラミングセル