Συνάλλαγμα

Συνάλλαγμα

Άσκηση εκμάθησης

Εισαγωγή

Αριθμοί

Στην Python υπάρχουν τρία διαφορετικά είδη ενσωματωμένων αριθμών: ints, floats και complex. Ωστόσο, σε αυτή την άσκηση θα έχεις να κάνεις μόνο με ints και floats.

ints

Τα ints είναι ακέραιοι αριθμοί. π.χ. 1234, -10, 20201278.

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

floats

Τα floats είναι αριθμοί που περιέχουν δεκαδικό σημείο. π.χ. 0.0,3.14,-9.01.

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

Μπορείς να δεις περισσότερες λεπτομέρειες και συζητήσεις στους παρακάτω πόρους:

Αριθμητική

Η 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 σχεδιάζει να ταξιδέψει σε εξωτικά μέρη σε όλο τον κόσμο. Δυστυχώς, οι μαθηματικές του ικανότητες δεν είναι καλές. Ανησυχεί αρκετά μήπως τον εξαπατήσουν τα ανταλλακτήρια συναλλάγματος κατά τη διάρκεια του ταξιδιού του, και θέλει να του φτιάξεις μια αριθμομηχανή συναλλάγματος. Ορίστε οι προδιαγραφές του για την εφαρμογή:

1. Εκτίμησε την τιμή μετά την ανταλλαγή

Δημιούργησε τη συνάρτηση exchange_money(), που δέχεται 2 παραμέτρους:

  1. budget: Το ποσό των χρημάτων που σκοπεύεις να ανταλλάξεις.
  2. exchange_rate: Το ποσό του εγχώριου νομίσματος που ισούται με μία μονάδα ξένου νομίσματος.

Αυτή η συνάρτηση πρέπει να επιστρέφει την τιμή του νομίσματος που ανταλλάχθηκε.

Σημείωση: Αν το νόμισμά σου είναι το USD και θέλεις να ανταλλάξεις USD με EUR με ισοτιμία 1.20, τότε 1.20 USD == 1 EUR.

>>> exchange_money(127.5, 1.2)
106.25

2. Υπολόγισε το νόμισμα που απομένει μετά από μια ανταλλαγή

Δημιούργησε τη συνάρτηση get_change(), που δέχεται 2 παραμέτρους:

  1. budget: Το ποσό των χρημάτων πριν από την ανταλλαγή.
  2. exchanging_value: Το ποσό των χρημάτων που αφαιρείται από το ποσό για να ανταλλαχθεί.

Αυτή η συνάρτηση πρέπει να επιστρέφει το ποσό των χρημάτων που περισσεύει από το αρχικό ποσό.

>>> get_change(127.5, 120)
7.5

3. Υπολόγισε την τιμή των χαρτονομισμάτων

Δημιούργησε τη συνάρτηση get_value_of_bills(), που δέχεται 2 παραμέτρους:

  1. denomination: Η τιμή ενός μεμονωμένου χαρτονομίσματος.
  2. number_of_bills: Ο συνολικός αριθμός των χαρτονομισμάτων.

Αυτό το ανταλλακτήριο χειρίζεται μόνο μετρητά σε συγκεκριμένες υποδιαιρέσεις. Το συνολικό ποσό που λαμβάνεις πρέπει να διαιρείται με την τιμή ενός "χαρτονομίσματος" ή μονάδας, κάτι που μπορεί να αφήσει κλάσμα ή υπόλοιπο. Η συνάρτησή σου πρέπει να επιστρέφει μόνο τη συνολική τιμή των χαρτονομισμάτων (χωρίς τα κλασματικά ποσά) που θα σου έδινε πίσω το ανταλλακτήριο. Δυστυχώς, το ανταλλακτήριο κρατάει το υπόλοιπο/τα ρέστα ως επιπλέον μπόνους.

>>> get_value_of_bills(5, 128)
640

4. Υπολόγισε τον αριθμό των χαρτονομισμάτων

Δημιούργησε τη συνάρτηση get_number_of_bills(), που δέχεται amount και denomination.

Αυτή η συνάρτηση πρέπει να επιστρέφει τον αριθμό των χαρτονομισμάτων που μπορείς να λάβεις μέσα στο δεδομένο ποσό. Με άλλα λόγια: πόσα ολόκληρα χαρτονομίσματα χωρούν στο αρχικό ποσό; Θυμήσου ότι μπορείς να λάβεις μόνο ολόκληρα χαρτονομίσματα, όχι κλάσματα χαρτονομισμάτων, οπότε φρόντισε να διαιρέσεις αναλόγως. Στην πράξη, στρογγυλοποιείς προς τα κάτω στο πλησιέστερο ολόκληρο χαρτονόμισμα/υποδιαίρεση.

>>> get_number_of_bills(127.5, 5)
25

5. Υπολόγισε το υπόλοιπο μετά την ανταλλαγή σε χαρτονομίσματα

Δημιούργησε τη συνάρτηση get_leftover_of_bills(), που δέχεται amount και denomination.

Αυτή η συνάρτηση πρέπει να επιστρέφει το ποσό που περισσεύει και δεν μπορεί να επιστραφεί από το αρχικό ποσό, δεδομένης της τιμής του χαρτονομίσματος. Είναι πολύ σημαντικό να ξέρεις ακριβώς πόσα κρατάει το ανταλλακτήριο.

>>> get_leftover_of_bills(127.5, 20)
7.5

6. Υπολόγισε την τιμή μετά την ανταλλαγή

Δημιούργησε τη συνάρτηση 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
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Συνάλλαγμα;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.