Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python-Zahlen, Typumwandlung und Mathematik

Python-Zahlen, Typumwandlung und Mathematik

In diesem Artikel erfahren Sie mehr über die verschiedenen Zahlen, die in Python verwendet werden, wie Sie von einem Datentyp in den anderen konvertieren und welche mathematischen Operationen in Python unterstützt werden.

Zahlendatentyp in Python

Python unterstützt Ganzzahlen, Fließkommazahlen und komplexe Zahlen. Sie sind als int definiert , float , und complex Klassen in Python.

Ganzzahlen und Fließkommazahlen werden durch das Vorhandensein oder Fehlen eines Dezimalpunkts getrennt. Beispielsweise ist 5 eine Ganzzahl, während 5,0 eine Gleitkommazahl ist.

Komplexe Zahlen werden in der Form x + yj geschrieben , wobei x der Realteil ist und y ist der Imaginärteil.

Wir können den type() verwenden Funktion, um zu wissen, zu welcher Klasse eine Variable oder ein Wert gehört und isinstance() Funktion, um zu prüfen, ob es zu einer bestimmten Klasse gehört.

Sehen wir uns ein Beispiel an:

a = 5

print(type(a))

print(type(5.0))

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

print(isinstance(c, complex))

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:

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

Während ganze Zahlen beliebig lang sein können, ist eine Fließkommazahl nur bis auf 15 Dezimalstellen genau (die 16. Stelle ist ungenau).

Die Zahlen, mit denen wir täglich zu tun haben, sind dezimal (Basis 10) Zahlensystem. Aber Computerprogrammierer (im Allgemeinen eingebettete Programmierer) müssen mit binären (Basis 2), hexadezimalen (Basis 16) und oktalen (Basis 8) Zahlensystemen arbeiten.

In Python können wir diese Zahlen darstellen, indem wir dieser Zahl ein entsprechendes Präfix voranstellen. Die folgende Tabelle listet diese Präfixe auf.

Zahlensystem Präfix
Binär '0b' oder '0B'
Oktal '0o' oder '0O'
Hexadezimal '0x' oder '0X'

Hier sind einige Beispiele

# Output: 107
print(0b1101011)

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

# Output: 13
print(0o15)

Wenn Sie das Programm ausführen, lautet die Ausgabe:

107
253
13

Typumwandlung

Wir können einen Zahlentyp in einen anderen umwandeln. Dies wird auch als Zwang bezeichnet.

Operationen wie Addition, Subtraktion zwingen Ganzzahl implizit (automatisch), wenn einer der Operanden Float ist.

>>> 1 + 2.0
3.0

Wir können oben sehen, dass 1 (Integer) zur Addition in 1,0 (Float) umgewandelt wird und das Ergebnis ebenfalls eine Fließkommazahl ist.

Wir können auch eingebaute Funktionen wie int() verwenden , float() und complex() um explizit zwischen Typen zu konvertieren. Diese Funktionen können sogar Strings konvertieren.

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

Bei der Umwandlung von Float in Integer wird die Zahl abgeschnitten (Dezimalstellen werden entfernt).


Python-Dezimalzahl

Die in Python eingebaute Float-Klasse führt einige Berechnungen durch, die uns in Erstaunen versetzen könnten. Wir alle wissen, dass die Summe von 1,1 und 2,2 3,3 ergibt, aber Python scheint anderer Meinung zu sein.

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

Was ist los?

Es stellt sich heraus, dass Gleitkommazahlen in Computerhardware als binäre Brüche implementiert sind, da der Computer nur binär (0 und 1) versteht. Aus diesem Grund können die meisten uns bekannten Dezimalbrüche nicht genau in unserem Computer gespeichert werden.

Nehmen wir ein Beispiel. Wir können den Bruch 1/3 nicht als Dezimalzahl darstellen. Das ergibt 0,33333333... was unendlich lang ist und wir können es nur annähern.

Es stellt sich heraus, dass der Dezimalbruch 0,1 einen unendlich langen Binärbruch von 0,000110011001100110011 ergibt... und unser Computer speichert nur eine endliche Zahl davon.

