Website-Suche

Integrierte Python 3-Funktionen zur Arbeit mit Zahlen


Einführung

Python 3 verfügt über viele eingebaute Funktionen, die Sie in jedem Programm, an dem Sie arbeiten, problemlos verwenden können. Einige Funktionen ermöglichen es Ihnen, Datentypen zu konvertieren, während andere spezifisch für einen bestimmten Typ sind, wie z. B. Zeichenfolgen.

Dieses Tutorial wird einige der integrierten Funktionen behandeln, die mit numerischen Datentypen in Python 3 verwendet werden können. Wir werden die folgenden Funktionen durchgehen:

  • abs() für den absoluten Wert
  • divmod(), um gleichzeitig einen Quotienten und einen Rest zu finden
  • pow(), um eine Zahl auf eine bestimmte Potenz zu heben
  • round(), um eine Zahl auf eine bestimmte Dezimalstelle zu runden
  • sum() um die Summe der Elemente in einem iterierbaren Datentyp zu berechnen

Sich mit diesen Methoden vertraut zu machen, kann Ihnen mehr Flexibilität beim Programmieren geben, damit Sie informierte Entscheidungen treffen können, welche Operatoren und Funktionen Sie verwenden möchten. Wir werden einige dieser Funktionen im Verlauf dieses Tutorials mit Beispielen durchgehen.

Voraussetzungen

Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server verweisen, die für Ihr Betriebssystem (Ubuntu, CentOS, Debian usw.) geeignet ist.

Betragswert

Die eingebaute Funktion abs() gibt den absoluten Wert einer Zahl zurück, die Sie ihr übergeben. In der Mathematik bezieht sich der absolute Wert auf die Entfernung, die eine Zahl auf der Zahlengeraden von 0 entfernt ist. Der absolute Wert berücksichtigt nicht, in welche Richtung die Zahl von null liegt, was bedeutet, dass negative Zahlen durch positive Zahlen dargestellt werden.

Um einige Beispiele zu geben: Der Betrag von 15 ist 15, der Betrag von -74 ist 74, und der Betrag von 0 ist 0.

Der Betrag ist ein wichtiges Konzept in der Analysis und der reellen Analyse, aber es ergibt auch Sinn, wenn wir über alltägliche Situationen wie die zurückgelegte Entfernung nachdenken. Zum Beispiel, wenn wir versuchen, einen Ort zu erreichen, der 58 Meilen entfernt ist, aber stattdessen 93 Meilen fahren, haben wir unser ursprüngliches Ziel überschritten. Wenn wir nun berechnen wollen, wie viele Meilen noch zu fahren sind, um das vorgesehene Ziel zu erreichen, erhalten wir eine negative Zahl, aber wir können keine negativen Meilen fahren.

Lass uns abs() verwenden, um dieses Problem zu lösen:

Info: Um dem Beispielcode in diesem Tutorial zu folgen, öffnen Sie eine Python-interaktive Shell auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der >>> Eingabeaufforderung hinzufügen.

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

In der Ausgabe sehen wir, dass wir, wenn wir die abs() Funktion nicht verwenden, in diesem Fall eine negative Zahl haben, -35. Auch wenn wir uns in einer Situation befinden, in der miles_travelled kleiner ist als miles_from_origin, berücksichtigt die Einbeziehung der abs() Funktion die Möglichkeit einer negativen Zahl.

Mit einer negativen Zahl gibt abs() eine positive Zahl zurück, da der Betrag immer eine positive Zahl oder null ist.

Lassen Sie uns den Gebrauch von abs() mit einer positiven Zahl und null durchgehen:

print(abs(89.9))
print(abs(0))
89.9
0

Wir verwenden wahrscheinlich abs() mit einer Variablen, die positiv oder negativ sein kann, in einem Fall, in dem wir nur nach einer positiven Zahl suchen. Um einen negativen Input oder ein negatives Ergebnis zu berücksichtigen, verwenden wir abs(), um das zurückgegebene Ergebnis so zu ändern, dass es eine positive Zahl ist.

Den Quotienten und den Rest in einer Funktion finden

