Python必須の「計算方法」
執筆者:南波真之
※本記事は吉政創成株式会社「Python学習とキャリアアップ」より寄稿されたコラムとなります。

皆さん、こんにちは。南波真之(なんばさねゆき)と申します。
私は現在、Pythonについて勉強を進めています。というのも、AIやデータ分析、アプリケーション開発など様々な状況でPythonは活用されており、テクノロジー業界で活躍していくためには必要だと思っているからです。
と言っても、私はエンジニアではない文系の人間です。
「解きながら学ぶ Pythonつみあげトレーニングブック」を使って、Pythonの一番基本的なところを学んでいます。そこで、自分で学習してきて感じたポイントや疑問、皆さんにシェアできることを書いていきます。今回は、P.28〜P.35、P.44〜P.45の部分になります。
テーマは、「Pythonを使った計算」です。
コンピュータは大型の計算機と言われることもあるように、基本的には演算をすることで私達の暮らしに必要不可欠なサービスはつくられています。つまり、計算というのは基礎にしてとても重要な要素です。
Pythonで計算をする機会
例えば、あるサービスの登録者の年齢を計算するときに「今年の西暦 - 誕生年の西暦」という計算をするというのはイメージが付きやすいのではないでしょうか。その他にも自分のお買い物ポイントのようなものが買い物で消費するとその分が減る、など現在利用しているサービスを少し深堀りしてみると実は計算の塊です。
いきなり応用になりますが、1つ例を出してみます。素数を計算で出すようなプログラムです。
素数はご存知の通り、「2以上の自然数で、正の約数が1と自分自身のみであるもののこと」という定義がありますので、2からスタートして20までの数の素数を調べてみようと思います。
繰り返すのでfor文を使い、変数iに1つずつ数を入れていく
range(start, stop)で、startの数字からstopの数字を超えない数字までの連続した数値を作るので、今回は2〜20が対象範囲
for i in range(2, 21):
# 素数はPrime numberなのでPrimeという変数を用いる
Prime = True
# 繰り返しのfor文。1つ前のfor文で代入している変数i(2〜20)に対して一度変数jに代入。次に、2からその対象の値の手前まで割り算する。
# 割り切れる場合は素数ではないためFalseを返す。
for j in range(2, i):
if i % j == 0:
Prime = False
break
# 素数だったら、
if Prime:
# 普通にprintで出力
print(i)
これを実行すると、以下のように出力されます。
3
5
7
11
13
17
19
素数ですね。このようにPythonの計算はかなりの基礎知識として必要となります。
Pythonでの計算方法
それでは、Pythonの計算方法についてです。
数値と文字列
まず計算をするためには数値である必要があります。
数値とは、大きく分けると2種類存在し、整数と浮動小数点数です。
整数は1,2,3のような小数点を持たない数値のことで、浮動小数点数は1.2, 2.4, 7.7のように小数点を持つ数値のことです。
数値以外の概念として、文字列というものがあり、こちらは文字なので計算はできません。例えば'Good Morning!', 'お問い合わせはこちら'のような形です。
では実際に計算をやってみます。
計算方法
計算ルールはよく使うものですが、少し使わないと忘れてしまうので定着させることが必要だと感じました。
以下の例では、各計算を一旦変数に代入して次の行でprintを使って出力させています。
簡単なので皆さんもVSCodeやJupyterLabなどPythonを実行できるところでやってみてください。
a = 5 + 10
print(a)
引き算
b = 5 - 2
print(b)
掛け算
c = 8 * 8
print(c)
割り算
d = 72 / 9
print(d)
割り算の余り
e = 10 % 3
print(e)
べき乗
f = 6 ** 2
print(f)
出力結果はこうなりました。
3
64
8.0
1
36
問題なく計算できていますね。ちなみに、数字の後に半角スペースを空けているのは、PEP8というPythonのお約束事に沿って記述しているためです。
ある程度複雑な計算
次は少し応用編です。早速やってみます。
a = 5 + 5 * 10
print(a)
足し算と引き算と掛け算と割り算
b = 2 + 3 * 3 - 10 / 2
print(b)
()を入れた計算
c = 2 + 5 * 4 + (6 - 2 / 2) * 5
print(c)
さて、これらの答えはどうなると思いますか?小学校で習った通りの計算のやり方を行えば答えが出ます。
では、これらの出力結果はこちらです。
6.0
47.0
足し算、引き算よりも掛け算、割り算が優先的に計算され、()を使うと()から計算が始まるということです。
代入しての計算
ここまでの説明で計算結果を一度変数に代入してから出力させるということを行ってきました。変数については別の機会で取り上げますが、「データを入れておくための箱」のような認識で良いです。これは非常に効率がいい方法ですので、覚えておきましょう。
代入を使うとこのような計算も可能になります。
num = 5 * 10
num += 1
print(num)
こういう書き方もできます。出力結果はこちらです。
Pythonでの計算方法はマスターすべし
次元変換の部分で浅いコピー(参照渡し)と、深いコピー(コピー)の話と関連があるポイントがありますので、補足します。
次元変換とは、1次元の配列を2次元の配列に変更するような作業です。
reshapeというメソッドを使うのですが、配列を1次元配列に戻す際にravelメソッドとflattenメソッドを利用することがあります。
その際の値の返し方が、ravelメソッドは参照を返し、flattenメソッドはコピーを返すようになっています。
NumPyの活用で、Pythonを効率化
今回は、Pythonの使い方の基本、計算について紹介してきました。
記事のコードはまだシンプルですが、これがある程度の長いコードの中で使われてくると途端に複雑さが増したように感じます。しかし、結局は今回のような基本の積み重ねです。
私の記事で基本をしっかり固められるキッカケが与えられたら嬉しいと思っています。
インターネット・アカデミーは、Python講座が充実しています。Python認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。
よく、「プログラミングは独学でもなんとかなる」という情報もありますが、新しいことを学んでいく際の近道は「プロに教えてもらうこと」だと思います。
インターネット・アカデミーは、Python講座が充実しています。Python認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。ご興味ある方は各講座のページを覗いてみてください。
南波真之
デジタル人材育成・助成金のお役立ち資料をダウンロード

デジタル人材育成や助成金活用のお役立ち資料などをまとめてダウンロードしていただけます。コンサルタントへの無料相談をご希望の方はこちらからお問い合わせください。
- DX人材の育成&事例紹介 リスキリングのロードマップ付き
- デジタル人材育成に使える助成金制度
- デジタルスキル標準 役割別おすすめ講座