Dies wird nur ungefähr 0,1 sein, aber niemals gleich sein. Daher ist es die Einschränkung unserer Computerhardware und kein Fehler in Python.

>>> 1.1 + 2.2
3.3000000000000003

Um dieses Problem zu lösen, können wir das in Python enthaltene Dezimalmodul verwenden. Während Fließkommazahlen eine Genauigkeit von bis zu 15 Dezimalstellen haben, hat das Dezimalmodul eine vom Benutzer einstellbare Genauigkeit.

Sehen wir uns den Unterschied an:

import decimal

print(0.1)

print(decimal.Decimal(0.1))

Ausgabe

0.1
0.1000000000000000055511151231257827021181583404541015625

Dieses Modul wird verwendet, wenn wir Dezimalrechnungen durchführen wollen, wie wir es in der Schule gelernt haben.

Es bewahrt auch die Bedeutung. Wir wissen, dass 25,50 kg genauer ist als 25,5 kg, da es zwei signifikante Dezimalstellen im Vergleich zu einer hat.

from decimal import Decimal as D

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

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

Ausgabe

3.3
3.000

Beachten Sie die abschließenden Nullen im obigen Beispiel.

Wir könnten fragen, warum nicht Decimal implementieren jedes Mal, anstatt zu schweben? Der Hauptgrund ist die Effizienz. Gleitkommaoperationen müssen schneller als Decimal ausgeführt werden Operationen.

Wann Dezimal anstelle von Float verwenden?

Wir verwenden in der Regel Dezimal in den folgenden Fällen.


Python-Brüche

Python bietet Operationen mit Bruchzahlen durch seinen fractions Modul.

Ein Bruch hat einen Zähler und einen Nenner, die beide ganze Zahlen sind. Dieses Modul unterstützt rationale Zahlenarithmetik.

Wir können Fraction-Objekte auf verschiedene Weise erstellen. Werfen wir einen Blick darauf.

import fractions

print(fractions.Fraction(1.5))

print(fractions.Fraction(5))

print(fractions.Fraction(1,3))

Ausgabe

3/2
5
1/3

Beim Erstellen von Fraction ab float , erhalten wir möglicherweise einige ungewöhnliche Ergebnisse. Dies liegt an der unvollkommenen Darstellung von binären Fließkommazahlen, wie im vorherigen Abschnitt besprochen.

Zum Glück Fraction ermöglicht es uns, auch mit String zu instanziieren. Dies ist die bevorzugte Option, wenn Sie Dezimalzahlen verwenden.

import fractions

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

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

Ausgabe

2476979795053773/2251799813685248
11/10

Dieser Datentyp unterstützt alle grundlegenden Operationen. Hier sind ein paar Beispiele.

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)

Ausgabe

2/3
6/5
False
True

Python-Mathematik

Python bietet Module wie math und random um verschiedene Mathematik wie Trigonometrie, Logarithmen, Wahrscheinlichkeit und Statistik usw. auszuführen.

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))

Ausgabe

3.141592653589793
-1.0
22026.465794806718
3.0
1.1752011936438014
720

Hier ist die vollständige Liste der Funktionen und Attribute, die im Python-Mathematikmodul verfügbar sind.

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())

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe. (Werte können aufgrund des zufälligen Verhaltens unterschiedlich sein)

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

Hier ist die vollständige Liste der Funktionen und Attribute, die im Python-Zufallsmodul verfügbar sind.


Python

  1. C#-Typkonvertierung
  2. Python-Schlüsselwörter und -Identifikatoren
  3. Python-Anweisung, Einrückung und Kommentare
  4. Python-Variablen, -Konstanten und -Literale
  5. Python-Typkonvertierung und Typumwandlung
  6. Python-Eingabe, -Ausgabe und -Import
  7. Python Globale, lokale und nicht lokale Variablen
  8. Python-Verzeichnis- und Dateiverwaltung
  9. Python-Fehler und eingebaute Ausnahmen
  10. Wie bekomme ich das aktuelle Datum und die Uhrzeit in Python?