Pythonで釣りゲームを作ろう 基礎編3 変数

最終更新日:2024年10月29日(火)

変数は、ゲームを作るうえで欠かせない存在です。変数を用いることで、プレイヤー名や所持金、レベルや持ち物といった、状況に応じて変化するものを扱うことができます。 ここでは、変数の使い方や命名規則について学ぶことができます。

1 もくじ

2 変数とは

img

変数とは、データを入れておく箱のようなもので、箱の中身はいつでも確認したり変更することができます。 変数aに値10を入れるときは、以下のように書きます。

a = 10

この変数に値を入れる=は、代入演算子と呼ばれます。



変数に入れた値は、簡単に取り出すことができます。print文の()の中に変数名を記述するだけです。

a = 10
print(a)

実行結果

10

1行目で変数aに10を代入しています。そのため、2行目のprint文の()の中のaは10と読み替えられました。


「=」の使い方に注意!!

代入演算子=は、数学で使うものとは意味が異なり、左の変数に右の値を代入するはたらきを持ちます。 そのため、以下のプログラムを実行するとエラーが起きます。

10 = a
print(a)

実行結果

PS C:\******> & C:/******/python.exe c:/******/test.py
  File "c:\******\test.py", line 1
    10 = a
    ^^
SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

10変数ではないので代入できません」と言われてしまいます。


ここで、エラーの読み方について簡単に説明します。

  File "c:\******\test.py", line 1

2行目では、エラーが起きた場所を示しています。今回はtest.pyというファイルの1行目です。

    10 = a
    ^^

3~4行目では、エラーが起きた場所の詳細^で示しています。今回は10が強調されています。

SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

5行目では、エラーの内容を示しています。今回は文字列に代入することはできませんと表示されました。

エラーコードはプログラムの誤っている箇所を特定、修正するためにとても重要です。


img

もちろん、変数には文字列も代入できます。文字列の場合は、"で囲うのでしたね。 これは「hello」と書くと変数とみなされてしまうので、変数と区別するためだったわけです。


b = "hello!"
print(b)

実行結果

hello!


3 変数の値を変更する

変数に代入し直せば、変数の値を変更することができます。

a = 10
print(a)
a = 20
print(a)

実行結果

10
20



a = a + 2と書けば、aの値を2だけ増やすことができます

a = 10
print(a)
a = a + 2
print(a)

実行結果

10
12

解答

Challenge3-1: a = 123

Challenge3-2: a = a * 2



複数の文字列も、+を用いてつなぐことができます

name = "Kosen Taro"
print(name)
print("Hello! "+name+"!")

実行結果

Kosen Taro
Hello! Kosen Taro!


数値と文字列の結合

数値同士、文字列同士は+を用いて結合できますが、数値と文字列はそのまま結合できません。 そのため、以下のプログラムを実行するとエラーが起きます。

score = 100
print("あなたのスコア:" + score)

実行結果

PS C:\******> & C:/******/python.exe c:/******/test.py
  File "c:\******\test.py", line 2 in <module>  
    print("あなたのスコア:" + score)
          ~~~~~~~~~~~^~~~~~~
TypeError: can only concatenate str (not "int") to str

文字列には文字列しか結合できません」と言われてしまいます。 そのため、数値を文字列に変換する操作が必要です。str()を用いて変換できます。

score = 100
print("あなたのスコア:" + str(score))

実行結果

あなたのスコア:100

4 変数の命名規則

変数名のつけ方には以下の決まりがあります。

4.1 半角のアルファベット、数字、_(アンダースコア)を組み合わせる

日本語やその他の記号は使わないようにしましょう。

a = 10
player1 = "Taro"
stage_name = "Island"
score = 99    <-全角
曜日 = "sunday"    <-変数名が日本語
stage2-1 = "Ocean" <--」は引き算の記号として認識される

4.2 最初の文字には数字を使わない

2文字目以降は自由に使えます。

player1 = "Taro"
1st_player = "Tom"

4.3 予約語を使わない

たとえばprintのような、Pythonへの命令として決まっている単語をそのまま使うことはできません。

print = 5
print(print)

実行結果

PS C:\******> & C:/******/python.exe c:/******/test.py
  File "c:\******\test.py", line 2, in <module>
    print(print)
TypeError: 'int' object is not callable

1行目でprintに値が上書きされてしまったので、その後ろではprint文が使えなくなってしまいます。


ここからは読みやすいコードにするためのマナーです。(絶対に守る必要はありませんが、一般的な規則です)

4.4 大文字は使わない

変数の名前は全て小文字にするのが一般的です。

player1 = "Taro"
Player1 = "Taro"

4.5 単語間は_でつなぐ

player_name = "Taro"
max_size = 12

4.6 極端に長い・短い名前は避ける

長すぎると読みにくく、短すぎると何を示す変数かわからなくなるので避けましょう。

max_mapsize_x = 64
score = 1100
maximum_value_in_the_x_direction_on_the_map_screen = 64
s = 1100

4.6.1 Challenge3-3 次の変数名は適切か判断しましょう。