Python

ΕΝΟΤΗΤΑ 17 - Theory Review - Shopping Cart Complete Example

image description

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

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

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

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

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

App.py


basket = [ ]
	     

Η ικανότητα να προσθέτουμε καινούργια προϊόντα στο καλάθι αγορά μας, θα στηριχτεί στις μεθόδους που μας προσφέρει η λίστα. Συγκεκριμένα, η append μέθοδο είναι αυτή που μας επιτρέπει να προσθέτουμε καινούργια στοιχεία στην λίστα. Μπορούμε να δοκιμάσουμε τον κώδικα της function περνώντας ένα item στην function.

App.py


basket = []

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

addItem("Laptop")

	   

Output


The item Laptop has been added to your basket.	
	 

Σαν επόμενο βήμα θέλουμε να αφαιρέσουμε προϊόντα από το καλάθι αγοράς. Για αυτό το σκοπό θα χρησιμοποιήσουμε την remove μέθοδο από την λίστα. Ο κώδικας αυτός θα γραφτεί στην δική του 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.")

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

   

Output


The item Laptop has been added to your basket.
The item Laptop has been removed from your basket.	
	 

Κάποια στιγμή, μπορεί να αποφασίσετε να καθαρίσετε το καλάθι αγοράς για να ξεκινήσετε την αγορά σας από την αρχή ίσως γιατί βρήκατε κάποιο καλύτερο προϊόν. Για να δώσουμε στον χρήστη την δυνατότητα καθαρισμού του καλαθιού αγοράς θα πρέπει να γράψουμε ακόμα μια 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")
removeItem("Laptop")
clearBasket()

	   

Output


The item Laptop has been added to your basket.
The item Laptop has been removed from your basket.
Your basket is now empty	
	 

Το επόμενο λογικό βήμα είναι να μπορέσουμε να δούμε όλα τα προϊόντα που βρίσκονται μέσα στο καλάθι αγοράς. Για να το πετύχουμε αυτό θα γράψουμε ένα function μέσα στο οποίο υπάρχει ένα loop που μας δείχνει όλα τα στοιχεία της λίστας.

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


The item Laptop has been added to your basket.
Your basket contains the following items
Laptop
The item Laptop has been removed from your basket.
Your basket has been cleared
Your basket is empty...	
	 

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


Please type one of the following option:
quit/add/remove/show/clear: show
Your basket is empty...
Please type one of the following option:
quit/add/remove/show/clear: add
What item would you like to buy?Laptop
The item Laptop has been added to your basket.
Please type one of the following option:
quit/add/remove/show/clear: add
What item would you like to buy?Smartphone
The item Smartphone has been added to your basket.
Please type one of the following option:
quit/add/remove/show/clear: show
Your basket contains the following items
Laptop
Smartphone
Please type one of the following option:
quit/add/remove/show/clear: clear
Your basket has been cleared
Please type one of the following option:
quit/add/remove/show/clear: show
Your basket is empty...
Please type one of the following option:
quit/add/remove/show/clear: quit
Thanks for using the Basket Application
Your basket is empty…

	 

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

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

Μιχάλης Κασάπογλου

Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.

loader