Στην άσκηση αυτή θα συμπληρώσετε τον κώδικα Python που βρίσκεται στο αρχείο hw2.py, ακολουθώντας τις ίδιες οδηγίες (δείτε και εδώ) με αυτές που δόθηκαν στη Σειρά Ασκήσεων 1.
Στην αρχή του hw2.py δίνεται ο ορισμός της συνάρτησης sum_sequence την οποία μπορείτε να χρησιμοποιείτε σε εκφράσεις κλήσης στις απαντήσεις σας (χωρίς όμως να την αλλάξετε).
def sum_sequence(n, term): |
Θα παραδώσετε το αρχείο 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 ________
Συμπληρώστε τον κώδικα της count_digit ώστε η κλήση count_digit(x, i) να επιστρέφει το πλήθος εμφανίσεων του ψηφίου του x που βρίσκεται στην i-οστή θέση (απο δεξιά).
def count_digit(x, i):
"""Ypologizei to plh8os twn emfanisewn enos pshfiou
x -- 8etikos akeraios
i -- pshfio (1 = 1o pshfio apo dexia, 2 = 2o apo dexia, ktl.)
>>> count_digit(1000, 1)
3
>>> count_digit(12944342, 2)
3
>>> count_digit(121,1) == 2
True
"""
""" GRAPSTE TON KWDIKA SAS APO KATW """
Συμπληρώστε τα κενά _______ του κώδικα ώστε η paei_pi(n) να επιστρέφει το άθροισμα των n πρώτων όρων της ακολουθίας 4, -4/3, 4/5, -4/7, 4/9, -4/11, 4/13,... κτλ.
def paei_pi(n): |
Συμπληρώστε τα κενά ______ στο σώμα της συνάρτησης stars_horizontal ώστε η κλήση stars_horizontal(n) να επιστρέφει string με n χαρακτήρες '*' (αστεράκια).
Σημειώστε ότι οι δύο γραμμές κενών _____ πριν την return είναι ενδεικτικές και μπορείτε να χρησιμοποιήσετε όσες γραμμές θέλετε.
def stars_horizontal(n): |
Συμπληρώστε τον κώδικα της 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 """
Σε αυτή την άσκηση θα εξασκηθείτε στο να αποφεύγετε να ξαναγράφετε παρόμοιο κώδικα χρησιμοποιώντας τεχνικές από το μάθημα όπως ορισμό φωλιασμένων συναρτήσεων, συναρτήσεις υψηλότερου επιπέδου, εντολές επανάληψης. Συμπληρώστε το σώμα της συνάρτησης askisi6 ώστε να παράγει ό,τι ακριβώς εμφανίζεται στα σχόλια.
Ιδανικά το πρόγραμμά σας πρέπει να περιέχει μια το πολύ εντολή επανάληψης. (Κάθε κλήση της print θα πρέπει να εμφανίζει μια μόνο γραμμή.)
Μπορεί να βρείτε χρήσιμη την ενσωματωμένη συνάρτηση str η οποία επιστρέφει τιμές ως string, πχ. η str(9) επιστρέφει '9', η τιμή της str(-3.4) είναι '-3.4'.
def askisi6(): |
Συμπληρώστε τα κενά _______ στη συνάρτηση make_quadratic ώστε η κλήση make_quadratic(a, b, c) να επιστρέφει τετραγωνική συνάρτηση f(x)=ax2+bx+c (ως συνάρτηση του x).
Συνεπώς, με την εντολή f = make_quadratic(1,2,3) η f(x) έχει τιμή ίση με x2+2x+3.
def make_quadratic(a, b, c): |
Συμπληρώστε τo σώμα της συνάρτησης abacize ώστε να επιστρέφει τελεστές που εφαρμόζονται και αποτιμώνται σε χάντρες όπως σε ένα αριθμητήρι (άβακας). Για παράδειγμα η abacize(add) επιστρέφει την εκδοχή άβακα του τελεστή της πρόσθεσης (add), οπότε η κλήση add(1, 2) χρησιμοποιώντας την εκδοχή άβακα της add θα μπορούσε να γίνει ως εξής:
>>> from operator import add |
Το όρισμα της abacize μπορεί να είναι οποιαδήποτε αριθμητική συνάρτηση δύο αριθμών, πχ. add, sub, mul, max. Η συνάρτηση που επιστρέφει η abacize δέχεται ως όρισμα δύο string αποτελούμενα από χαρακτήρες 'o' οι οποίοι αναπαριστούν τις χάντρες σε ένα άβακα. Το πλήθος των χαρακτήρων 'o' είναι ο αριθμός χαντρών που θέλουμε να χρησιμοποιήσουμε, δηλ., 'o' αντιστοιχεί σε 1, 'oo' σε 2, 'ooo' σε 3 κτλ. (Η ενσωματωμένη συνάρτηση len δίνει το πλήθος των χαρακτήρων που περιέχει ένα string, πχ., η len('oooo') επιστρέφει 4.)
def abacize(op): |
Στην άσκηση αυτή θα εξασκηθείτε στην υλοποίηση αναδρομικών υπολογισμών.
Συμπληρώστε τα κενά ________ στο σώμα της συνάρτησης sum_squares ώστε να επιστρέφει το άθροισμα των τετραγώνων των αριθμών 1 έως n, δηλ., την τιμή της έκφρασης 12+22+32+...+n2.
Αν και υπάρχει αριθμητική έκφραση που δίνει απευθείας τον ζητούμενο υπολογισμό, θα πρέπει η υλοποίηση να γίνει με αναδρομικό υπολογισμό χωρίς να χρησιμοποιηθούν εντολές επανάληψης όπως while και for.
def sum_squares(n): |
Στην άσκηση αυτή θα εξασκηθείτε στην υλοποίηση αναδρομικών υπολογισμών.
Συμπληρώστε το σώμα της print_digits ώστε η κλήση print_digits(x) να εμφανίζει τα ψηφία του θετικού ακέραιου x ένα ένα σε μια γραμμή το κάθε ένα, αρχίζοντας από το πιο σημαντικό (αριστερότερο) ψηφίο.
Η υλοποίηση πρέπει να γίνει με αναδρομικό υπολογισμό χωρίς να χρησιμοποιηθούν εντολές επανάληψης όπως while και for.
def print_digits(x): |