Da sowohl die ganzzahlige Division (die einen Quotienten zurückgibt) als auch die Modulo-Division (die einen Rest zurückgibt) eng miteinander verbunden sind, kann es nützlich sein, eine Funktion zu verwenden, die beide Operationen auf einmal kombiniert.

Die eingebaute Python-Funktion divmod() kombiniert beides, indem sie zuerst den Quotienten zurückgibt, der aus der ganzzahligen Division stammt, gefolgt vom Rest.

Weil divmod() mit zwei Zahlen arbeitet, müssen wir zwei Zahlen an sie übergeben.

divmod(a,b)

Mit dieser Funktion führen wir im Grunde Folgendes aus:

a // b
a & b

Nehmen wir an, wir haben ein Buch geschrieben, das 80.000 Wörter lang ist. Mit unserem Verlag haben wir die Möglichkeit, entweder 300 oder 250 Wörter pro Seite zu verwenden, und wir möchten ein Gefühl dafür bekommen, wie viele Seiten wir in jedem Fall hätten. Mit divmod() können wir sofort sehen, wie viele Seiten wir hätten und wie viele Wörter auf eine zusätzliche Seite fallen würden.

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)

In Option A werden wir 266 Seiten mit Worten und 200 Wörter übrig haben (⅔ einer Seite), was insgesamt 267 Seiten ergibt, und in Option B haben wir ein gleichmäßiges Buch mit 320 Seiten. Wenn wir umweltbewusst sein wollen, können wir Option A wählen, aber wenn wir beeindruckender mit einem größeren Buch aussehen wollen, könnten wir Option B wählen.

Da die Funktion divmod() sowohl Ganzzahlen als auch Fließkommazahlen verwenden kann, lassen Sie uns auch ein Beispiel durchgehen, das Fließkommazahlen verwendet:

a = 985.5
b = 115.25

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

In diesem Beispiel ist 8,0 das ganzzahlige Ergebnis von 985,5 geteilt durch 115,25, und 63,5 ist der Rest.

Denken Sie daran, dass Sie den ganzzahligen Divisionsoperator // und den Modulooperator % verwenden können, um zu überprüfen, was divmod() getan hat:

