数値を扱うための組み込みPython 3関数
紹介
Python 3 は、あなたが取り組んでいるプログラムで簡単に使用できる多くの組み込み関数を提供しています。一部の関数はデータ型を変換することを可能にし、他の関数は文字列のような特定の型に特化しています。
このチュートリアルでは、Python 3の数値データ型で使用できるいくつかの組み込み関数について説明します。次の関数を取り上げます:
abs()は絶対値を求めるための関数ですdivmod()を使って商と余りを同時に求めるpow()は数値を特定の累乗に上げるための関数ですround()は特定の小数点まで数字を丸めるために使いますsum()は反復可能なデータ型のアイテムの合計を計算するために使用されます
これらのメソッドに慣れることで、プログラミング時により柔軟性が得られ、どの演算子や関数を使用するかを決定する際に情報に基づいた判断ができるようになります。このチュートリアルでは、いくつかのこれらの関数を例とともに説明していきます。
前提条件
あなたのコンピュータまたはサーバーにPython 3がインストールされ、プログラミング環境がセットアップされている必要があります。プログラミング環境がセットアップされていない場合は、オペレーティングシステム(Ubuntu、CentOS、Debianなど)に適したローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照できます。
絶対値
組み込み関数abs()は、渡した数値の絶対値を返します。数学において、絶対値は数直線上の0からの距離を指します。絶対値は、数がゼロからどの方向にあるかを考慮しないため、負の数は正の数として表されます。
いくつかの例を挙げると、15 の絶対値は 15 であり、-74 の絶対値は 74 であり、0 の絶対値は 0 です。
絶対値は微積分や実数解析にとって重要な概念ですが、移動距離のような日常的な状況を考えると、意味がわかります。たとえば、58マイル離れた場所に行こうとしているのに、代わりに93マイル移動した場合、私たちは元の目的地を通り過ぎてしまいました。今、目的地まで何マイル残っているかを計算しようとしても、負の数が出てしまいますが、負のマイルを移動することはできません。
この問題を解決するためにabs()を使いましょう:
情報:このチュートリアルの例コードに従うには、ローカルシステムで python3 コマンドを実行して Python インタラクティブシェルを開きます。そして、>>> プロンプトの後に例をコピー、貼り付け、または編集することができます。
miles_from_origin = 58 # Miles destination is from origin
miles_travelled = 93 # Miles travelled from origin to destination (too many)
Calculate how many miles destination is from current location:
miles_to_go = miles_from_origin - miles_travelled
print(miles_to_go) # Print how many miles left (a negative number)
print(abs(miles_to_go)) # Use absolute value to account for negative number
-35
35
出力を見ると、abs() 関数を使用しない場合、このインスタンスでは負の数 -35 が得られることがわかります。miles_travelled が miles_from_origin よりも小さい状況にある場合でも、abs() 関数を含めることで、負の数の可能性を考慮しています。
負の数を与えると、abs()は正の数を返します。絶対値は常に正の数またはゼロであるためです。
abs()を正の数とゼロで使用する方法を見てみましょう:
print(abs(89.9))
print(abs(0))
89.9
0
私たちは、正の数のみを探している場合に、正または負になる可能性のある変数と一緒にabs()を使用する可能性が最も高いです。負の入力または結果を考慮するために、abs()を使用して、返される値を正の数に変更します。
一つの関数で商と余りを求める
床の除算(商を返す)と剰余演算(余りを返す)が密接に関連しているため、両方の操作を一度に組み合わせる関数を使用することが便利です。
Pythonの組み込み関数divmod()は、床除算から得られる商を最初に返し、その後に余りを返す2つを組み合わせています。
divmod() は2つの数字で動作するため、2つの数字を渡す必要があります。
divmod(a,b)
この機能を使用すると、基本的に次のことを行っています:
a // b
a & b
80,000語の本を書いたとしましょう。出版社と共に、ページごとに300語または250語のオプションがあります。それぞれのケースで何ページになるかを知りたいと思います。divmod()を使うことで、すぐにページ数と、追加のページに溢れ出す単語数がわかります。
words = 80000 # How many words in our book
per_page_A = 300 # Option A, 300 words per page
per_page_B = 250 # Option B, 25- words per page
print(divmod(words,per_page_A)) # Calculate Option A
print(divmod(words,per_page_B)) # Calculate Option B
(266, 200)
(320, 0)
オプションAでは、単語で満たされた266ページと200語(ページの⅔)余りますので、合計267ページになります。一方、オプションBでは、320ページの本になります。環境に配慮したい場合はオプションAを選ぶことができますが、より大きなサイズの本で見栄えを良くしたい場合はオプションBを選ぶことができます。
関数 divmod() は整数と浮動小数点数の両方を受け取ることができるので、浮動小数点数を使用した例も見てみましょう:
a = 985.5
b = 115.25
print(divmod(a,b))
(8.0, 63.5)
この例では、8.0は985.5を115.25で割ったときの商の床であり、63.5は余りです。
floor division演算子//と剰余演算子%を使用して、divmod()が何をしたかを確認できることを覚えておいてください。
print(a//b)
print(a%b)
8.0
63.5
Pythonのdivmod()関数を使用すると、割り算が行われる回数の整数部分と余りの両方が返されます。
力
Pythonでは、演算子 ** を使用して数値を指数で累乗したり、2つの数値を取る組み込み関数 pow() を使用できます。
pow() 関数がどのように機能するかを見るために、私たちはバイオテクスに関する研究を行っており、1から始めた場合、一日の終わりにどれだけのバイオテクスがあるかを見てみましょう。私たちが扱っている特定のバイオテクスは、毎時倍増するので、総時間数(この場合は24)に対して2(倍増)を計算します。
hours = 24
total_bacteria = pow(2,hours)
print(total_bacteria)
16777216
私たちはpow()関数に2つの整数を渡し、この24時間の終わりまでに1600万以上のバイ菌がいることを確認しました。
数学では、3の3乗を計算したい場合、通常はこのように表記されます。
3の三乗
私たちが完了している計算は3 x 3 x 3で、それは27に等しいです。
Pythonで3³を計算するには、pow(3,3)と入力します。
pow()関数は整数と浮動小数点数の両方を受け付け、ある数を特定の指数に上げる場合に**演算子の代わりとして使用することができます。
数を四捨五入する
小数点以下が多い浮動小数点数を扱う際には、数を迅速かつ容易に丸める能力が重要になります。組み込みのPython関数round()は、丸める数と、含める小数点以下の桁数を指定する数の二つを引数に取ります。
10桁以上の小数を持つ浮動小数点数を取り、round() 関数を使用して小数点以下の桁数を4桁に減らします:
i = 17.34989436516001
print(round(i,4))
17.3499
上記の例では、浮動小数点数17.34989436516001は、小数点以下の桁数を4桁に制限するよう指定したため、17.3499に丸められます。
また、round() 関数は数値を切り上げるため、出力として 17.3498 を提供するのではなく、17.3499 を提供しています。これは、小数点以下の8の次の数字が9であるためです。次の整数に切り上げられるのは、5以上の数字の後に続く数値です。
round()の構文を分解してみましょう:
round(number to round,number of decimal places)
日常生活では、数を四捨五入することがよくあります。特にお金を扱うときにそうです;友達の間でペニーを均等に分けることはできません。
チップを計算できるプログラムの例を見てみましょう。ここでは数字を提供しますが、プログラムを変更してユーザーが提供する数字を使うこともできます。この例では、3人の友達がレストランに行き、87.93ドルの請求書を均等に分け、20%のチップを追加したいと考えています。
bill = 87.93 # Total bill
tip = 0.2 # 20% tip
split = 3 # Number of people splitting the bill
total = bill + (bill * tip) # Calculate the total bill
each_pay = total / split # Calculate what each person pays
print(each_pay) # What each person pays before rounded
print(round(each_pay,2)) # Round the number — we can’t split pennies
35.172000000000004
35.17
このプログラムでは、まず3人で割る合計の請求額とチップを計算した後の数値の出力を求めます。この計算の結果は小数点以下が非常に多い数値になります:35.172000000000004。この数値は金銭的な数字としては意味を成さないため、round()関数を使用して小数点以下を2桁に制限し、3人の友人が実際に使える出力を提供できるようにします:35.17.
小数点以下が0の数字に丸めたい場合は、round()関数の第二引数に0を指定することで可能です:
round(345.9874590348545304636,0)
これは346.0に評価されます。
整数を round() に渡してもエラーは返されません。これは、ユーザーから浮動小数点数ではなく整数の形式で入力を受け取る場合に便利です。最初のパラメータとして整数が渡されると、整数が返されます。
合計を計算する
sum() 関数は、リスト、タプル、および辞書を含む数値複合データ型の合計を計算するために使用されます。
リストを sum() 関数に渡すことで、リスト内のすべてのアイテムを左から右へ順番に加算できます:
some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]
print(sum(some_floats))
49.5
これは、タプルや辞書でも同様に機能します。
print(sum((8,16,64,512))) # Calculate sum of numbers in tuple
print(sum({-10: 'x', -20: 'y', -30: 'z'})) # Calculate sum of numbers in dictionary
600 # Sum of numbers in tuple
-60 # Sum of numbers in dictionary
sum() 関数は最大2つの引数を取ることができるため、最初の位置の引数を構成する数値に追加する整数または浮動小数点形式の追加の数を加えることができます:
some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]
print(sum(some_floats, 0.5))
print(sum({-10: 'x', -20: 'y', -30: 'z'},60))
50.0
0
第二引数を含めない場合、sum()関数は反復可能な複合データ型に0を加えることをデフォルトとします。
結論
このチュートリアルでは、Pythonプログラミング言語の数値データ型で使用できるいくつかの組み込みメソッドについて説明しました。
数字の扱いについてさらに学ぶには、「Python 3でオペレーターを使った数学のやり方」を読み、リストについてさらに学ぶには「Python 3のリストの理解」を見てみてください。