E - 1.04.変数と型 Editorial /

Time Limit: 0 msec / Memory Limit: 0 KB

前のページ | 次のページ

キーポイント

書き込むデータの種類
int 整数
float 実数(浮動小数点数) 1
str 文字列

変数について

変数は「メモ」だと考えてください。一度使ったデータをまた後で使いたいときのために、名前を付けてメモをして覚えておくというものです。
「変数の名前」のことを 変数名 と言います。次の例では、整数 10 というデータを name という変数に格納(メモ)して、あとから呼び出して使用しています。

name = 10
print(name)
print(name + 2)
print(name * 2)
実行結果
10
12
20

型について

「データの種類」のことを 型(かた) と言い、変数はいずれかの型を持ちます。
なお、前節までは変数を使わず print(123) などのようにプログラムに直接整数などを書き込んでいましたが、実はこの 123 などにも型があり、この場合は整数型になっています。

以下に Python でよく使う型を挙げます。

int(整数型)

3-10 などの整数を表すことができます。

float(浮動小数点数型)

3.5 などの実数 1 を表すことができます。

str(文字列型)

"a""Hello" などの文字列を表すことができます。

代入

変数には値を代入することができます。代入するときは代入演算子「=」を使い、左側に代入先の変数を、右側に代入する値を書きます。複数回代入すると、前の値が上書きされます。

x = 3  # 変数 x に整数 3 が代入される
y = -7.3  # 変数 y に浮動小数点数 -7.3 が代入される
z = "ABC"  # 変数 z に文字列 "ABC" が代入される
x = 10 #  変数 x に 10 が代入される(上書きされる)

値が代入された変数は、以下のように呼び出すことで使うことができます。

x = 3
y = -7.3
z = "ABC"
print(x * 2)
print(y * 3)
print(z)
実行結果
6
-21.9
ABC

= の右側は、変数や演算子を含んでいても構いません。

x = 3
y = x  # y に x の値である 3 が代入される
z = x * 10 + 2  # x * 10 + 2 の計算結果が代入される
print(y)
print(z)
実行結果
3
32

なお Python の = は代入を意味していて、「等しい」という意味ではないということに注意してください。

指数表記

float 型では指数表記による記述もできます。絶対値が大きいまたは小さい数の場合は、 print 関数で出力した結果も指数表記になります。

x = 1.23e5
y = 3.5e-2
z = 2.7e-10
print(x)
print(y)
print(z)
実行結果
123000.0
0.035
2.7e-10

変数の型の宣言について

勘の良い方は、変数がどの型になるのかを書かなくて良いのか気になったかもしれません。実は Python ではユーザーが変数の型を指定(宣言)する必要はなく、プログラムで自動的に判定されます。具体的には、代入するもの(= の右側)の型によって決まります。このため、同じ変数を別の型で上書きするということもできます。

x = 3
print(x)
x = "AtCoder"
print(x)
実行結果
3
AtCoder

複合代入演算子

x5 を足す」のような、計算結果を同じ変数に代入する操作は、 x += 5 のように書くことができます。これは x = x + 5 と書いたことと同じ結果になります。

x = 2
x += 5
print(x)
実行結果
7

+= のような演算子を 複合代入演算子 と言います。前節で扱った演算子は、すべて = を付けることで複合代入演算子として使えます。

複合代入演算子 コード例 複合代入演算子を使わない書き方
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
//= x //= 3 x = x // 3
/= x /= 3 x = x / 3
**= x **= 3 x = x ** 3
%= x %= 3 x = x % 3

例えば次のように書くことができます。

x = 2
x += 5  # 7
x *= 3  # 21
x //= 2  # 10
x **= 3  # 1000
x %= 300  # 100
x -= 20  # 80
print(x)
実行結果
80

複数の変数への代入

変数 x2 を、変数 y3 を代入するという操作を同時に行いたいときは、カンマ(,)で区切って次のように書くことができます。

x, y = 2, 3
print(x)
print(y)
実行結果
2
3

これを使うと、 xy の値を入れ替える(Swap する)という操作も簡単に書くことができます。

x = 2
y = 3
x, y = y, x  # x と y を入れ替える
print(x)
print(y)
実行結果
3
2

有効数字・範囲

int 型

Python の int 型は 多倍長整数 と呼ばれていて、多くのプログラミング言語の int 型のような大きさの制限(32 bit や 64 bit など)がありません。例えば、 31000 乗は 478 桁のとても大きな整数ですが、下記のように簡単に計算することができます 2

print(3 ** 1000)
実行結果
1322070819480806636890455259752144365965422032752148167664920368226828597346704899540778313850608061963909777696872582355950954582100618911865342725257953674027620225198320803878014774228964841274390400117588618041128947815623094438061566173054086674490506178125480344405547054397038895817465368254916136220830268563778582290228416398307887896918556404084898937609373242171846359938695516765018940588109060426089671438864102814350385648747165832010614366132173102768902855220001

float 型

float 型では、 10 進法で 1516 桁程度(2 進法で 53 ビット)の有効数字で計算されます。これよりも高い精度が求められる場合は予期せぬ結果になることがあるので注意が必要です。

print(100 / 3)
実行結果
33.333333333333336

なお、浮動小数点数で表せる最大の数は約 1.8\times 10^{308} 程度、最小の数は約 -1.8\times 10^{308} 程度、最小の正の数は約 2.2\times 10^{-308} 程度です。

発展的な内容

異なる型同士の演算

前項で四則演算などの演算を学びました。その際は細かく触れませんでしたが、元の変数の型や値によって計算結果として返される型も自動的に決まります。異なる型同士の演算の場合は(同じ型同士の演算であっても場合によっては)注意が必要になります。ここですべてのパターンを網羅することはできませんが、いくつか例を挙げておきます。

int 型同士の和・差・積

整数(int)型同士の和・差・積は整数(int)型になります。

a = 7
b = 2
print(a + b)  # 整数型の 9
print(a - b)  # 整数型の 5
print(a * b)  # 整数型の 14
実行結果
9
5
14

float 型同士の和・差・積

浮動小数点数(float)型同士の和・差・積は浮動小数点数(float)型になります。

a = 3.2
b = 2.5
print(a + b)
print(a - b)
print(a * b)
実行結果
5.7
0.7000000000000002
8.0

int 型と float 型の和・差・積

片方が int 型、片方が float 型の場合の和・差・積は float 型になります。 3.5 \times 4 は数学的には整数 14 になりますが、 Python のプログラムは float 型として返します。

a = 3.5
b = 4
print(a + b)
print(a - b)
print(a * b)
実行結果
7.5
-0.5
14.0

int 型同士のべき乗

ab がともに int 型のとき、 a ** b の型はどうなるでしょうか。簡単のため a はゼロではないとします。
この場合は b \ge 0 の場合は int 型、 b < 0 の場合は float 型になります。

print(2 ** 3)
print(2 ** -3)
実行結果
8
0.125

問題

リンク先の問題を解いてください。

EX4.◯年は何秒?

前のページ | 次のページ


  1. 前節1.03四則演算と優先順位の注にも書きましたが、正確には実数ではなく浮動小数点数を表します。簡単のためここでは実数と記載しています。 

  2. ただしあまりに大きい場合は実行時間やメモリの関係で計算が行えない場合があります。手元環境で実行する際など、 PC の限界を超えるとクラッシュしてしまう可能性があるので注意してください。