工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python の数値、型変換、および数学

Python の数値、型変換、および数学

この記事では、Python で使用されるさまざまな数値、あるデータ型から別のデータ型に変換する方法、および Python でサポートされている数学演算について学習します。

Python の数値データ型

Python は整数、浮動小数点数、複素数をサポートしています。それらは int として定義されています 、 float 、および complex Python のクラス

整数と浮動小数点は、小数点の有無によって区別されます。たとえば、5 は整数ですが、5.0 は浮動小数点数です。

複素数は x + yj の形式で記述されます。 、ここで x は実部で y は虚部です。

type() を使用できます 変数または値が属するクラスと isinstance() を知る関数 特定のクラスに属しているかどうかをチェックする関数。

例を見てみましょう:

a = 5

print(type(a))

print(type(5.0))

c = 5 + 3j
print(c + 3)

print(isinstance(c, complex))

上記のプログラムを実行すると、次の出力が得られます:

<class 'int'>
<class 'float'>
(8+3j)
True

整数は任意の長さにすることができますが、浮動小数点数は小数点以下 15 桁までしか正確ではありません (16 桁は不正確です)。

私たちが毎日扱う数字は、10 進数 (基数 10) の数体系です。しかし、コンピューター プログラマー (通常は組み込みプログラマー) は、2 進数 (基数 2)、16 進数 (基数 16)、および 8 進数 (基数 8) の数値システムを使用する必要があります。

Python では、数字の前にプレフィックスを適切に配置することで、これらの数字を表すことができます。次の表に、これらのプレフィックスを示します。

ナンバーシステム プレフィックス
バイナリ 「0b」または「0B」
8 進数 「0o」または「0O」
16 進数 「0x」または「0X」

ここにいくつかの例があります

# Output: 107
print(0b1101011)

# Output: 253 (251 + 2)
print(0xFB + 0b10)

# Output: 13
print(0o15)

プログラムを実行すると、出力は次のようになります:

107
253
13

型変換

あるタイプの数値を別のタイプに変換できます。これは強制とも呼ばれます。

加算、減算などの演算は、オペランドの 1 つが float の場合、整数を暗黙的に (自動的に) float に強制します。

>>> 1 + 2.0
3.0

上記で、1 (整数) が加算のために 1.0 (浮動小数点数) に変換され、結果も浮動小数点数であることがわかります。

int() のような組み込み関数を使用することもできます 、 float()complex() タイプ間で明示的に変換します。これらの関数は文字列からも変換できます。

>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)

float から integer に変換すると、数値が切り捨てられます (小数部分が削除されます)。


Python 10 進数

Python の組み込みクラス float は、私たちを驚かせるかもしれないいくつかの計算を実行します。 1.1 と 2.2 の合計が 3.3 であることは誰もが知っていますが、Python は同意していないようです。

>>> (1.1 + 2.2) == 3.3
False

何が起きているの?

コンピュータは 2 進数 (0 と 1) しか認識しないため、浮動小数点数は 2 進数の小数としてコンピュータ ハードウェアに実装されていることがわかります。このため、私たちが知っている小数のほとんどは、コンピューターに正確に保存できません。

例を見てみましょう。分数の 1/3 を 10 進数として表すことはできません。これは 0.33333333... を与えます。これは無限に長く、近似することしかできません。

10 進数の 0.1 は 0.000110011001100110011... という無限に長い 2 進数の分数になり、私たちのコンピューターはその有限数しか保存しないことがわかりました。

これは 0.1 に近づくだけで、等しくなることはありません。したがって、これはコンピュータ ハードウェアの制限であり、Python のエラーではありません。

>>> 1.1 + 2.2
3.3000000000000003

この問題を克服するために、Python に付属の decimal モジュールを使用できます。浮動小数点数の精度は小数点以下 15 桁までですが、decimal モジュールの精度はユーザーが設定できます。

違いを見てみましょう:

import decimal

print(0.1)

print(decimal.Decimal(0.1))

出力

0.1
0.1000000000000000055511151231257827021181583404541015625

このモジュールは、学校で習った小数の計算を実行したいときに使用されます。

また、重要性も保持します。 25.50 kg は 25.5 kg よりも正確であることがわかっています。これは、小数点以下の有効桁数が 1 桁に対して 2 桁あるためです。

from decimal import Decimal as D

print(D('1.1') + D('2.2'))

print(D('1.2') * D('2.50'))

出力

3.3
3.000

上記の例の末尾のゼロに注意してください。

Decimal を実装しない理由を尋ねるかもしれません。 フロートの代わりに毎回?主な理由は効率です。浮動小数点演算は Decimal より速く実行される必要があります

float の代わりに Decimal を使用する場合

通常、次の場合に Decimal を使用します。


Python 分数

Python は、その fractions を通じて小数を含む演算を提供します モジュール。

分数には分子と分母があり、どちらも整数です。このモジュールは有理数演算をサポートしています。

Fraction オブジェクトはさまざまな方法で作成できます。それらを見てみましょう。

import fractions

print(fractions.Fraction(1.5))

print(fractions.Fraction(5))

print(fractions.Fraction(1,3))

出力

3/2
5
1/3

Fraction の作成中 float から 、異常な結果が得られる可能性があります。これは、前のセクションで説明した不完全な 2 進浮動小数点数表現によるものです。

幸い、Fraction 文字列でインスタンス化することもできます。これは、10 進数を使用する場合に推奨されるオプションです。

import fractions

# As float
# Output: 2476979795053773/2251799813685248
print(fractions.Fraction(1.1))

# As string
# Output: 11/10
print(fractions.Fraction('1.1'))

出力

2476979795053773/2251799813685248
11/10

このデータ型は、すべての基本操作をサポートしています。以下にいくつかの例を示します。

from fractions import Fraction as F

print(F(1, 3) + F(1, 3))

print(1 / F(5, 6))

print(F(-3, 10) > 0)

print(F(-3, 10) < 0)

出力

2/3
6/5
False
True

Python 数学

Python は math のようなモジュールを提供しています と random 三角法、対数、確率、統計などのさまざまな数学を実行するため。

import math

print(math.pi)

print(math.cos(math.pi))

print(math.exp(10))

print(math.log10(1000))

print(math.sinh(1))

print(math.factorial(6))

出力

3.141592653589793
-1.0
22026.465794806718
3.0
1.1752011936438014
720

Python math モジュールで使用できる関数と属性の完全なリストは次のとおりです。

import random

print(random.randrange(10, 20))

x = ['a', 'b', 'c', 'd', 'e']

# Get random choice
print(random.choice(x))

# Shuffle x
random.shuffle(x)

# Print the shuffled x
print(x)

# Print random element
print(random.random())

上記のプログラムを実行すると、次のような出力が得られます (ランダムな動作のため、値が異なる場合があります)。

18
e
['c', 'e', 'd', 'b', 'a']
0.5682821194654443

Python random モジュールで使用できる関数と属性の完全なリストは次のとおりです。


Python

  1. C# 型変換
  2. Python のキーワードと識別子
  3. Python ステートメント、インデント、およびコメント
  4. Python 変数、定数、およびリテラル
  5. Python の型変換と型キャスト
  6. Python の入力、出力、およびインポート
  7. Python グローバル変数、ローカル変数、および非ローカル変数
  8. Python ディレクトリおよびファイル管理
  9. Python エラーと組み込み例外
  10. Pythonで現在の日付と時刻を取得するには?
  11. Python の type() と isinstance() と例