5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IT未経験者でも理解できるpython入門_第2回

Last updated at Posted at 2018-03-11

第2回 計算式、データにラベルをつけよう(変数について)

前回の復習

前回はプログラムを書く前に
日本語で手順書を書いてみましょう、という内容でした。
書いてみましたでしょうか?

こんな感じで書ければOKです。

# 手順書と同じフォルダにあるpoem.txtファイルを開く(input)
# 1行ごとに.の箇所を!に変換する(処理)
# 編集したファイルをpoem_out.txtファイルとして別名で保存する(output)

日本人相手ならこの手順書でやってくれると思います。

「よし!早速この手順書をプログラム言語で書き直そうじゃないか!」

気持ちは分かりますが、このままチャレンジしたらまず挫折します。

今回の内容

まずはプログラム言語の基本、
変数データ型に関して知る必要があります。

もし、この2つを正確に理解できたら、
冗談抜きで、pythonに限らずどんな言語でも驚くほど上達します。

今回は変数について正確に理解することがゴールです。

コンピュータは短期記憶ができない

意外にもコンピュータは
処理をしても次の瞬間全てを忘れてしまいます。

あなた「1+2は?」
PC「3です!(`・ω・´)ゞ」
あなた「あ、聞こえなかった、もう一度答えを教えて」
PC「え、何のこと?(・.・;)」

コンピュータは計算をする時は必ず
「メモリ」という作業机で計算し、結果を出すのですが、
処理が終わると「計算式」も「答え」も一括消去されます。

じゃあどうすれば計算式を覚えてくれるんでしょうか。

答えは、計算式にラベルをつけてあげるんです。

a = 1 + 1

こんな風に、1+1という計算式に「a」というラベルを作って貼ります。
※ラベルは数字ではじまらなければどんな文字列でもOK。

そうすることで、
「1+1の答えは後で使うから、メモリから消さないで!」
と指示を送ることができ、「a」と打つといつでも1+1の答えである、
2を返してくれます。
※コメント計算した

※逆に言うと、ラベルを付けないデータは
すぐに消えて忘れさられます。注意!

変数の定義

このaというラベルのことを「変数」と言い、
ラベルを貼ることを「変数に格納する」と言います。

【これだけは覚えよう】
変数・・・PCに一時的に覚えさせておきたい計算式、データにつけるラベルのこと
変数に格納する・・・ラベルを貼ること
aという変数に格納する・・・aという名前のラベルを貼ること
1+1をaという変数に格納する・・・1+1を計算した結果にaという名前のラベルを貼ること

以下、変数を正確に理解するためのFAQ

Q.「ラベルを付けられるのは計算式だけなのか?」

いえいえ、計算式だけではなく

a = 3

とすると、aを呼んだ時3が返ってきますし、
a = “hoge”
とした場合は、文字列”hoge” が返ってきます。

Q.「書き方は <変数> = <入れたい式、もしくはデータ> と決まっているのか?」

決まってます。
変数が=より左、記憶させたい式、データが=より右です。

Q.「 = 以外は使えるの?」

使えません。また、プログラムの中での「=」は
ラベルを貼る、です。
数学のイコールとは意味が違います。

Q.「以下のように2回、同じ変数に違うデータを入れたらどうなる?」

a = 3
a = 5

コンピュータは必ず「上から順番に」処理をしていきます。
3という数字にaというラベルを貼る。
次に5という数字にaというラベルを貼ろうとしますが、
「一つのラベルは、一つのデータにしか貼れません」
なので、
「3に張っていたラベルを剥がして、5に貼り直す」という動作になります。
ラベルを失った3は、すぐに消えて忘れさられます。

Q.「以下のようにラベルにラベルは貼れる?」

a = 10
b = a

貼れます。b = aは
「bはaと同じ場所を見てね」っていう意味になります。
bを呼び出すと10が返ってきます。

Q.「bという変数をまだ付けてない状態でbを呼び出そうとするとどうなる?」
エラーになります。
あなた「bを呼び出して!」
PC「bなんて設定されて無いぞ!(# ゚Д゚)」(NameErrorと言います)

Q. 「搭載メモリ以上のデータを変数に格納しようとするとどうなる?」
例えば、メモリが2GBしかないPCに100GBのデータを読み込もうとした場合・・・

PCは2GBしか広さがない机に、無理矢理100GBのデータを載せようとします。
その結果、すでにラベルが貼ってある他のデータが押し出されてしまい、
障害に繋がる致命的なエラーになります。

あなた「100GBのデータにcってラベルをつけるよ」
PC「なんかやってみたけど、メモリからデータ溢れちゃった!!\(^o^)/」
(このエラーをバッファオーバーフローと言います)

Q. 「変数は一回定義したらずっとメモリに残り続けるの?」
厳密には違うのですが、
今のところはプログラムが起動している間だけ有効、と覚えて下さい。
プログラムが終了すると、指定した変数は全て消去されます。

理解度チェック

以下、全問正解出来たら貴方も変数に関してはバッチリです!

(問題1)難易度:★☆☆☆☆

a = 3 + 4

⇨aを呼び出すと、何が返ってきますか?

(問題2)難易度:★★☆☆☆

a = 5
a = 100 + a

⇨aを呼び出すと、何が返ってきますか?

(問題3)難易度:★★★☆☆

a = 2
a = b

⇨上記を実施すると、どんな答えが返ってきますか

(問題4)難易度:★★☆☆☆

a = 5
b = a

⇨bを呼ぶと何が返ってきますか?

(問題5)難易度:★★★★☆

a = 1
b = a
a = 100

⇨bを呼ぶと何が返ってきますか?

(第3回に続く)

5
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?