第3回:入力と出力¶
前回の内容(変数、データの型、算術演算、型の変換)は 第2回 を見直そう。
今日話すこと¶
input()で入力を受け取る- 入力と型の変換
print()の使い方を広げる- f文字列と書式指定
前回の話を思い出そう¶
前回は height = 1.70 のように、値をプログラムに直接書いた。でも…
- 別の人の値で計算するたびに、プログラムを書きかえるのだろうか
- プログラムを読めない人は、使えないのだろうか
使う人が、実行中に値を入れられるようにしたい。これが 入力 である。
入力があると何がうれしい?¶
プログラムは「入力を受け取り、処理して、出力する」ものである。
| 身近な例 | 入力 | 出力 |
|---|---|---|
| 自動販売機 | お金とボタン | 飲み物 |
| 検索 | キーワード | 検索結果 |
| ゲーム | 操作 | 画面の変化 |
前回までは「処理 → 出力」だけだった。今日で3つがそろう。
input() で入力を受け取る¶
- 実行すると、コンソールで入力を待つ。コンソールをクリックして入力し、Enter を押す
- 入力された内容が、変数に代入される
- メッセージは省略できる(
x = input())
実行例:
input() の結果は、いつも文字列¶
数字を入力しても、input() の結果は文字列(str)である。
計算に使うときは、int() や float() で変換する。前回の「型の変換」が、ここで役に立つ。
| 入力したいもの | 書き方 |
|---|---|
| 整数 | int(input('…')) |
| 小数 | float(input('…')) |
| 文字列 | input('…') |
小数を表す文字列は、int() では変換できない。int('3.5') はエラーになるので、float() を使う。
演習3-1¶
次のプログラムを実行し、5 と入力したときの出力を、予測してから確かめよう。
もう一歩
3.5 と入力すると、どうなるだろうか。エラーを読んで直そう。
ヒント
xに入っているのは、数だろうか、文字列だろうか。type(x)で確かめられる。- 前回の「文字列の演算」を見直そう。
コメント¶
# から行の終わりまでは コメント で、実行されない。
- プログラムの説明やメモを書ける
- 行の先頭に
#をつけると、その行を一時的に無効にできる
実行結果:
print() にいくつも渡す¶
- カンマで区切ると、いくつでも渡せる。間に空白が入って表示される
- 数値もそのまま渡せる(
str()はいらない) sep=''をつけると、間の空白をなくせる
実行結果:
f文字列¶
f'…{変数}…' と書くと、{ } の部分が値に置きかわる。先頭の f を忘れないこと。引用符は ' ' でも " " でもよい。
{ }の中には、式も書けるstr()と+でつなぐより、読みやすい
実行結果:
演習3-2¶
名前と年齢を入力すると、「◯◯さんは、来年△歳です」と表示するプログラムを作ろう。
実行例:
もう一歩
年齢に何も入力せず Enter を押すと、どんなエラーが出るだろうか。
ヒント
- 名前と年齢のうち、計算に使うのはどちらか。
- 表示には f文字列が使える。
演習3-3¶
次のコードを実行し、価格に 120、個数に 3 を入力しよう。エラーを読んで直し、期待どおりになるまで繰り返そう。
期待される実行結果:
もう一歩
f文字列を使う直し方と、使わない直し方の両方を書こう。
ヒント
- エラーは1つずつ出てくる。1つ直したら実行して、次のエラーメッセージを読もう。
- エラーメッセージの最後の行に、何と何を計算しようとしたかが書いてある。
書式指定¶
f'{値:書式}' で、表示の形を整えられる。
| 書き方 | 結果 | 意味 |
|---|---|---|
f'{3.14159:.2f}' |
3.14 |
小数第2位まで(四捨五入) |
f'{1234567:,}' |
1,234,567 |
3桁ごとにカンマ |
f'{42:>6}' |
42 |
幅6で右寄せ |
f'{42:<6}' |
42 |
幅6で左寄せ |
- 前回の BMI(
22.49134948096886)も、f'{bmi:.1f}'で22.5と表示できる - 組み合わせもできる:
f'{35000:>8,}'は、幅8・右寄せ・カンマ区切りになる
演習3-4¶
身長(cm)と体重(kg)を入力すると、BMI を小数第1位まで表示するプログラムを作ろう。
BMI = 体重(kg) ÷ 身長(m) の2乗
実行例:
もう一歩
小数第2位まで表示するように変えよう。
ヒント
- 入力は cm だが、式で使うのは m である。
- 小数を入力できるようにするには、どの型に変換すればよいか。
- 前回の演習2-5を思い出そう。
演習3-5¶
3つの金額 1200、35000、980 を、3桁ごとにカンマをつけ、右にそろえて表示しよう。
期待される実行結果:
もう一歩
幅を10に変える、左寄せ(<)に変える、で表示を比べよう。
ヒント
- いちばん長い
35,000は何文字か。幅はそれ以上にする。 - 右寄せ・幅・カンマは、1つの書式にまとめて書ける。直前の「書式指定」を見直そう。
追加課題(時間があまった人向け・任意)¶
追加課題3-A¶
合計金額と人数を入力すると、1人あたりの金額(切り捨て)と余りを表示するプログラムを作ろう。
実行例:
ヒント
前回の // と % を使う。
追加課題3-B¶
摂氏の温度を入力すると、華氏に変換して小数第1位まで表示するプログラムを作ろう。
華氏 = 摂氏 × 9 ÷ 5 + 32
実行例:
ヒント
小数を入力できるようにするには、どうすればよいか。
追加課題3-C¶
秒数を入力すると、「時:分:秒」を2桁ずつで表示するプログラムを作ろう。
実行例:
ヒント
- 書式
02で、2桁のゼロ埋めができる(f'{5:02}'→05)。 - 前回の追加課題2-B(何時間何分何秒)を思い出そう。
まとめ¶
input()で、実行中に値を受け取るinput()の結果は、いつも文字列 →int()・float()で変換print()は、カンマで区切っていくつも渡せる- f文字列:
f'{変数}'で、値を埋めこむ - 書式指定:
.2f(小数)、,(3桁区切り)、>8(右寄せ)
次回予告¶
次回は モジュールの利用とリストの基礎。あらかじめ用意された機能を取りこんで使う方法と、たくさんのデータをひとまとまりで扱う方法を学ぶ。
次回の授業冒頭に、今回の内容のミニテスト(WebClass)を行う。