数値を操作するための組み込みのPython3関数

提供:Dev Guides
移動先:案内検索

序章

Python 3には、作業中のどのプログラムでも簡単に使用できる多くの組み込み関数が付属しています。 データ型を変換できる関数もあれば、文字列などの特定の型に固有の関数もあります。

このチュートリアルでは、Python3の数値データ型で使用できるいくつかの組み込み関数について説明します。 次の機能について説明します。

  • 絶対値の場合はabs()
  • divmod()商と剰余を同時に見つける
  • pow()数値を特定の累乗にする
  • round()数値を特定の小数点に丸めます
  • sum()は、反復可能なデータ型の項目の合計を計算します

これらのメソッドに精通することで、プログラミングの柔軟性が高まり、使用する演算子や関数を決定する際に情報に基づいた決定を下すことができます。 このチュートリアル全体を通して、これらの関数のいくつかを例とともに説明します。

前提条件

Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)

絶対値

組み込み関数abs()は、渡された数値の絶対値を返します。 数学では、絶対値は、数値が0から数直線上にある距離を指します。 絶対値は、数値がゼロからどちらの方向にあるかを考慮していません。つまり、負の数値は正の数値で表されます。

例を挙げると、15の絶対値は15-74の絶対値は74、[の絶対値はX145X]は0です。

絶対値は微積分と実際の分析にとって重要な概念ですが、移動距離などの日常の状況を考えるときにも意味があります。 たとえば、58マイル離れた場所に移動しようとして、代わりに93マイル移動した場合、元の目的地を超えてしまいます。 目的の目的地に到達するためにあと何マイル移動するかを計算したい場合、負の数になりますが、負のマイルを移動することはできません。

この問題を解決するためにabs()を使用してみましょう。

情報:このチュートリアルのサンプルコードに従うには、python3コマンドを実行して、ローカルシステムでPythonインタラクティブシェルを開きます。 次に、>>>プロンプトの後に例を追加して、例をコピー、貼り付け、または編集できます。


destination_miles.py

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
Output-35
35

出力では、abs()関数を使用しない場合、この場合は負の数-35があることがわかります。 miles_travelledmiles_from_originよりも小さい位置にある可能性がありますが、abs()関数を含めると、負の数の可能性が考慮されます。

絶対値は常に正の数またはゼロであるため、負の数の場合、abs()は正の数を返します。

正の数とゼロでabs()を使用してみましょう。

print(abs(89.9))
print(abs(0))
Output89.9
0

正の数のみを探している場合、インスタンスで正または負になる可能性のある変数でabs()を使用する可能性が最も高くなります。 負の入力または結果を説明するために、abs()を使用して、返されるものを正の数に変更します。

1つの関数で商と剰余を見つける

フロア除算(商を返す)とモジュロ除算(剰余を返す)は密接に関連しているため、両方の操作を同時に組み合わせる関数を使用すると便利です。

Pythonの組み込み関数divmod()は、この2つを組み合わせて、最初に床分割から得られる商を返し、次に余りを返します。

divmod()は2つの数値を処理するため、2つの数値を渡す必要があります。

divmod(a,b)

この関数を使用して、基本的に次のことを実行します。

a // b
a & b

80,000語の長さの本を書いたとしましょう。 出版社では、1ページあたり300語または250語のオプションがあり、それぞれの場合に何ページになるかを把握したいと思います。 divmod()を使用すると、ページ数と、追加のページにこぼれる単語の数をすぐに確認できます。

words_per_page.py

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
Output(266, 200)
(320, 0)

オプションAでは、266ページが単語で埋められ、200単語が残り(1ページの2/3)、合計267ページになります。オプションBでは、320ページの本もあります。 環境に配慮したい場合はオプションAを選択できますが、より大きなサイズの本でより印象的に見せたい場合はオプションBを選択できます。

関数divmod()は整数と浮動小数点数の両方を取ることができるので、浮動小数点数を使用する例も見てみましょう。

a = 985.5
b = 115.25

print(divmod(a,b))
Output(8.0, 63.5)

この例では、8.0は985.5を115.25で割ったフロア商であり、63.5は余りです。

床分割演算子//とモジュロ演算子%を使用して、divmod()が何をしたかを確認できることに注意してください。

print(a//b)
print(a%b)
Output8.0
63.5

Pythonでdivmod()関数を使用する場合。 除算が発生した整数と余りの両方を取得します。

Pythonでは、演算子 **を使用して数値を指数で累乗するか、2つの数値を受け取る組み込み関数pow()を使用できます。

pow()関数がどのように機能するかを確認するために、バクテリアの研究を行っていて、1から始めた場合に1日の終わりにバクテリアがいくつあるかを確認したいとします。 私たちが扱っている特定のバクテリアは1時間ごとに2倍になるので、合計時間数(この場合は24)の累乗で2(2倍)を計算します。

バクテリア.py

hours = 24
total_bacteria = pow(2,hours)

print(total_bacteria)
Output16777216

pow()関数に2つの整数を渡し、この24時間の終わりまでに、1600万を超えるバクテリアが存在することを確認しました。

数学では、3の3乗を計算する場合、通常は次のように記述されます。

完了している計算は3x3 x 3で、これは27に相当します。

Pythonで3³を計算するには、pow(3,3)と入力します。

関数pow()は整数と浮動小数点数の両方を取り、数値を特定の累乗にする場合に**演算子を使用する代わりの方法を提供します。

四捨五入

小数点以下の桁数が多いフロートを操作する場合は、数値をすばやく簡単に丸めることができることが重要になります。 組み込みのPython関数round()は、2つの数値を受け取ります。1つは丸められ、もう1つは含める小数点以下の桁数を指定します。

この関数を使用して小数点以下10桁を超える浮動小数点数を取得し、round()関数を使用して小数点以下4桁を減らします。

i = 17.34989436516001
print(round(i,4))
Output17.3499

上記の例では、小数点以下の桁数を4に制限するように指定しているため、float17.3498943651600117.3499に丸められます。

また、round()関数は数値を切り上げます。したがって、出力として17.3498を提供する代わりに、10進数8に続く数値が数値9であるため、17.3499を提供します。 。 5以上の数字が続く数字は、次の整数に切り上げられます。

round()の構文を分解してみましょう。

round(number to round,number of decimal places)

日常生活では、特にお金を使って作業する場合、数値の丸めが頻繁に発生します。 1ペニーを数人の友人に均等に分割することはできません。

チップを計算できるプログラムの例を見てみましょう。 ここでは数字を提供しますが、代わりにユーザーが提供した数字を取り込むようにプログラムを書き直すこともできます。 この例では、3人の友人が、20%のチップを追加するとともに、87.93ドルの請求書を均等に分割したいレストランに行きました。

bill_split.py

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
Output35.172000000000004
35.17

このプログラムでは、合計請求額とチップを3で割った値を計算した後、最初に数値の出力を要求します。これは、小数点以下の桁数が多い数値35.172000000000004に評価されます。 この数値は金額としては意味がないため、round()関数を使用し、小数点以下2桁に制限して、3人の友人が実際に操作できる出力を提供できるようにします。35.17

10進値が0のみの数値に丸めたい場合は、round()関数の2番目のパラメーターとして0を使用して行うことができます。

round(345.9874590348545304636,0)

これは346.0と評価されます。

floatではなく整数の形式でユーザー入力を受け取った場合、エラーを受け取らずに整数を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))
Output49.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 
Output600 # 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))
Output50.0
0

2番目の引数を含めない場合、sum()関数は、デフォルトで、反復可能な複合データ型に0を追加します。

結論

このチュートリアルでは、Pythonプログラミング言語の数値データ型で使用できるいくつかの組み込みメソッドについて説明しました。

数値の操作の詳細については、「演算子を使用してPython 3で数学を行う方法」を参照してください。リストの詳細については、「Python3のリストについて[ X191X]。」