print(a//b)
print(a%b)
8.0
63.5

Wenn wir die divmod() Funktion in Python verwenden, erhalten wir sowohl die ganze Zahl der Division als auch den Rest zurück.

Energie

In Python können Sie den Operator ** verwenden, um eine Zahl potenziert anzuheben, oder Sie können die eingebaute Funktion pow() verwenden, die zwei Zahlen entgegennimmt.

Um zu sehen, wie die pow()-Funktion funktioniert, nehmen wir an, wir führen Forschung über Bakterien durch und möchten sehen, wie viele Bakterien wir am Ende des Tages haben werden, wenn wir mit 1 beginnen. Die speziellen Bakterien, mit denen wir arbeiten, verdoppeln sich jede Stunde, also werden wir 2 (Verdopplung) zur Potenz der Gesamtanzahl der Stunden (in unserem Fall 24) berechnen.

hours = 24
total_bacteria = pow(2,hours)

print(total_bacteria)
16777216

Wir haben zwei Ganzzahlen an die pow() Funktion übergeben und festgestellt, dass wir am Ende dieses 24-Stunden-Zeitraums über 16 Millionen Bakterien haben werden.

In der Mathematik, wenn wir 3 hoch 3 berechnen wollen, wird es normalerweise so geschrieben:

3 hoch 3

Die Berechnung, die wir durchführen, ist 3 x 3 x 3, was gleich 27 ist.

Um 3³ in Python zu berechnen, würden wir pow(3,3) eintippen.

Die Funktion pow() akzeptiert sowohl Ganzzahlen als auch Fließkommazahlen und bietet eine Alternative zum Einsatz des **-Operators, wenn Sie Zahlen auf eine bestimmte Potenz heben möchten.

Zahlen runden

Die Fähigkeit, Zahlen schnell und bereitwillig zu runden, wird wichtig, wenn man mit Fließkommazahlen arbeitet, die viele Dezimalstellen haben. Die eingebaute Python-Funktion round() nimmt zwei Zahlen entgegen, eine, die gerundet werden soll, und eine, die die Anzahl der zu berücksichtigenden Dezimalstellen angibt.

Wir werden die Funktion verwenden, um eine Fließkommazahl mit mehr als 10 Dezimalstellen zu nehmen und die round() Funktion zu nutzen, um die Dezimalstellen auf 4 zu reduzieren:

i = 17.34989436516001
print(round(i,4))
17.3499

Im obigen Beispiel wird die Fließkommazahl 17.34989436516001 auf 17.3499 gerundet, da wir festgelegt haben, dass die Anzahl der Dezimalstellen auf 4 begrenzt sein soll.

Beachten Sie auch, dass die round() Funktion Zahlen aufrundet. Statt 17.3498 als Ausgabe zu liefern, hat sie 17.3499 bereitgestellt, da die Zahl nach der Dezimalzahl 8 die Zahl 9 ist. Jede Zahl, die von der Zahl 5 oder größer gefolgt wird, wird auf die nächste ganze Zahl aufgerundet.

Lass uns die Syntax für round() aufschlüsseln:

round(number to round,number of decimal places)

Im Alltag kommt es häufig vor, dass Zahlen gerundet werden, besonders beim Umgang mit Geld; wir können einen Cent nicht gleichmäßig unter mehreren Freunden aufteilen.

Lass uns ein Beispiel für ein Programm durchgehen, das ein Trinkgeld berechnen kann. Hier geben wir Zahlen vor, aber wir könnten das Programm umschreiben, um stattdessen von Benutzern bereitgestellte Zahlen zu verwenden. In diesem Beispiel gingen 3 Freunde in ein Restaurant, die die Rechnung von 87,93 $gleichmäßig teilen wollen, und zusätzlich ein 20%iges Trinkgeld hinzufügen.

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

In diesem Programm fragen wir zunächst nach der Ausgabe der Zahl, nachdem wir die Gesamtrechnung zuzüglich Trinkgeld durch 3 geteilt haben, was zu einer Zahl mit vielen Dezimalstellen führt: 35.172000000000004. Da diese Zahl als monetäre Angabe keinen Sinn macht, verwenden wir die round() Funktion und begrenzen die Dezimalstellen auf 2, sodass wir eine Ausgabe bereitstellen können, mit der die 3 Freunde tatsächlich arbeiten können: 35.17.

Wenn Sie es vorziehen, auf eine Zahl mit nur 0 als Dezimalwert zu runden, können Sie dies tun, indem Sie 0 als den zweiten Parameter in der round()-Funktion verwenden:

round(345.9874590348545304636,0)

Das würde zu 346,0 ausgewertet.

Sie können auch Ganzzahlen in round() übergeben, ohne einen Fehler zu erhalten, falls Sie Benutzereingaben in Form einer Ganzzahl anstelle einer Fließkommazahl erhalten. Wenn eine Ganzzahl als erstes Argument übergeben wird, wird eine Ganzzahl zurückgegeben.

Eine Summe berechnen

Die sum() Funktion wird verwendet, um Summen von numerischen zusammengesetzten Datentypen zu berechnen, einschließlich Listen, Tupeln und Dictionaries.

Wir können eine Liste an die sum()-Funktion übergeben, um alle Elemente in der Liste der Reihe nach von links nach rechts zusammenzuzufügen:

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

Dies wird ähnlich mit Tupeln und Dictionaries funktionieren:

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

Die sum()-Funktion kann bis zu 2 Argumente übernehmen, sodass Sie eine zusätzliche Zahl in integer- oder float-Form hinzufügen können, um die Zahlen hinzuzufügen, die das Argument an erster Stelle bilden:

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

Wenn Sie kein zweites Argument angeben, wird die Funktion sum() standardmäßig 0 zum iterierbaren zusammengesetzten Datentyp hinzufügen.

Schlussfolgerung

Dieses Tutorial behandelte einige integrierte Methoden, die Sie mit numerischen Datentypen in der Programmiersprache Python verwenden können.

Um mehr über die Arbeit mit Zahlen zu erfahren, können Sie "Wie man Mathematik in Python 3 mit Operatoren macht" lesen, und um mehr über Listen zu lernen, schauen Sie sich "Verstehen von Listen in Python 3" an.