pythonの基礎

Pythonの基礎

変数

変数は、値を入れておくための箱のようなものです。その箱は、内容によって型が変わり、名前をつけることができます。実際には、メモリー中にアドレスをあてがわれて、内容によって大きさも形態も変わる領域になります。
変数に値を代入するには

a = 12
の様に、左辺に変数、イコールを挟んで、右辺に値または式を記述します。この場合、変数aに数値の12が代入されます。

代入した変数はまた利用することができます。
b = a
これは変数bに変数aの内容を代入する式になります。変数に値を代入することはできますが、
12 = a
のように、12に変数aの内容を代入することはできません。なぜなら12は変数ではなく、定数だからです。定数には代入できません。

変数には型が存在します。他の言語では変数の宣言時に型を一緒に宣言するものが多いですが、pythonでは宣言はなく、代入した時に代入した型に変わるようになっています。
型には以下のものがあります。
数値		整数	int
		真偽値	bool
		浮動小数点数	float
		複素数	complex
シーケンス	リスト	list
		タプル	tuple
		文字列	str
		バイト列	bytes
セット		セット	set
マッピング	ディクショナリ	dict
などがあります。また、変数につける名前、変数名は制限があります。

  • 英字、数字、アンダースコア(_)のいずれかを含む。ただし先頭が数字ではいけない。
  • 大文字と小文字は区別される
  • ifやwhileなど登録語は使用できない

式のしくみ

式は、演算子とオペランドからできています。たとえば

10 + 2
の場合、+が演算子で、10と2がオペランドになります。オペランドは定数や変数が入ります。
print("10+2は",10 + 2,"です")
とすると、「10+2は」に続いて、10+2が実行されて、10+2の式の値として12が計算されます。なので画面には12が表示され、続いて「です。」が表示されます。このように式は単独でも実行されます。

また。この式をイコールを挟んで左辺に変数を書くと、式の値が変数に代入されます。
months = 10 + 2
では、この式はどうでしょう。
a = a + 1
イコールで結ばれているのに変な式です。ただこのイコールは代入ですから、まず最初に右辺が計算されて式の値が現在の変数aの値に1が足されたものになります。そしてそれを左辺の変数aに代入します。つまり、この行が実行されたら変数aの値が1足されます。
演算子 さきほどの式の中の演算子には、多くの種類があります
記号	名前
+	加算
-	減算
*	乗算
**	べき乗
/	除算
//	切捨除算
%	剰余
+	単項+
-	単項-
~	補数
|	ビット論理和
&	ビット論理積
^	ビット排他的論理和
<<	左シフト
>>	右シフト
and	論理積
or	論理和
not	論理否定
などがあります。

では問題です。printの中に演算子を組んで計算しなさい。

演算子には、代入を兼ねた演算子もあります。

a += 10
これは、現在の変数aの値に10を足したものを、変数aに代入するというもので、この行を実行することで変数aの値は10増えます。この代入演算子は他にも
記号	名前
+=	加算代入
-=	減算代入
*=	乗算代入
**=	累乗代入
/=	除算代入
//=	切捨除算代入
%=	剰余代入
|=	ビット論理和代入
&=	ビット論理積代入
^=	ビット排他的論理和代入
<<=	左シフト代入
>>=	右シフト代入
などがあります。

プログラムの3要素

この部分はpythonに限った話ではありません

1:順次

print("1")
print("2")
print("3")

たとえば、このようなプログラムがあると、画面には

1
2
3

と表示されます。当然のことですが、これもプログラムの要素の一つです。プログラムは特に指定がない限り上から下に順次流れていきます。

2:分岐

a = 1
if a == 1:
	print("1")
elif a == 2:
	print("2")
else:
	print("3")

このようなプログラムは、分岐を表しています。

aには今回数値の1が代入されています。ifは「もしそうなら」を表していて、if a == 1:は、「aが1か」を聞いています。

if行の最後に:がありますが、これが重要です。ifの最後の:の次の行は、1段ずれているのがわかりますか?

このずれがブロックを表しています。TABを入力したり、半角スペースをいくつか入力したりして、ifがある行よりスタート位置ずらします。このずれが同じ行は、ブロックが続いていることを表しています。

このifは、次の行が print("1")で、ずれがありますので、ifの条件に合致した場合にprintが実行されます。たまたま今回はaが1ですから、最初のifと条件が一致します。そのため、画面には 1 が表示されます。

printの次の行のelif: は 他の言語で表すと「else if」になります。この意味は、「でなくて(条件)か」を表しています。1つ目のifの条件に合致しない時に、ではこの条件ではどうでしょうかと、次の条件を提示します。

もし、この条件に合致すれば、ifの時と同じようにelifのブロックの中を実行します。

このelifは、いくつあってもかまいません。ただし、ifより先に来ることはできません。またelifの中で条件の範囲が重なる場合、先にあるelifが優先されます。elif a >= 60: をやった後に、 elif a >= 80: をすると、aが92の場合、最初のelifで処理されてしまいます。処理の順番を考えつつelifを記述してください。

そして、最後の else:はifで始まった条件のいずれにも合致しない場合の処理を行います。なので、かならずif文の最後に入ります。else,elifは省略できるので、一番簡単なifはif単発ということになります。
また条件の部分には、以下の比較演算子を記述することができます。

演算子		意味
==		右辺と左辺が等しい
!=		右辺と左辺が等しくない
>		右辺より左辺が大きい
>=		右辺より左辺が大きいか等しい
<		右辺より左辺が小さい
<=		右辺より左辺が小さいか等しい
in		右辺に左辺が存在する
not in		右辺に左辺が存在しない
is		右辺が左辺と同一である
is not		右辺が左辺と同一でない

3:繰り返し

3つ目の要素が、繰り返しです。
一度行なった処理を頭に戻って何回か繰り返す処理になります。構文としては、次の様になります。

for文
for 変数 in 繰り返し処理できるしくみ:

while文
while 継続条件:
このように、2種類の書き方が存在します。forが主に回数が決まっているもの、whileが条件が決まっているものに使用されます。またこの繰り返しはループとも言います。

繰り返し処理ができるしくみには、range()があります。例えば range(3)とすると、0,1,2の値を返してくれるので、for文で使った場合、3回繰り返す処理を記述できます。
for i in range(3):
	print(i)
この場合結果は
0
1
2
となります。1,2,3ではありません。range(個数)と読むことができます。ただしこれは range(開始値,停止値,間隔)を簡単に表したもので、開始値は省略でき、省略した場合は0、また間隔は省略でき、省略した場合は1となっています。停止値は、その値までで停止するというもので、その値にはなりません。

for i in range(3,0,-1):
	print(i)
とすると
3
2
1
となります。

次にwhileです。whileは回数が回数ではなく、継続条件が決まっているものに使います。
i = 97
while i <= 100:
	print(i)
	i = i + 1
この場合、iは97から始まり、継続条件のiが100以下の場合、繰り返します。ループの中でiの値を一つづつ増加させています。この処理を書き忘れると、iはいつまで経っても100を超えることがないので、無限ループになってしまいます。書き忘れないようにしましょう。whileはforと違って初期化や増分の処理が含まれていませんので注意が必要です。

以上が、プログラムの3つの要素になります。またifとfor,whileは重ねることができます。ifのelifの中に新しいifが重なる。for文の中でfor文が重なるなどがあります。これをネストといいます。ネストの段数はあまり深くなるとプログラムが読みづらくなるので、深くしすぎないようにしてください。