Επαναχρησιμοποίηση κώδικα 3/3 – 1 Functions

Ωραία βρήκαμε ένα τρόπο λοιπόν να αφαιρούμε ένα στοιχείο που εμφανίζεται σε μία λίστα παραπάνω από μία φορά. Ας σκεφτούμε όμως λίγο πιο γενικά. Υλοποιήσαμε έναν αλγόριθμο που ίσως μας φανεί χρήσιμος και στην επίλυση άλλων προβλημάτων.

Image result for reuse funny cartoon

Υπάρχουν τρόποι  ώστε να τον έχουμε διαθέσιμο στην προγραμματιστική μας φαρέτρα, για την επόμενη φορά ? ή θα πρέπει κάνουμε ένα κόπυ πέϊστ, προσαρμόζοντας τα ονόματα των αντικειμένων.

Μέρος 1ο – Δημιουργία συνάρτησης.

Η δημιουργία μίας συνάρτησης ίσως είναι ο πιο απλός τρόπος για την επαναχρησιμοποίηση τμήματος ενός κώδικα. Ας το δούμε:

Ας πάρουμε ως παράδειγμα αυτό που αναφέραμε σε προηγούμενο άρθρο δηλαδή: τη διαγραφή ενός στοιχείου που εμφανίζεται σε μία λίστα περισσότερες από μία φορές.

Είχαμε λοιπόν το εξής τμήμα για τη διαγραφή ενός στοιχείου:

a_list = [3,4,8,5,8,9,8,2,10]
item = input("Item to delete=")
i = 0
while i <= len(a_list)-1:
    if item == a_list[i]:
        print i, a_list.pop(i)
    else:
        i += 1
print a_list
------------------------------
>>> 
Item to delete=8
2 8
3 8
4 8
[3, 4, 5, 9, 2, 0]

Ας το δούμε τώρα σε συνάρτηση:

def pop_all(item, a_list):
    '''Η Συνάρτηση διαγράφει τα στοιχεία
    item από τη λίστα a_list'''
    i = 0
    while i <= len(a_list)-1:
        if item == a_list[i]:
            print i, a_list.pop(i)
        else:
            i += 1

# Παραδείγματα κλήσης
#----------------------------------------------------
my_list = [3,4,8,5,8,9,8,2,0]
pop_all(8, my_list)
print my_list

names_list = ['tasos', 'maria', 'antonis', 'anna', 'tasos']
pop_all('tasos', names_list)
print names_list

list_of_lists = [[1,2,3],[4,5,6],[7,8,9],[1,2,3]]
x = [1,2,3]
pop_all(x, list_of_lists)
print list_of_lists
# -------------------------------------------------
# Αποτελέσματα
>>> 
2 8
3 8
4 8
[3, 4, 5, 9, 2, 0]
-------------------------------------------------
0 tasos
3 tasos
['maria', 'antonis', 'anna']
-------------------------------------------------
0 [1, 2, 3]
2 [1, 2, 3]
[[4, 5, 6], [7, 8, 9]]
>>> 

Χμμμ ένα θέμα τώρα που προκύπτει είναι ότι η συνάρτηση αυτή δεν έχει return ??? δηλαδή τι ? δεν επιστρέφει τίποτα ? και πως γίνεται !!!

Θα τα εξηγήσουμε σε επόμενο άρθρο προς το παρόν λοιπόν υλοποιήστε εάν σας μπερδεύει τη συνάρτηση έτσι:

def pop_all(item, a_list):
    '''Η Συνάρτηση διαγράφει τα στοιχεία
    item από τη λίστα a_list'''
    i = 0
    while i <= len(a_list)-1:
        if item == a_list[i]:
            print i, a_list.pop(i)
        else:
            i += 1
    return a_list

Related image

Εν τω μεταξύ (ή εντωμεταξύ) μπορείτε να απολαύσετε την ευελιξία της python όπου, η ίδια συνάρτηση μπορεί να δουλέψει και με λίστα ακεραίων και με λίστα αλφαριθμητικών και με λίστα λιστών και γενικά με οποιαδήποτε λίστα αντικειμένων. Χαρακτηριστικό που ονομάζεται:

πολυμορφισμός

Image result for polymorphism

τι πως? δεν καταλάβατε?? ουφ πολλά θέματα προέκυψαν πάμε να λύσουμε ένα και προκύπτουν και άλλα, τι μου θυμίζει αυτό, μα κάτι μου θυμίζει:

Image result for λερναια υδρα

 ας το αφήσουμε και αυτό το θέμα λοιπόν (τον πολυμορφισμό) για άλλη φορά !!!

Κατηγορίες: Προγραμματισμός. Προσθήκη στους σελιδοδείκτες.

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *