PYTHON ΜΑΘΗΜΑ 21 – THEORY REVIEW – SHOPPING CART COMPLETE EXAMPLE

ΔΩΡΕΑΝ ΜΑΘΗΜΑΤΑ PYTHON



ΕΙΣΑΓΩΓΗ

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

Shopping Cart (Καλάθι Αγορών)

Στο σημερινό μας παράδειγμα, θα αναλύσουμε και θα γράψουμε τον κώδικα για ένα ψηφιακό καλάθι αγορών (shopping cart).

Φαντάζομαι πως οι περισσότεροι έχετε αγοράσει κάποιο προϊόν από ηλεκτρονικά καταστήματα, όπως η Amazon. Πριν προχωρήσετε στην πληρωμή, το προϊόν που επιλέγετε μπαίνει πρώτα στο καλάθι. Αυτό σας δίνει την ευελιξία να παραμείνετε στην ιστοσελίδα για να συνεχίσετε τις αγορές σας ή, αν αλλάξετε γνώμη, να αφαιρέσετε το συγκεκριμένο προϊόν και να προτιμήσετε κάτι άλλο. Όποια και αν είναι η τελική σας απόφαση, το σύστημα του καλαθιού πρέπει να μπορεί να την υποστηρίξει!

Τι θα κάνει η εφαρμογή μας;

Ο κώδικας που θα δημιουργήσουμε αφορά μια μικρή εφαρμογή η οποία θα διαχειρίζεται τα προϊόντα στο καλάθι. Πιο συγκεκριμένα, θα έχουμε τη δυνατότητα να:

  • Προσθέτουμε προϊόντα.
  • Αφαιρούμε προϊόντα.
  • Αδειάζουμε (καθαρίζουμε) πλήρως το καλάθι.
  • Προβάλλουμε τα προϊόντα που βρίσκονται ήδη μέσα σε αυτό.

Η δομή του κώδικα

Όπως έχουμε ήδη αναφέρει σε προηγούμενη ενότητα, η βέλτιστη πρακτική όταν γράφουμε κώδικα στην Python είναι να διαιρούμε το πρόβλημα. Έτσι, θα χωρίσουμε την κάθε εργασία (task) σε μια ξεχωριστή συνάρτηση (function).

Το πρώτο βήμα: Δημιουργία του καλαθιού

Στην αρχή του προγράμματός μας, πρέπει να δημιουργήσουμε το ίδιο το καλάθι. Θα χρησιμοποιήσουμε μια λίστα της Python.

Η μεταβλητή basket, η οποία αρχικά θα ισούται με μια άδεια λίστα, θα οριστεί ως καθολική (global). Ο λόγος που επιλέγουμε αυτή την προσέγγιση είναι επειδή θέλουμε η εμβέλειά της (scope) να καλύπτει ολόκληρο το αρχείο, ώστε όλες οι συναρτήσεις μας να έχουν πρόσβαση σε αυτή και να μπορούν να την τροποποιούν.

app.py

basket = []

Προσθήκη Προϊόντων στο Καλάθι

Η δυνατότητα να προσθέτουμε ή να αφαιρούμε προϊόντα από το καλάθι αγορών μας θα βασιστεί στις ενσωματωμένες μεθόδους που προσφέρουν οι λίστες της Python.

Πιο συγκεκριμένα, η μέθοδος append() είναι αυτή που μας επιτρέπει να εισάγουμε εύκολα νέα στοιχεία στη λίστα μας. Για να επιβεβαιώσουμε ότι όλα λειτουργούν σωστά, μπορούμε να δοκιμάσουμε τον κώδικα της συνάρτησής (function) μας, περνώντας της απλώς ένα προϊόν (item) ως όρισμα.

app.py

basket = []

def addItem(item):
    basket.append(item)
    print(f"The item {item} has been added to your basket.")

addItem("Laptop")

Output

Δωρεάν Μαθήματα Python

Αφαίρεση Προϊόντων από το Καλάθι

Ως επόμενο βήμα, θέλουμε να έχουμε τη δυνατότητα να αφαιρούμε προϊόντα από το καλάθι αγορών μας. Για τον σκοπό αυτό, θα αξιοποιήσουμε τη μέθοδο remove() που μας παρέχουν οι λίστες στην Python. Φυσικά, ακολουθώντας την ίδια λογική με πριν, αυτό το κομμάτι του κώδικα θα γραφτεί στη δική του, ξεχωριστή συνάρτηση.

app.py

basket = []

def addItem(item):
    basket.append(item)
    print(f"The item {item} has been added to your basket.")

def removeItem(item):
    basket.remove(item)
    print(f"The item {item} has been removed from your basket.")

addItem("Laptop")
addItem("IPhone")
removeItem("Laptop")

Output

Δωρεάν Μαθήματα Python

Εκκαθάριση του Καλαθιού (Άδειασμα)

Κάποια στιγμή, ο χρήστης μπορεί να αποφασίσει να καθαρίσει πλήρως το καλάθι αγορών του για να ξεκινήσει τις αγορές του από την αρχή —ίσως επειδή άλλαξε γνώμη ή βρήκε κάποιο καλύτερο προϊόν. Για να του δώσουμε αυτή τη δυνατότητα, θα δημιουργήσουμε ακόμα μία συνάρτηση (function), η οποία θα αξιοποιεί τη μέθοδο clear() της λίστας.

app.py

basket = []

def addItem(item):
    basket.append(item)
    print(f"The item {item} has been added to your basket.")

