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

前書き

Python 3には、作業中のプログラムですぐに使用できる多くの組み込み関数が付属しています。 convert data typesを使用できる関数もあれば、stringsなどの特定のタイプに固有の関数もあります。

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

  • 絶対値の場合はabs()

  • 商と剰余を同時に見つけるためのdivmod()

  • pow()は、数値を特定の累乗にします

  • round()は、数値を特定の小数点に丸めます

  • 反復可能なデータ型の項目の合計を計算するためのsum()

これらの方法に慣れることで、プログラミングの柔軟性が向上し、使用する演算子と関数を決定する際に十分な情報に基づいた決定を下すことができます。 このチュートリアルでは、これらの機能の一部を例とともに説明します。

絶対値

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

いくつかの例を挙げると、15の絶対値は15-74の絶対値は740の絶対値は0

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

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

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語の本を書いたとします。 サイト運営者には、ページあたり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ワードが残り(ページの⅔)合計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では、the operator**を使用して数値を指数で累乗するか、2つの数値を受け取る組み込み関数pow()を使用できます。

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

bacteria.py

hours = 24
total_bacteria = pow(2,hours)

print(total_bacteria)
Output16777216

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

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

完了している計算は3 x 3 x 3で、27に等しくなります。

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

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

丸め番号

小数点以下の桁数が多い浮動小数点を使用する場合、数値をすばやく簡単に丸めることができることが重要になります。 組み込みのPython関数round()は、丸められる数値と、含める小数点以下の桁数を指定する数値の2つの数値を受け取ります。

この関数を使用して小数点以下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人の友人がレストランに行き、87.93ドルの請求書を均等に分割し、20%のチップを追加します。

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と評価されます。

浮動小数点数ではなく整数の形式でユーザー入力を受け取った場合は、エラーを受け取らずに整数をround()に渡すこともできます。 整数が最初のパラメーターとして渡されると、整数が返されます。

合計の計算

sum()関数は、liststuples、およびdictionariesを含む数値複合データ型の合計を計算するために使用されます。

リストを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プログラミング言語の数値データ型で使用できる組み込みメソッドについて説明しました。

数値の操作の詳細については、「https://www.digitalocean.com/community/tutorials/how-to-do-math-in-python-3-with-operators[Pythonで数学を実行する方法」を参照してください。 3演算子付き]]、およびリストの詳細については、「https://www.digitalocean.com/community/tutorials/understanding-lists-in-python-3[Understanding Lists in Python 3]」をご覧ください。