Στην άσκηση αυτή θα συμπληρώσετε τον κώδικα Python που βρίσκεται στο αρχείο hw2.py, ακολουθώντας τις ίδιες οδηγίες (δείτε και εδώ) με αυτές που δόθηκαν στη Σειρά Ασκήσεων 1.
Στην αρχή του hw2.py δίνεται ο ορισμός της συνάρτησης sum_sequence την οποία μπορείτε να χρησιμοποιείτε σε εκφράσεις κλήσης στις απαντήσεις σας (χωρίς όμως να την αλλάξετε).
def sum_sequence(n, term): |
Η βαθμολόγηση των ασκήσεων θα βασιστεί σε ελέγχους ορθότητας παρόμοιους με αυτούς που περιέχονται στο αρχείο hw2_tests.txt που βρίσκεται στα έγγραφα του eclass.
Για να εκτελέσετε τους ελέγχους από τη γραμμή εντολών των Windows δώστε:
> python -m doctest -v hw2_tests.txt |
Σε unix/Linux ή MacOS γράψτε στο shell:
> python3 -m doctest -v hw2_tests.txt |
(Σιγουρευτείτε ότι τρέχετε την εντολή αυτή από κατάλογο που περιέχει τόσο hw2.py όσο και το hw2_tests.py.)
Θα παραδώσετε το αρχείο hw2.py.
Συμπληρώστε τα κενά (_______) του κώδικα ώστε η digit_sum(x) να επιστρέφει το άθροισμα των ψηφίων του x. (Υπόδειξη: η έκφραση x % 10 είναι ίση με το δεξιότερο ψηφίο του x, ενώ η x // 10 μετακινεί τα ψηφία του x κατά μια θέση προς τα δεξιά.)
def digit_sum(x):
"""Ypologizei to a8roisma twn (dekadikwn) pshfiwn tou x
x -- 8etikos akeraios
>>> digit_sum(10000)
1
>>> digit_sum(615)
12
>>> digit_sum(23) == 5
True
"""
s = ________
while ________:
s = __________
x = __________
return ________
Συμπληρώστε τα κενά (_________) στον κώδικα της alternating_sum_100 ώστε η κλήση alternating_sum_100() να επιστρέφει το αποτέλεσμα του αθροίσματος 1 - 2 + 3 - 4 + ... + 99 - 100.
def alternating_sum_100(): |
Συμπληρώστε τα κενά _________ στον κώδικα της alternating_sequence_sum_100 ώστε η κλήση alternate_sequence_sum_100(term) να επιστρέφει το αποτέλεσμα του αθροίσματος term(1) - term(2) + term(3) - term(4) + ... + term(99) - term(100), για οποιαδήποτε συνάρτηση term που δέχεται ένα αριθμητικό όρισμα και επιστρέφει αριθμό.
def alternating_sequence_sum_100(term): |
Συμπληρώστε τα κενά _________ στον κώδικα της alternating_sum_squares_100 ώστε η κλήση alternating_sum_100() να επιστρέφει το αποτέλεσμα του αθροίσματος 12 - 22 + 32 - 42 + ... + 992 - 1002.
def alternating_sum_squares_100(): |
Συμπληρώστε τον κώδικα της reverse_args ώστε η κλήση reverse_args(f), όπου f συνάρτηση δύο ορισμάτων, να επιστρέφει συνάρτηση που κάνει τον ίδιο υπολογισμό με την f όπου δέχεται τα ορίσματα σε αντίστροφη σειρά, δηλ., f(x, y) έχει την ίδια τιμή με τη reverse_args(f) (y, x).
def reverse_args(f):
""" Antistrefei ta orismata.
-- f synartisi 2 orismatwn
Epistrefei synartisi g opou i klisi g(x, y) exei idia timi me tin f(y, x).
Paradeigmata:
>>> pow(2, 3)
8
>>> pow(3, 2)
9
>>> wop = reverse_args(pow)
>>> wop(2, 3)
9
>>> wop(3, 2)
8
"""
""" GRAPSTE TON KWDIKA SAS APO KATW """
Δώστε αναδρομική υλοποίηση της συνάρτησης sum_sequence.
def sum_sequence(n, term): |
Συμπληρώστε το σώμα της print_digits ώστε η κλήση print_digits(x) να εμφανίζει τα ψηφία του θετικού ακέραιου x ένα ένα σε μια γραμμή το κάθε ένα, αρχίζοντας από το πιο σημαντικό (αριστερότερο) ψηφίο.
Η υλοποίηση πρέπει να γίνει με αναδρομικό υπολογισμό χωρίς να χρησιμοποιηθούν εντολές επανάληψης όπως while και for.
def print_digits(x): |