def removeItem(item):
    basket.remove(item)
    print(f"The item {item} has been removed from your basket.")

def clearBasket():
    basket.clear()
    print("Your basket is now empty")

addItem("Laptop")
addItem("IPhone")
clearBasket()

Output

Δωρεάν Μαθήματα Python


Προβολή των Προϊόντων του Καλαθιού

Το επόμενο λογικό βήμα είναι να μπορούμε να δούμε όλα τα προϊόντα που βρίσκονται μέσα στο καλάθι αγορών. Για να το πετύχουμε αυτό, θα γράψουμε μία ακόμα συνάρτηση (function), μέσα στην οποία θα χρησιμοποιήσουμε έναν βρόχο επανάληψης (loop) —όπως για παράδειγμα μια δομή for— ο οποίος θα διατρέχει και θα εμφανίζει στην οθόνη όλα τα στοιχεία της λίστας μας.

app.py

basket = []

def addItem(item):
    basket.append(item)
    print(f"The item {item} has been added to your basket.")

def removeItem(item):
    basket.remove(item)
    print(f"The item {item} has been removed from your basket.")

def clearBasket():
    basket.clear()
    print("Your basket has been cleared")

def showBasket():
    if basket:
        print("Your basket contains the following items")
        for item in basket:
            print(f"{item}")
    else:
        print("Your basket is empty...")

addItem("Laptop")
showBasket()
removeItem("Laptop")
clearBasket()
showBasket()

Output

Δωρεάν Μαθήματα Python

Το Κεντρικό Μενού της Εφαρμογής (Αλληλεπίδραση Χρήστη)

Για να μπορέσουμε να αλληλεπιδράσουμε πρακτικά με το καλάθι αγορών, η εφαρμογή θα πρέπει να ρωτάει τον χρήστη τι ακριβώς θέλει να κάνει.

Ο πιο εύκολος τρόπος να προσεγγίσουμε αυτό το ζήτημα, είναι να δημιουργήσουμε έναν συνεχόμενο βρόχο επανάληψης (loop). Μέσα από αυτό το loop, θα παρουσιάζουμε στον χρήστη ένα «μενού» με όλες τις διαθέσιμες επιλογές του. Συγκεκριμένα, ο χρήστης θα μπορεί να επιλέξει να:

  • Προσθέσει ένα νέο προϊόν.
  • Αφαιρέσει ένα υπάρχον προϊόν.
  • Εκκαθαρίσει πλήρως το καλάθι του.
  • Προβάλει όλα τα προϊόντα που βρίσκονται ήδη μέσα στο καλάθι.
  • Τερματίσει την εφαρμογή (έξοδος).

Όπως και στα προηγούμενα βήματα, ακολουθώντας τη σταθερή μας προσέγγιση, ο κώδικας για αυτό το κεντρικό μενού επιλογών θα περικλείεται και αυτός μέσα σε μια δική του, ανεξάρτητη συνάρτηση (function).

app.py

basket = []

def addItem(item):
    basket.append(item)
    print(f"The item {item} has been added to your basket.")

def removeItem(item):
    basket.remove(item)
    print(f"The item {item} has been removed from your basket.")

def clearBasket():
    basket.clear()
    print("Your basket has been cleared")

def showBasket():
    if basket:
        print("Your basket contains the following items")
        for item in basket:
            print(f"{item}")
    else:
        print("Your basket is empty...")

def main():
    done = False
    while not done:
        print("Please type one of the following option:\r")
        answer = input("quit/add/remove/show/clear: ").lower()
        if answer == "quit":
            print("Thanks for using the Basket Application")
            showBasket()
            done = True
        elif answer == "add":
            item = input("What item would you like to buy?").title()
            addItem(item)
        elif answer == "remove":
            showBasket()
            item = input(
                "What item would you like to remove from the basket?").title()
            removeItem(item)
        elif answer == "show":
            showBasket()
        elif answer == "clear":
            clearBasket()
        else:
            print("Sorry that option does not exist")

main()

Output

Δωρεάν Μαθήματα Python

Περιθώρια Βελτίωσης (Τι ακολουθεί;)

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

Για παράδειγμα, προς το παρόν δεν υπάρχει κάποιος μηχανισμός που να διαχειρίζεται την περίπτωση όπου ο χρήστης θα πληκτρολογήσει κάτι διαφορετικό από τις επιλογές που περιμένει η εφαρμογή. Σε πραγματικές συνθήκες, είναι κρίσιμο να προστατεύουμε την εφαρμογή μας (κάνοντας έλεγχο εγκυρότητας ή αλλιώς input validation), ώστε να μη διακόπτεται απότομα η λειτουργία της (crash) εξαιτίας ενός απρόβλεπτου λάθους.

Φυσικά, υπάρχουν και άλλα σημεία που μπορούμε να βελτιστοποιήσουμε, αλλά θα τα αναλύσουμε όλα σε βάθος σε μελλοντικές μας ενότητες!


Στηρίξτε την προσπάθειά μας! ❤️

Αν βρήκατε αυτό το δωρεάν μάθημα χρήσιμο, σκεφτείτε το ενδεχόμενο να κάνετε ένα μικρό donation (δωρεά). Η πολύτιμη συνεισφορά σας μας βοηθάει να μεγαλώσουμε αυτό το site, να αναπτύξουμε νέες, διαδραστικές δυνατότητες online διδασκαλίας και να συνεχίσουμε να προσφέρουμε ποιοτικά μαθήματα προγραμματισμού, δωρεάν για όλους!

full-width

Post a Comment

0 Comments