値と変数
代数では、score = score + 5に解はありません。でもPythonでは、よく使うコードです。scoreが10なら、15になります。
=の記号は「等しい」という意味ではない
数学を学ぶ人にscore = score + 5という行を見せると、「それは成り立たない」と言うでしょう。自分自身に5を足した数と等しい数はないからです。代数としてはその通りで、だからこそこの行は、プログラムの中で初めて見たときに人を混乱させます。Pythonでは、=は2つのものが等しいという主張ではありません。向きのある命令です。まず右辺を計算し、次に左の名前をその結果に結びつけます。
score = 10
score = score + 5
print(score)15Pythonがするように読みましょう。1行目:右辺は10なので、名前scoreは10を指します。2行目:右辺はscore + 5で、これは10 + 5、つまり15なので、scoreは15を指します。古い10は消えます。3行目は、その時点でscoreが指しているものを出力します。このように値を指す名前を変数と呼び、それに値を与える行を代入と呼びます。
トレース表は変数を1行ずつ追う
複数の変数が変わるときは、トレース表をつくります。コードの1行につき1行、変数ごとに1列で、その行が実行されたあと各変数がもつ値を書きます。時間はかかりますが、役に立ちます。「なぜそれが出力されるのか」という疑問の大半は、トレース表で1分以内に決着します。
score = 10
bonus = score * 2
score = 0
print(score, bonus)0 20| 行 | score | bonus |
|---|---|---|
| score = 10 | 10 | (まだなし) |
| bonus = score * 2 | 10 | 20 |
| score = 0 | 0 | 20 |
| print(score, bonus) | 0 | 20 |
最後の2行を見てください。scoreを0に変えても、bonusは変わりませんでした。2行目が実行されたとき、Pythonは10 * 2 = 20を計算し、その数をbonusに与えました。bonusが持つのは結果であって、計算のしかたではないので、その20がどこから来たかを覚えていません。
すべての値には型がある
値には種類があり、型と呼ばれます。42のような整数はintです。3.5のような小数点のある数はfloatです。引用符の中の文字はstrです。TrueとFalseはboolです。組み込み関数のtypeは、持っているものがどれかを教えてくれます。型が大切なのは、演算が何をするかを決めるからです。2 + 3は足し算をし、"2" + "3"は2つの文字列を連結して"23"にします。
print(type(42))
print(type(3.5))
print(type("42"))
print(type(True))
print(2 + 3, "2" + "3")<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
5 23名前の規則
変数名には、文字、数字、アンダースコア_が使えますが、数字で始めたり、空白を含めたりはできません。大文字は別の文字として数えられるので、Scoreとscoreは2つの別の変数です。if、for、Trueのような語は言語のもので、名前には使えません。Pythonプログラマは、ふつう名前を小文字で、語の間をアンダースコアでつないで書き、lunch_priceのように値の意味を表す名前を選びます。xは手早い試しならかまいませんが、ほかの人が読むプログラムではseats_leftのほうがよいです。
a = "left"
b = "right"
a, b = b, a
print(a, b)right left最後の例は、1行で2つの値を入れ替えます。Pythonは右辺全体、b, aを先に計算し、そのあとで2つの結果をaとbに与えます。ほかの多くの言語では、同じことに3つ目の変数が要ります。
| 変数 | 値を指す名前 |
| 代入 | name = value:右辺を計算してから、名前を結びつける |
| int | 整数:7、-3、2026 |
| float | 小数点のある数:3.5、0.1 |
| str | 引用符の中の文字 |
| bool | TrueまたはFalse |
| トレース表 | 各行のあとの、すべての変数の値の表 |
- このコードは何を出力しますか。
x = 4 x = x + 3 print(x) - このコードは何を出力しますか。
a = 3 b = a a = 7 print(b) - このコードは何を出力しますか。
price = 1500 count = 3 total = price * count print(total) - このコードは何を出力しますか。
n = 2 n = n * n n = n * n print(n)48162
- このコードは何を出力しますか。
print(type(7.0)) - このコードは何を出力しますか。
print("7" + "7") - 次のうち、有効な変数名はどれですか。
- 2nd_place
- seats left
- seats_left
- for
- このコードは何を出力しますか。
a = "left" b = "right" a, b = b, a print(b) - このコードは何を出力しますか。
Score = 5 score = 9 print(Score)5914An error
- x = 10のあと、単独の行でx + 1を実行すると、xはいくつですか。
- 10
- 11
- x + 1
- エラー
- 「5 = xとx = 5は同じ意味。」 名前は左になければなりません。5 = xは、SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?で止まります。
- 「bonus = score * 2は、bonusをscoreに永久に結びつける。」 bonusは、その時点で計算が出した数を受け取ります。トレース表が示すように、あとでscoreを変えても影響しません。
- 「x + 1と書くと、xに1が足される。」 式だけでは何も変わりません。x = x + 1、または短い形のx += 1が必要です。
- =は「右辺を計算し、それにこの名前を与える」という意味。
- トレース表は、各行のあとのすべての変数を記録する。
- 型:int、float、str、bool。type()がどれかを教える。
- 名前:文字、数字、_。最初に数字は不可。大文字小文字は区別される。
このコースの出典 (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
確認日: 2026-10-19