Στην Python υπάρχουν τρία διαφορετικά είδη ενσωματωμένων αριθμών: ints, floats και complex. Ωστόσο, σε αυτή την άσκηση θα έχεις να κάνεις μόνο με ints και floats.
Τα ints είναι ακέραιοι αριθμοί. π.χ. 1234, -10, 20201278.
Οι ακέραιοι στην Python έχουν αυθαίρετη ακρίβεια, το πλήθος των ψηφίων περιορίζεται μόνο από τη διαθέσιμη μνήμη του συστήματος που φιλοξενεί το πρόγραμμα.
Τα floats είναι αριθμοί που περιέχουν δεκαδικό σημείο. π.χ. 0.0,3.14,-9.01.
Οι αριθμοί κινητής υποδιαστολής υλοποιούνται συνήθως στην Python με ένα double στη C (15 δεκαδικά ψηφία ακρίβειας), αλλά η αναπαράστασή τους ποικίλλει ανάλογα με το σύστημα υποδοχής και άλλες λεπτομέρειες υλοποίησης. Αυτό μπορεί να δημιουργήσει εκπλήξεις όταν δουλεύεις με floats, αλλά είναι "αρκετά καλό" για τις περισσότερες περιπτώσεις.
Μπορείς να δεις περισσότερες λεπτομέρειες και συζητήσεις στους παρακάτω πόρους:
int()float()Η Python υποστηρίζει πλήρως αριθμητικές πράξεις μεταξύ ints και floats. Μετατρέπει τους στενότερους αριθμούς ώστε να ταιριάζουν με τους λιγότερο στενούς ομολόγους τους όταν χρησιμοποιούνται με τους δυαδικούς αριθμητικούς τελεστές (+, -, *, /, // και %).
Η Python θεωρεί τα ints στενότερα από τα floats. Έτσι, η χρήση ενός float σε μια παράσταση εξασφαλίζει ότι το αποτέλεσμα θα είναι κι αυτό float. Ωστόσο, στη διαίρεση το αποτέλεσμα θα είναι πάντα float, ακόμα κι αν χρησιμοποιούνται μόνο ακέραιοι.
# The int is widened to a float here, and a float type is returned.
>>> 3 + 4.0
7.0
>>> 3 * 4.0
12.0
>>> 3 - 2.0
1.0
# Division always returns a float.
>>> 6 / 2
3.0
>>> 7 / 4
1.75
# Calculating remainders.
>>> 7 % 4
3
>>> 2 % 4
2
>>> 12.75 % 3
0.75
Αν χρειάζεσαι ακέραιο αποτέλεσμα, μπορείς να χρησιμοποιήσεις το // για να περικόψεις το αποτέλεσμα.
>>> 6 // 2
3
>>> 7 // 4
1
Για να μετατρέψεις ένα float σε ακέραιο, μπορείς να χρησιμοποιήσεις την int(). Για να μετατρέψεις έναν ακέραιο σε float, μπορείς να χρησιμοποιήσεις την float().
>>> int(6 / 2)
3
>>> float(1 + 2)
3.0
Ο φίλος σου ο Chandler σχεδιάζει να ταξιδέψει σε εξωτικά μέρη σε όλο τον κόσμο. Δυστυχώς, οι μαθηματικές του ικανότητες δεν είναι καλές. Ανησυχεί αρκετά μήπως τον εξαπατήσουν τα ανταλλακτήρια συναλλάγματος κατά τη διάρκεια του ταξιδιού του, και θέλει να του φτιάξεις μια αριθμομηχανή συναλλάγματος. Ορίστε οι προδιαγραφές του για την εφαρμογή:
Δημιούργησε τη συνάρτηση exchange_money(), που δέχεται 2 παραμέτρους:
budget: Το ποσό των χρημάτων που σκοπεύεις να ανταλλάξεις.exchange_rate: Το ποσό του εγχώριου νομίσματος που ισούται με μία μονάδα ξένου νομίσματος.Αυτή η συνάρτηση πρέπει να επιστρέφει την τιμή του νομίσματος που ανταλλάχθηκε.
Σημείωση: Αν το νόμισμά σου είναι το USD και θέλεις να ανταλλάξεις USD με EUR με ισοτιμία 1.20, τότε 1.20 USD == 1 EUR.
>>> exchange_money(127.5, 1.2)
106.25
Δημιούργησε τη συνάρτηση get_change(), που δέχεται 2 παραμέτρους:
budget: Το ποσό των χρημάτων πριν από την ανταλλαγή.exchanging_value: Το ποσό των χρημάτων που αφαιρείται από το ποσό για να ανταλλαχθεί.Αυτή η συνάρτηση πρέπει να επιστρέφει το ποσό των χρημάτων που περισσεύει από το αρχικό ποσό.
>>> get_change(127.5, 120)
7.5
Δημιούργησε τη συνάρτηση get_value_of_bills(), που δέχεται 2 παραμέτρους:
denomination: Η τιμή ενός μεμονωμένου χαρτονομίσματος.number_of_bills: Ο συνολικός αριθμός των χαρτονομισμάτων.Αυτό το ανταλλακτήριο χειρίζεται μόνο μετρητά σε συγκεκριμένες υποδιαιρέσεις. Το συνολικό ποσό που λαμβάνεις πρέπει να διαιρείται με την τιμή ενός "χαρτονομίσματος" ή μονάδας, κάτι που μπορεί να αφήσει κλάσμα ή υπόλοιπο. Η συνάρτησή σου πρέπει να επιστρέφει μόνο τη συνολική τιμή των χαρτονομισμάτων (χωρίς τα κλασματικά ποσά) που θα σου έδινε πίσω το ανταλλακτήριο. Δυστυχώς, το ανταλλακτήριο κρατάει το υπόλοιπο/τα ρέστα ως επιπλέον μπόνους.
>>> get_value_of_bills(5, 128)
640
Δημιούργησε τη συνάρτηση get_number_of_bills(), που δέχεται amount και denomination.
Αυτή η συνάρτηση πρέπει να επιστρέφει τον αριθμό των χαρτονομισμάτων που μπορείς να λάβεις μέσα στο δεδομένο ποσό. Με άλλα λόγια: πόσα ολόκληρα χαρτονομίσματα χωρούν στο αρχικό ποσό; Θυμήσου ότι μπορείς να λάβεις μόνο ολόκληρα χαρτονομίσματα, όχι κλάσματα χαρτονομισμάτων, οπότε φρόντισε να διαιρέσεις αναλόγως. Στην πράξη, στρογγυλοποιείς προς τα κάτω στο πλησιέστερο ολόκληρο χαρτονόμισμα/υποδιαίρεση.
>>> get_number_of_bills(127.5, 5)
25
Δημιούργησε τη συνάρτηση get_leftover_of_bills(), που δέχεται amount και denomination.
Αυτή η συνάρτηση πρέπει να επιστρέφει το ποσό που περισσεύει και δεν μπορεί να επιστραφεί από το αρχικό ποσό, δεδομένης της τιμής του χαρτονομίσματος. Είναι πολύ σημαντικό να ξέρεις ακριβώς πόσα κρατάει το ανταλλακτήριο.
>>> get_leftover_of_bills(127.5, 20)
7.5
Δημιούργησε τη συνάρτηση exchangeable_value(), που δέχεται budget, exchange_rate, spread και denomination.
Η παράμετρος spread είναι το ποσοστό που κρατείται ως προμήθεια ανταλλαγής, γραμμένο ως ακέραιος. Πρέπει να μετατραπεί σε δεκαδικό διαιρώντας το με το 100. Αν 1.00 EUR == 1.20 USD και το spread είναι 10, η πραγματική ισοτιμία θα είναι: 1.00 EUR == 1.32 USD, επειδή το 10% του 1.20 είναι 0.12 και αυτή η επιπλέον χρέωση προστίθεται στην ανταλλαγή.
Αυτή η συνάρτηση πρέπει να επιστρέφει τη μέγιστη τιμή του νέου νομίσματος αφού υπολογίσεις την ισοτιμία συν το spread. Θυμήσου ότι η τιμή του νομίσματος είναι ακέραιος αριθμός και δεν μπορεί να διαιρεθεί περαιτέρω.
Σημείωση: Η τιμή που επιστρέφεται πρέπει να είναι τύπου int.
>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.