第2回:変数とデータの扱い¶
前回の内容(実行方法、print()、書くときのルール)は 第1回 を見直そう。演習の取り組み方と生成AIとの付き合い方も、第1回のとおりである。
今日話すこと¶
- 変数と代入
- データの型(int・float・str)
- 算術演算(
//%**など) - 型の変換(
int()・float()・str())
前回の話を思い出そう¶
前回は print(43 * 21) で、計算結果を表示した。でも…
- 計算結果を、あとでもう一度使いたい
- 同じ値を、何度も使いたい
値に名前をつけて、とっておきたい。これが 変数 である。
変数があると何がうれしい?¶
買い物の合計とおつりを計算する例で比べてみよう。
- 値段が150円に変わったら? 変数なしは2か所、変数ありは1か所を直すだけ
120よりpriceのほうが、何の値かわかる- 身近な例:買い物アプリのカート、ゲームのHP、タイマーの残り秒数。どれも「変わる値に名前をつけて、とっておく」=変数である
変数と代入¶
変数 = 値を入れておく、名前のついた入れ物
price = 120は「変数priceに120を 代入 する」と読む=は「等しい」ではなく、右の値を左の変数に入れる 記号である- 変数名を書くと、入っている値が使われる(参照)
実行結果:
変数の値を変える¶
- あとから別の値を代入できる(上書き)
a = a + 5は「aの値を5増やす」という意味になる- 短く書ける:
a += 5(-=、*=、/=も同じように使える)
実行結果:
変数名のルール¶
- 半角の英字・数字・
_(アンダースコア)を使う - 先頭に数字は使えない(×
2nd) - 大文字と小文字は別の変数(
priceとPrice) ifやforなど、Pythonが使う単語(予約語)は使えない- 中身がわかる名前にする(○
price△x)
演習2-1¶
次のプログラムの出力を予測してから、実行して確かめよう。
もう一歩
最後に a = a + b と print(a) を足すと、何が表示されるだろうか。
ヒント
- 1行ずつ、その時点で
aとbに何が入っているかを書き出しながら追おう。 b = a * 2を実行した「その時点」のaはいくつか。
データの型¶
型 = データの種類
| 型 | 意味 | 例 |
|---|---|---|
int |
整数 | 3、-10 |
float |
小数 | 3.14、2.0 |
str |
文字列 | 'Hello'、'3' |
type() で型を確かめられる。
実行結果:
算術演算子¶
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
+ |
足し算 | 7 + 2 |
9 |
- |
引き算 | 7 - 2 |
5 |
* |
掛け算 | 7 * 2 |
14 |
/ |
割り算 | 7 / 2 |
3.5 |
// |
割り算の商 | 7 // 2 |
3 |
% |
割り算の余り | 7 % 2 |
1 |
** |
べき乗 | 7 ** 2 |
49 |
計算の順番:** → * / // % → + -。( ) の中が先に計算される。
演算と型¶
intどうしの+-*//%→int/の結果は いつもfloat(6 / 2→3.0)floatが混ざると、結果はfloat(2 + 0.5→2.5)
実行結果:
演習2-2¶
対話モードで、次の5つの式を計算しよう。入力する前に、結果を予測してから確かめよう。
もう一歩
17 // 5 * 5 + 17 % 5 は何になるだろうか。なぜそうなるのかも考えよう。
ヒント
- 予測に迷ったら、直前の「算術演算子」と「演算と型」を見直そう。
- 最後の式は、どの演算子が一番先に計算されるかを考えよう。
演習2-3¶
変数 seconds に 200 を代入し、それが「何分何秒」かを // と % で求めて、2行で表示しよう。
期待される実行結果:
もう一歩
逆に、3分20秒を秒に戻す式も書いてみよう。
ヒント
- 1分は60秒である。
- 「何分」は割り算の商、「何秒」は割り算の余りにあたる。
文字列の演算¶
+で連結:'AAA' + 'BBB'→'AAABBB'*で繰り返し:'ab' * 3→'ababab'- 数値と文字列は
+できない
型の変換¶
| 関数 | はたらき |
|---|---|
str(値) |
文字列に変換する |
int(値) |
整数に変換する(小数点以下は切り捨て) |
float(値) |
小数に変換する |
実行結果:
見た目が同じでも、型が違うと結果が違う。
演習2-4¶
次のコードを実行し、エラーメッセージを読んで直そう。エラーが出なくなったら、結果が期待どおりか確かめよう。
期待される実行結果:
もう一歩
直す前に、type() で price と count の型を確かめよう。
ヒント
- エラーメッセージの最後の行に、何と何を
+しようとしたかが書いてある。 - エラーが消えても、結果が期待どおりとは限らない。表示された合計をよく見よう。
演習2-5¶
height = 1.70(m)、weight = 65.0(kg)を代入し、BMI(体重 ÷ 身長の2乗)を計算して表示しよう。2行目には、小数点以下を切り捨てた値を表示しよう。
期待される実行結果:
もう一歩
小数第1位まで(22.4)を表示するには、どうすればよいだろうか。
ヒント
- 「身長の2乗」は
**で書ける。括弧は必要だろうか。計算の順番を思い出そう。 - 小数点以下の切り捨てには、型の変換が使える。
追加課題(時間があまった人向け・任意)¶
追加課題2-A¶
変数 n に 1234 を代入し、千の位・百の位・十の位・一の位を、// と % を使って1行ずつ表示しよう。n を 5678 に変えても正しく動くか確かめよう。
期待される実行結果:
ヒント
// 10 で一の位を切り落とし、% 10 で一の位だけを取り出せる。
追加課題2-B¶
変数 seconds に 10000 を代入し、それが「何時間何分何秒」かを求めて、3行で表示しよう。
期待される実行結果:
ヒント
1時間は3600秒である。演習2-3(何分何秒)を思い出そう。
追加課題2-C¶
次のプログラムの「ここで入れ替える」に処理を書いて、a と b の中身を入れ替えよう。
期待される実行結果:
ヒント
a = bとb = aだけでは、うまくいかない。なぜだろうか。演習2-1を思い出そう。- 変数をもう1つ使ってよい。
まとめ¶
- 変数=値に名前をつけて、とっておく。
=は代入 - 型:
int・float・str。type()で確かめる //は商、%は余り、**はべき乗。/の結果はfloat- 型が違うと
+できない →str()・int()・float()で変換 - エラーが出なくても、結果を確かめる
次回予告¶
次回は 入力と出力。input() でキーボードから値を受け取り、出力を読みやすく整える方法を学ぶ。
次回の授業冒頭に、今回の内容のミニテスト(WebClass)を行う。