Στην Python, μπορείτε να εκτελέσετε αριθμητικές πράξεις με τους τελεστές των βασικών αριθμητικών πράξεων. Ορισμένοι από αυτούς τους τελεστές είναι:
- Πρόσθεση (+): Προσθέτει δύο αριθμούς. Παράδειγμα:
3 + 5
θα δώσει 8. - Αφαίρεση (-): Αφαιρεί έναν αριθμό από έναν άλλο. Παράδειγμα:
10 - 3
θα δώσει 7. - Πολλαπλασιασμός (*): Πολλαπλασιάζει δύο αριθμούς. Παράδειγμα:
4 * 6
θα δώσει 24. - Διαίρεση (/): Διαιρεί έναν αριθμό με έναν άλλο. Παράδειγμα:
8 / 2
θα δώσει 4.0 (συνήθως δίνει ένα float). - Διαιρεσή με υπόλοιπο (%): Διαιρεί έναν αριθμό με έναν άλλο και επιστρέφει το υπόλοιπο. Παράδειγμα:
10 % 3
θα δώσει 1. - Υψωση σε δύναμη (**): Υψώνει έναν αριθμό σε μια δύναμη. Παράδειγμα:
2 ** 3
θα δώσει 8 (2 στην 3η δύναμη).
Μπορείτε να χρησιμοποιήσετε αυτούς τους τελεστές για να εκτελέσετε αριθμητικές πράξεις στην Python και να υπολογίσετε αποτελέσματα.
Παράδειγματα για κάθε μια από τις αριθμητικές πράξεις:
- Πρόσθεση (+):
result = 3 + 5 print(result) # Το αποτέλεσμα είναι 8
- Αφαίρεση (-):
result = 10 - 3 print(result) # Το αποτέλεσμα είναι 7
- Πολλαπλασιασμός (*):
result = 4 * 6 print(result) # Το αποτέλεσμα είναι 24
- Διαίρεση (/):
result = 8 / 2 print(result) # Το αποτέλεσμα είναι 4.0 (συνήθως float)
- Διαιρεσή με υπόλοιπο (%):
result = 10 % 3 print(result) # Το αποτέλεσμα είναι 1
- Υψωση σε δύναμη (**):
result = 2 ** 3 print(result) # Το αποτέλεσμα είναι 8
Αυτά τα παραδείγματα δείχνουν πώς μπορείτε να χρησιμοποιήσετε αυτούς τους αριθμητικούς τελεστές για να εκτελέσετε διάφορες αριθμητικές πράξεις στην Python.
Στην Python, υπάρχουν δύο τρόποι διαίρεσης αριθμών, η “Πραγματική Διαίρεση” (True Division) και η “Διαίρεση προς τα κάτω” (Floor Division), που επιλέγονται με διαφορετικούς τελεστές.
- Πραγματική Διαίρεση (/):
Ο τελεστής/
χρησιμοποιείται για την πραγματική διαίρεση αριθμών. Το αποτέλεσμα είναι πάντα ένας αριθμός κινητής υποδιαστολής (float). Παράδειγμα:
αποτέλεσμα = 7 / 2 print(αποτέλεσμα) # Το αποτέλεσμα είναι 3.5
- Διαίρεση προς τα κάτω (Floor Division) (//):
Ο τελεστής//
χρησιμοποιείται για τη διαίρεση προς τα κάτω, όπου το αποτέλεσμα είναι το ακέραιο μέρος της διαίρεσης και απορρίπτονται οι υπολοίποι (χωρίς καμία στρογγυλοποίηση προς τα πάνω). Παράδειγμα:
αποτέλεσμα = 7 // 2 print(αποτέλεσμα) # Το αποτέλεσμα είναι 3
Επιλέξτε τον τελεστή που ταιριάζει καλύτερα με τις ανάγκες σας, ανάλογα με τον τύπο του αποτελέσματος που επιθυμείτε (πραγματική διαίρεση ή ακέραια διαίρεση).
Εξαιρέσεις και Ανιχνεύσιμα Σφάλματα
Η διαίρεση με το μηδέν χρησιμοποιώντας το /
ή το //
δεν επιτρέπεται και οδηγεί σε μια εξαίρεση – ένα σημάδι ότι προέκυψε ένα πρόβλημα:
ZeroDivisionError Traceback (most recent call last) <ipython-input-10-cd759d3fcf39> in <module>() ----> 1 123 / 0 ZeroDivisionError: division by zero
Αυτό το ανιχνεύσιμο σφάλμα αναφέρει ότι συνέβη μια εξαίρεση τύπου ZeroDivisionError
– τα περισσότερα ονόματα εξαιρέσεων τελειώνουν με το “Error”. Στη λειτουργία διαδραστικής εκτέλεσης, τον αριθμό απόσπασματος που προκάλεσε την εξαίρεση καθορίζεται από τον αριθμό 10 στη γραμμή:
<ipython-input-10-cd759d3fcf39> in <module>()
Η γραμμή που ξεκινά με —-> δείχνει τον κώδικα που προκάλεσε την εξαίρεση. Μερικές φορές τα αποσπάσματα έχουν περισσότερες από μία γραμμές κώδικα – το 1 δεξιά από το —-> δείχνει ότι η γραμμή 1 εντός του αποσπάσματος προκάλεσε την εξαίρεση. Η τελευταία γραμμή εμφανίζει την εξαίρεση που συνέβη, ακολουθούμενη από έναν άνιγκα (:) και ένα μήνυμα λάθους με περισσότερες πληροφορίες σχετικά με την εξαίρεση:
ZeroDivisionError: division by zero
Αυτό το μήνυμα σας λέει ότι συνέβη μια εξαίρεση τύπου ZeroDivisionError
και ότι το αίτημα διαίρεσης με το μηδέν δεν είναι επιτρεπτό.
Μια εξαίρεση συμβαίνει επίσης αν προσπαθήσετε να χρησιμοποιήσετε μια μεταβλητή που δεν έχετε δημιουργήσει ακόμη. Το ακόλουθο απόσπασμα προσπαθεί να προσθέσει 7 στη μη καθορισμένη μεταβλητή z, με αποτέλεσμα να προκληθεί μια εξαίρεση τύπου NameError:
NameError Traceback (most recent call last) <ipython-input-11-f2cdbf4fe75d> in <module>() ----> 1 z + 7 NameError: name 'z' is not defined
Αυτό το μήνυμα σας λέει ότι συνέβη μια εξαίρεση τύπου NameError
και ότι το όνομα ‘z’ δεν έχει οριστεί (δηλαδή, η μεταβλητή ‘z’ δεν υπάρχει στο πρόγραμμά σας). Πριν χρησιμοποιήσετε μια μεταβλητή, πρέπει να τη δημιουργήσετε και να την αναθέσετε με μια τιμή.
Ο τελεστής υπολοίπου της Python (%)
Ο τελεστής υπολοίπου της Python (%) δίνει το υπόλοιπο μετά τη διαίρεση του αριστερού όρου με τον δεξιό όρο. Αυτό ισχύει τόσο για ακέραιους αριθμούς όσο και για αριθμούς κινητής υποδιαστολής (float). Εδώ είναι μερικά παραδείγματα:
Για ακέραιους αριθμούς:
result = 10 % 3 print(result) # Το υπόλοιπο είναι 1
Για αριθμούς κινητής υποδιαστολής (float):
result = 7.5 % 2.2 print(result) # Το υπόλοιπο είναι 0.9
Ο τελεστής υπολοίπου επιστρέφει το υπόλοιπο της διαίρεσης, που είναι η διαφορά μεταξύ του αριστερού και του δεξιού όρου. Στο παράδειγμα πάνω, 10 διαιρούμενο με 3 δίνει 3 με υπόλοιπο 1.
Γραμμική Μορφή (Straight-Line Form)
Άλγεβρικές σημειώσεις, όπως η a ÷ b
, γενικά δεν είναι αποδεκτές από μεταγλωττιστές ή διερμηνείς. Για αυτόν τον λόγο, οι άλγεβρικές εκφράσεις πρέπει να γράφονται σε γραμμική μορφή χρησιμοποιώντας τους τελεστές της Python. Η παραπάνω έκφραση πρέπει να γραφεί ως a / b
(ή a // b
για ακέραια διαίρεση), έτσι ώστε όλοι οι τελεστές και οι όροι να εμφανίζονται σε μια οριζόντια γραμμή.
Στη γραμμική μορφή, οι τελεστές χρησιμοποιούνται μεταξύ των όρων ως a + b
, a - b
, a * b
, a / b
, κ.λπ., όπου a
και b
είναι οι όροι που πρέπει να υπολογιστούν και να εκφραστούν με τη χρήση των αντίστοιχων τελεστών. Αυτό διευκολύνει τους μεταγλωττιστές και τους διερμηνείς να ερμηνεύσουν τον κώδικα σωστά και να εκτελέσουν τις αριθμητικές πράξεις με τη σειρά που αναμένεται.
Χρήση παρενθέσεων για την ομαδοποίηση των εκφράσεων
Οι παρενθέσεις χρησιμοποιούνται για την ομαδοποίηση των εκφράσεων στην Python, όπως και στις άλγεβρικές εκφράσεις. Αν δεν χρησιμοποιήσετε παρενθέσεις, οι πράξεις εκτελούνται με βάση την προτεραιότητα των τελεστών. Ας δούμε παραδείγματα:
Με παρενθέσεις:
αποτέλεσμα = (2 + 3) * 4 print(αποτέλεσμα) # Το αποτέλεσμα είναι 20
Χωρίς παρενθέσεις:
αποτέλεσμα = 2 + 3 * 4 print(αποτέλεσμα) # Το αποτέλεσμα είναι 14 (η προτεραιότητα του * είναι υψηλότερη)
Με τη χρήση παρενθέσεων, μπορείτε να καθορίσετε τη σειρά εκτέλεσης των πράξεων και να εξασφαλίσετε ότι οι επιθυμητές πράξεις εκτελούνται πρώτα.
Κανόνες Προτεραιότητας των Τελεστών
Στην Python, οι τελεστές σε αριθμητικές εκφράσεις εφαρμόζονται σύμφωνα με τους παρακάτω κανόνες προτεραιότητας, οι οποίοι είναι γενικά παρόμοιοι με αυτούς στην άλγεβρα:
- Οι εκφράσεις μέσα σε παρενθέσεις αξιολογούνται πρώτες. Έτσι, οι παρενθέσεις μπορούν να επιβάλλουν τη σειρά αξιολόγησης που επιθυμείτε. Οι παρενθέσεις έχουν το υψηλότερο επίπεδο προτεραιότητας. Σε εκφράσεις με εμφωλευμένες παρενθέσεις, όπως (α / (β – γ)), η έκφραση στις πιο εσωτερικές παρενθέσεις (δηλαδή, β – γ) αξιολογείται πρώτη.
- Οι λειτουργίες ύψωσης σε δύναμη αξιολογούνται στη συνέχεια. Αν μια έκφραση περιλαμβάνει αρκετές λειτουργίες ύψωσης σε δύναμη, η Python τις εφαρμόζει από δεξιά προς τα αριστερά.
- Οι λειτουργίες πολλαπλασιασμού, διαίρεσης και υπολοίπου αξιολογούνται στη συνέχεια. Αν μια έκφραση περιλαμβάνει αρκετές λειτουργίες πολλαπλασιασμού, αληθινής διαίρεσης, ενός ακέραιου διαίρεσης και υπολοίπου, η Python τις εφαρμόζει από αριστερά προς τα δεξιά. Ο πολλαπλασιασμός, η διαίρεση και το υπόλοιπο είναι “στο ίδιο επίπεδο προτεραιότητας.”
- Οι λειτουργίες πρόσθεσης και αφαίρεσης αξιολογούνται τελευταίες. Αν μια έκφραση περιλαμβάνει αρκετές λειτουργίες πρόσθεσης και αφαίρεσης, η Python τις εφαρμόζει από αριστερά προς τα δεξιά. Η πρόσθεση και η αφαίρεση έχουν επίσης το ίδιο επίπεδο προτεραιότητας.
Ομαδοποίηση Τελεστών
Όταν αναφερόμαστε στο γεγονός ότι η Python εφαρμόζει ορισμένους τελεστές από αριστερά προς τα δεξιά, αναφερόμαστε στην ομαδοποίηση των τελεστών. Για παράδειγμα, στην έκφραση
a + b + c
οι τελεστές πρόσθεσης (+) ομαδοποιούνται από αριστερά προς τα δεξιά, όπως αν είχαμε χρησιμοποιήσει παρενθέσεις στην έκφραση ως
(a + b) + c.
Όλοι οι τελεστές στην Python με την ίδια προτεραιότητα ομαδοποιούνται από αριστερά προς τα δεξιά, εκτός από τον τελεστή ύψωσης σε δύναμη (**), ο οποίος ομαδοποιείται από δεξιά προς τα αριστερά.
Περιττές Παρενθέσεις
Μπορείτε να χρησιμοποιήσετε περιττές παρενθέσεις για να ομαδοποιήσετε υποεκφράσεις και να κάνετε την έκφραση πιο κατανοητή. Για παράδειγμα, το πολυώνυμο δευτέρου βαθμού
y = a * x ** 2 + b * x + c
μπορεί να παρενθεωθεί, για λόγους κατανόησης, ως
y = (a * (x ** 2)) + (b * x) + c
Το διάσπασμα μιας πολύπλοκης έκφρασης σε μια ακολουθία δηλώσεων με πιο σύντομες και απλές εκφράσεις μπορεί επίσης να προάγει την κατανόηση.
Τύποι των Τελεστών
Κάθε αριθμητικός τελεστής μπορεί να χρησιμοποιηθεί τόσο με ακέραιους αριθμούς όσο και με αριθμούς κινητής υποδιαστολής. Εάν και οι δύο τελεστές είναι ακέραιοι, το αποτέλεσμα είναι ακέραιος – εκτός από τον τελεστή πραγματικής διαίρεσης (“/”), ο οποίος πάντα παράγει αριθμούς κινητής υποδιαστολής. Εάν και οι δύο τελεστές είναι αριθμοί κινητής υποδιαστολής, το αποτέλεσμα είναι αριθμός κινητής υποδιαστολής. Οι εκφράσεις που περιέχουν έναν ακέραιο και έναν αριθμό κινητής υποδιαστολής είναι εκφράσεις με μικτούς τύπους – αυτές πάντα παράγουν αριθμούς κινητής υποδιαστολής.