Αρ

Αριθμοί σε Python

78 ασκήσεις

Σχετικά με την έννοια Αριθμοί

Η Python έχει τρεις διαφορετικούς τύπους ενσωματωμένων αριθμών: ακέραιους (int), κινητής υποδιαστολής (float) και μιγαδικούς (complex). Τα κλάσματα (fractions.Fraction) και οι δεκαδικοί (decimal.Decimal) είναι επίσης διαθέσιμα μέσω εισαγωγής από την τυπική βιβλιοθήκη.

Οι ακέραιοι αριθμοί, συμπεριλαμβανομένων των δεκαεξαδικών (hex()), των οκταδικών (oct()) και των δυαδικών (bin()) αριθμών χωρίς δεκαδικά ψηφία, χαρακτηρίζονται επίσης ως ints:

# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>

>>> -12
-12

Οι αριθμοί που περιέχουν υποδιαστολή (με ή χωρίς κλασματικά μέρη) χαρακτηρίζονται ως floats:

>>> 3.45
3.45
>>> type(3.45)
<class 'float'>

Αριθμητική

Η Python υποστηρίζει πλήρως αριθμητικές πράξεις μεταξύ αυτών των διαφορετικών τύπων αριθμών και, όταν χρησιμοποιούνται οι δυαδικοί αριθμητικοί τελεστές (+, -, *, /, // και %), θα μετατρέψει τους αριθμούς με το στενότερο εύρος ώστε να ταιριάξουν με τους αντίστοιχους με το ευρύτερο εύρος.

Όλοι οι αριθμοί (εκτός από τους μιγαδικούς) υποστηρίζουν όλες τις αριθμητικές πράξεις, οι οποίες αξιολογούνται σύμφωνα με την προτεραιότητα τελεστών. Η υποστήριξη για μαθηματικές συναρτήσεις (πέρα από το + και το -) για μιγαδικούς αριθμούς βρίσκεται στο module cmath.

Πρόσθεση και αφαίρεση

Οι τελεστές πρόσθεσης και αφαίρεσης συμπεριφέρονται όπως στα συνηθισμένα μαθηματικά. Αν ένας ή περισσότεροι από τους τελεστέους είναι float, τότε και τα υπόλοιπα int θα μετατραπούν σε float:

>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0

Πολλαπλασιασμός

Όπως με την πρόσθεση και την αφαίρεση, ο πολλαπλασιασμός θα μετατρέψει τους αριθμούς με το στενότερο εύρος ώστε να ταιριάξουν με τους αντίστοιχους με το ευρύτερο εύρος:

>>> 3 * 2
6

>>> 3 * 2.0
6.0

Διαίρεση

Η διαίρεση επιστρέφει πάντα float, ακόμη κι αν το αποτέλεσμα είναι ακέραιος αριθμός:

>>> 6/5
1.2

>>> 6/2
3.0

Ακέραια διαίρεση

Αν χρειάζεσαι αποτέλεσμα int, μπορείς να χρησιμοποιήσεις την ακέραια διαίρεση για να κόψεις το δεκαδικό μέρος του αποτελέσματος. Η ακέραια διαίρεση εκτελείται με τον τελεστή //:

>>> 6//5
1

>>> 6//2
3

Υπόλοιπο

Ο τελεστής υπολοίπου (%) επιστρέφει το υπόλοιπο της διαίρεσης των δύο τελεστέων:

# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0

# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2

Ένας άλλος τρόπος να δεις το 5 % 3:

>>> whole_part = int(5/3)
1

>>> decimal_part = 5/3 - whole_part
0.6666666666666667

>>> whole_remainder = decimal_part * 3
2.0

Ύψωση σε δύναμη

Η ύψωση σε δύναμη εκτελείται με τον τελεστή **:

>>> 2 ** 3
8

>>> 4 ** 0.5
2

Μετατροπές

Οι αριθμοί μπορούν να μετατραπούν από int σε floats και από floats σε int χρησιμοποιώντας τις ενσωματωμένες συναρτήσεις int() και float():

>>> int(3.45)
3

>>> float(3)
3.0

Στρογγυλοποίηση

Η Python παρέχει μια ενσωματωμένη συνάρτηση round(<number>, <decimal_places>) για να στρογγυλοποιήσεις έναν αριθμό κινητής υποδιαστολής σε έναν δεδομένο αριθμό δεκαδικών ψηφίων. Αν δεν καθοριστεί αριθμός δεκαδικών ψηφίων, ο αριθμός στρογγυλοποιείται στον πλησιέστερο ακέραιο και θα επιστρέψει ένα int:

>>> round(3.1415926535, 2)
3.14

>>> round(3.1415926535)
3

Προτεραιότητα και παρενθέσεις

Η Python σου επιτρέπει να χρησιμοποιείς παρενθέσεις για να ομαδοποιείς παραστάσεις. Αυτό είναι χρήσιμο όταν θέλεις να παρακάμψεις την προεπιλεγμένη σειρά των πράξεων.

>>> 2 + 3 * 4
14

>>> (2 + 3) * 4
20

Η Python ακολουθεί τον κανόνα PEMDAS για την προτεραιότητα τελεστών. Αυτό σημαίνει ότι οι υπολογισμοί μέσα σε () έχουν την υψηλότερη προτεραιότητα, ακολουθούμενοι από το **, μετά το *, το /, το //, το %, το + και το -:

>>> 2 + 3 - 4 * 4
-11

>>> (2 + 3 - 4) * 4
4

# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770

Ακρίβεια και αναπαράσταση

Οι ακέραιοι στην Python έχουν αυθαίρετη ακρίβεια: ο αριθμός των ψηφίων περιορίζεται μόνο από τη διαθέσιμη μνήμη του συστήματος υποδοχής.

Οι αριθμοί κινητής υποδιαστολής υλοποιούνται συνήθως με ένα double στη C (15 δεκαδικά ψηφία ακρίβειας), αλλά η αναπαράστασή τους ποικίλλει ανάλογα με το σύστημα υποδοχής. Οι μιγαδικοί αριθμοί έχουν ένα real και ένα imaginary μέρος, τα οποία αναπαρίστανται και τα δύο από αριθμούς κινητής υποδιαστολής.

Για μια πιο λεπτομερή συζήτηση των ζητημάτων και των περιορισμών της αριθμητικής κινητής υποδιαστολής στις διάφορες γλώσσες προγραμματισμού, ρίξε μια ματιά στο 0.30000000000000004.com και στο The Python Tutorial.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Αριθμοί

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 3 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Αριθμοί