Contents
プログラムの変数
今回は変数について理解しましょう。
プログラムというのは、命令とデータで成り立っています。
変数というのは、データを一時的に保存する箱のようなものだと思っていただければいいです。
それほど、難しくありませんので、安心して下さい。
変数に文字列を代入してみよう
まずは、実際に手を動かして見ましょう。
以下のコードを入力して、variable1.pyという名前で保存して下さい。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = "Hello, World!"
print (a)
これを実行すると、Hello, World!と表示されるはずです。
もうお分かりですよね。
4行目のaというのが変数です。
変数aにダブルクォーテーションで囲んだ文字列Hello, World!を代入していますので、aにはHello, World!という文字列が入っています。
その変数aをprintしていますので、aの中に入っている文字列が展開されてHello, World!と表示されます。
難しくないですよね。
プログラムは、複雑になってくることが多いのですが、1つずつ分解してシンプルに考えればすごく単純です。
複雑なプログラムでも、1つずつ丁寧に動きを追っていけば、何も難しいことはありません。
変数に数字を代入してみよう
次は数字です。
以下のコードを入力してvariable2.pyという名前で保存して下さい。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = 3
print (a)
これを実行するとどうなるでしょう?
簡単ですよね。
3と表示されます。
先ほどの、文字列の代わりに数字を変数aに代入しているだけなので説明は要りませんよね。
文字列を+で連結しよう
では、Print文による文字列や数字の出力という記事でも解説したように、文字列を+で連結してみましょう。
以下のコードを入力して、variable3.pyという名前で保存しましょう
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = "Hello, "
b = "World!"
print (a + b)
これを実行すると、Hello, World!と表示されます。
文字列と文字列を+で繋ぐと、文字列と文字列が連結されるんでしたよね?
以下のようにしても、同じようにHello, Worldと表示されます。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = "Hello, "
print (a + "World!")
変数aに入っているのは文字列なので、それに文字列を+で連結しているのでやっていることは同じですよね。
数字を+で連結しよう
同じように数字を+で連結しましょう。
以下のコードを入力して、variable4.pyという名前で保存して下さい。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = 3
b = 5
print (a + b)
これを実行するとどうなるでしょう?
これはちょっと間違えやすいので、注意して下さいね。
これを実行すると、8と表示されます。
数字はダブルクォーテーションで囲まずにそのまま書くと、文字列ではなく数字として認識されるんでしたよね。
ということは、aという変数には3という数字、bという変数には5という数字が入っていることになります。
数字と数字を+で連結すると、Pythonは足し算と判断します。
したがって、3+5=8となります。
もし、3と5を文字列として認識させて3と5を連結させて35と表示させたければ、数字をダブルクォーテーションで囲んで文字列にしなければなりません。
具体的には、以下のようなコードになります。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = "3"
b = "5"
print (a + b)
これを実行すると、35と表示されます。
Pythonは、数字と文字列を厳密に区別します。
ここで表示されている35というのは、見た目は数字に見えますが、数字ではなく35という文字列なので注意して下さいね。
文字列と数字については、また後ほど詳しく解説します。
数字と文字列を+で連結するとどうなる?
では、数字が入っている変数と文字列が入っている変数を+で連結するとどうなるでしょう?
例えば、以下のようなコードです。これを書いて、variable5.pyという名前で保存しましょう。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = 35
b = "Hello, World!"
print (a + b)
これを実行すると、以下のようなエラーが出ます。
Traceback (most recent call last):
File "./variable5.py", line 6, in
print (a + b)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
これは数字と文字列は+で連結できませんよ、という意味のエラーです。
もし、どうしても35とHello, World!を+で連結したければ、数字の35を文字列に変換してやる必要があります。
数字の35を文字列に変換すると、文字列+文字列となるので、連結することができます。
数字を文字列に変換する方法は2つあります。
1つは、先ほどもやったように数字をダブルクォーテーションまたはシングルクォーテーションで囲むことです。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = "35"
b = "Hello, World!"
print (a + b)
これを実行すると、35Hello, World!と表示されます。
もう一つの方法は、str関数を使う事です。
関数をまだ説明していないので、関数の意味については今はまだ気にしなくても大丈夫です。
とにかく、str関数というのを使えば、数字を文字列に変換することができるということだけ覚えておいていただければ良いです。
strというのは文字列を意味するstringsの省略です。
コードは以下のようになります。
#!/usr/bin/python
# -*- coding: utf-8 -*-
a = 35
b = "Hello, World!"
print (str(a) + b)
これを実行すると、先ほどのエラーが消えて、35Hello, World!と表示されます。
数字が入っている文字列を、str()で囲むことで数字が文字列に変換されます。
これがstr関数です。
そんなに難しくないですよね。文字列に変換したい数字をstr()で囲むだけです。
変数に使える名前
変数は、自分で自由に名前を付けることができます。
変数名を見ただけで、その変数に何が入っているのかすぐに分かる名前をつけておくと後で混乱せずに済みます。
複数人でプログラムを作り上げることも多いので、変数名は誰が見てもその中に何が入っているか分かるようなわかりやすい名前にしましょう。
ただし、少しだけルールがあります。そのルールというのは以下の通りです。
- 変数の名前に使えるのは、アルファベット、数字、アンダーバーの3種類。
- はじめの1文字はアルファベットかアンダーバーのみ使える。つまり数字は使えない。
- アルファベットの大文字と小文字は区別される
- Pythonの予約語やand、or、notなどは使えない。
説明するまでもないと思いますが、一応簡単に説明します。
変数の名前に使えるのは、アルファベット、数字、アンダーバーの3種類。
変数の名前に使えるのは、アルファベット、数字、アンダーバーの3種類だけです。
つまり、カンマやカッコなどの記号は変数名には使えないということです。
はじめの1文字はアルファベットかアンダーバーのみ使える。
変数の名前には、アルファベット、数字、アンダーバーが使えるのですが、最初の1文字目だけはアルファベットかアンダーバーしか使えません。
つまり、3abcのように1文字目に数字を使うことはできないということです。
アルファベットの大文字と小文字は区別される。
アルファベットの大文字と小文字は厳密に区別されます。
例えば、以下の2つの変数は別の変数になります。
- abc
- ABC
それぞれ、別の変数という扱いになるので、異なる数字や文字列を入れることができます。
Pythonの予約語やand、or、notなどは使えない。
Pythonの予約語やand、or、notは別の意味を持っていますので、それと混同してしまうと訳が分からなくなるので、これらの変数は使うことができません。
例えば、printという変数名は使うことができません。
もし、printという変数名が使えるとしたら、そのprintは変数なのかprint文の命令を意味しているのか区別できませんよね。
and、or、notも同じです。これらの単語は、別の意味を持っていますので、変数名の名前としては使うことができません。
これらの単語を変数名に使うとエラーが発生します。
まとめ
今回は、Pythonの変数について説明しました。
大きなプログラムになってくるとたくさんの変数が使われますので、複雑で理解するのが難しいです。
ただ、1つ1つ分解して、じっくり考えれば、そんなに難しいものではありません。
変数については、今回解説したことだけ理解できれば十分かと思います。
これで、print文と変数を学習したので、print文と変数を組み合わせて、色々と試してみて下さい。
HTMLを出力してWebサーバーで動かしてみるのも練習になるかと思います。
例えば、以下のようなコードをWebサーバー上で実行するとどのように表示されるでしょう?
#!/usr/bin/python
# -*- coding: utf-8 -*-
print ("Content-Type: text/html\n\n")
print ("<!doctype html>")
print ("<html>")
print ("<head>")
print ("<meta charset=\"UTF-8\">")
print ("<title>variable6.py</title>")
print ("</head>")
print ("<body>")
print ("<h1>変数のテストです。</h1>")
a = 35
b = "Hello, World!"
print ("<p>" + str(a) + b + "</p>")
print ("</body>")
print ("</html>")
一度、リンクをクリックする前に、どのように表示されるかを考えてみて下さい。
答えは、↓これをクリックすると見られます。
https://www.atlantacomedyscene.com/python/variable6.py
HTMLソースも調べて、どのようにHTMLが出力されているかも確認して下さいね。
Webサーバーにアップロードして実行する方法は、前回の「作ったPythonスクリプトをWebサーバーで動かそう」という記事で説明していますので、分からない人はそちらを参考にして下さい。