Pythonの基礎
変数変数は、値を入れておくための箱のようなものです。その箱は、内容によって型が変わり、名前をつけることができます。実際には、メモリー中にアドレスをあてがわれて、内容によって大きさも形態も変わる領域になります。
変数に値を代入するには
a = 12
代入した変数はまた利用することができます。
b = a
12 = a
変数には型が存在します。他の言語では変数の宣言時に型を一緒に宣言するものが多いですが、pythonでは宣言はなく、代入した時に代入した型に変わるようになっています。
型には以下のものがあります。
数値 整数 int
真偽値 bool
浮動小数点数 float
複素数 complex
シーケンス リスト list
タプル tuple
文字列 str
バイト列 bytes
セット セット set
マッピング ディクショナリ dict
- 英字、数字、アンダースコア(_)のいずれかを含む。ただし先頭が数字ではいけない。
- 大文字と小文字は区別される
- ifやwhileなど登録語は使用できない
式は、演算子とオペランドからできています。たとえば
10 + 2
print("10+2は",10 + 2,"です")
また。この式をイコールを挟んで左辺に変数を書くと、式の値が変数に代入されます。
months = 10 + 2
a = a + 1
演算子
さきほどの式の中の演算子には、多くの種類があります
記号 名前
+ 加算
- 減算
* 乗算
** べき乗
/ 除算
// 切捨除算
% 剰余
+ 単項+
- 単項-
~ 補数
| ビット論理和
& ビット論理積
^ ビット排他的論理和
<< 左シフト
>> 右シフト
and 論理積
or 論理和
not 論理否定
では問題です。printの中に演算子を組んで計算しなさい。
-
300円の2割引の消費税10%はいくらか
print((300*(1-0.2))*1.1)
演算子には、代入を兼ねた演算子もあります。
a += 10
記号 名前
+= 加算代入
-= 減算代入
*= 乗算代入
**= 累乗代入
/= 除算代入
//= 切捨除算代入
%= 剰余代入
|= ビット論理和代入
&= ビット論理積代入
^= ビット排他的論理和代入
<<= 左シフト代入
>>= 右シフト代入
この部分は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 継続条件:
繰り返し処理ができるしくみには、range()があります。例えば range(3)とすると、0,1,2の値を返してくれるので、for文で使った場合、3回繰り返す処理を記述できます。
for i in range(3):
print(i)
0
1
2
for i in range(3,0,-1):
print(i)
3
2
1
次にwhileです。whileは回数が回数ではなく、継続条件が決まっているものに使います。
i = 97
while i <= 100:
print(i)
i = i + 1
以上が、プログラムの3つの要素になります。またifとfor,whileは重ねることができます。ifのelifの中に新しいifが重なる。for文の中でfor文が重なるなどがあります。これをネストといいます。ネストの段数はあまり深くなるとプログラムが読みづらくなるので、深くしすぎないようにしてください。