Σημειωματάριο Δευτέρας 20 Νοε. 2017

Σχετικά έγγραφα
Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Σημειωματάριο Δευτέρας 23 Οκτ. 2017

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

Εργαστήριο 9: Αρχεία

Θέματα Προγραμματισμού Η/Υ

Σημειωματάριο Τετάρτης 29 Νοε. 2017

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

Μεθόδων Επίλυσης Προβλημάτων

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ- Ακαδημαϊκό Φροντιστήριο ΕΠΑΛ-Κάνιγγος 13 Αθήνα 2017

Βασικές Ασκήσεις από τα Εργαστήρια της PYTHON (εβδομάδα 5)

Εκκαθάριση από Φαρμακοποιό

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Εισαγωγή στην Αριθμητική Ανάλυση

2. Με το εικονίδιο συντόμευσης στην επιφάνεια εργασίας των Windows.

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΕΤΑΡΤΗ 20 ΙΟΥΝΙΟΥ 2018

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/10, 23:59

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

Καταχώρηση Παραπεμπτικού Εξετάσεων

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2018 Β ΦΑΣΗ

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

Βάσεις δεδομένων (Access)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

S, (5, -3, 34, -23, 7) ( *, _

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

lab7: Συμβολοσειρές Συμβολοσειρές Ασφάλεια εισόδου Αναγνωσιμότητα κώδικα (σχόλια, στοίχιση, περιγραφικά ονόματα μεταβλητών, κτλ.)

Διαδικαστικός Προγραμματισμός

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

Αικατερίνη Καμπάση, PhD. Τμήμα Προστασίας και Συντήρησης Πολιτισμικής Κληρονομιάς Α.Τ.Ε.Ι. Ιονίων Νήσων

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

α. Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες. Μια συμβολοσειρά μπορεί να αποτελείται από περισσότερες από μία λέξεις.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στον Προγραμματισμό

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

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Δημιουργία «Ηλεκτρονικής τάξης» στη πλατφόρμα e_class του Π.Σ.Δ. (Πανελλήνιο Σχολικό Δίκτυο)

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Ράβδος Εργαλείων, σχεδόν τα ίδια εργαλεία και εικονίδια υπάρχουν όπως στα άλλα προγράμματα που έχετε μάθει μέχρι σήμερα.

Δραστηριότητα 2 a, b = 0,1 a,b = b,a

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

Η γλώσσα προγραμματισμού C

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ

Προγραμματισμός και Εφαρμογές Υπολογιστών

Πίνακες (Arrays) Εισαγωγή στη C++

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑ Ρ Μ Α ΜΑΤΙ Τ ΣΜΟΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Καταχώρηση Παραπεμπτικού Εξετάσεων

Μάντεψε τον Αριθμό. Φύλλο Εργασίας. Οδηγίες

Μάντεψε τον Αριθμό Φύλλο Εργασίας 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ

ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Οδηγός χρήσης Joomla 3.0

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Transcript:

Σημειωματάριο Δευτέρας 20 Νοε. 2017 Ένα πρόγραμμα "τηλεφωνικός κατάλογος" Σήμερα φτιάξαμε μια πρώτη μορφή ενός σχετικά μεγάλου προγράμματος που σκοπό έχει να κρατάει και να διαχειρίζεται τηλέφωνα και άλλη πληροφορία για κάποια άτομα. Μας δίνει την ευκαιρία το πρόγραμμα αυτό να χρησιμοποιήσουμε λεξικά και να χρησιμοποιήσουμε και γράψιμο/διάβασμα σε αρχεία. Η βασική πληροφορία του προγράμματος είναι ένα λεξικό με το όνομα Person στο οποίο τα κλειδιά είναι τα μικρά ονόματα των ατόμων (ή άλλη σύντομη περιγραφή τους) και οι τιμές του κάθε κλειδιού είναι μια λίστα με όλη την πληροφορία που κρατάμε για το άτομο. Σε πρώτη φάση η λίστα αυτή έχει δύο στοιχεία. Το πρώτο είναι το τηλέφωνο του ατόμου (το οποίο το κρατάμε ως string και όχι ως αριθμό) και το δεύτερο είναι το επώνυμο του ατόμου. Η δομή του προγράμματος όπως τη διαμορφώσαμε σιγά-σιγά κατά τη διάρκεια του δίωρου είναι ότι κατ' αρχήν υπάρχει μια συνάρτηση main η οποία καλεί συνεχώς μια συνάρτηση menu. Η συνάρτηση menu διαχειρίζεται την αλληλεπίδραση με το χρήστη σε ψηλό επίπεδο και ανάλογα με τις επιθυμίες του χρήστη καλεί άλλες συναρτήσεις που διεκπεραιώνουν αυτές τις δουλειές. Όλες αυτές οι συναρτήσεις αναφέρονται ρητά μέσα στη συνάρτηση menu. Διαβάστε το πρόγραμμα με προσοχή διαβάζοντας τα σχόλια που υπάρχουν εκεί μέσα για να καταλάβετε πώς λειτουργεί. Για να το τρέξετε θα πρέπει να έχετε και το αρχείο http://fourier.math.uoc.gr/~mk/prog1718/files/mydata.txt (http://fourier.math.uoc.gr/~mk/prog1718/files/mydata.txt) στον ίδιο κατάλογο με το πρόγραμμα αυτό.

In [ ]: # Η επόμενη γραμμή αφορά το καθάρισμα της οθόνης και δουλεύει μόνο στο περιβάλλον προγραμματισμού που # χρησιμοποιώ στο μάθημα. Σε άλλα περιβάλλοντα θα έχει άλλη μορφή (δείτε π.χ. το πρόγραμμα κρεμάλας πο # είχαμε γράψει πριν από μερικές εβδομάδες). from IPython.display import clear_output filename="mydata.txt" # Σε αυτό το αρχείο αποθηκεύουμε το λεξικό με τη συνάρτηση save() και από αυτό το α ρχείο # φορτώνουμε το λεξικό με τη συνάρτηση load() # Στη μεταβλητή Person (τύπου λεξικού) θα βρίσκεται αποθηκευμένη όλη η πληροφορία στο πρόγραμμά μας. # Με άλλα λόγια αυτή είναι η "βάση δεδομένων" μας. # Αρχικά είναι άδειο το λεξικό.

Person={} # Αυτή είναι η κύρια συνάρτηση και η μόνη συνάρτηση που καλείται από το κυρίως πρόγραμμα. def main(): load() # Φορτώνουμε τα δεδομένα που είναι αποθηκευμένα στο αρχείο και γεμίζουμε τη μεταβλητή Person while True: # Τρέχουμε συνεχώς στη συνάρτηση menu εκτός αν αυτή επιστρέψει 1 που είναι σημάδι ότι ret = menu() # ο χρήστης ζήτησε τερματισμό του προγράμματος if ret == 1: break input("πάτα enter για να συνεχίσεις: ") # Αν αφαιρεθεί αυτή η γραμμή τότε η οθόνη καθαρίζει πολύ # γρήγορα και ο χρήστης δεν προλαβαίνει να δει τι τυπώθηκε από αυτά που ζήτησε. # Η συνάρτηση menu διαχειρίζεται την αλληλεπίδραση με το χρήστη σε ψηλό επίπεδο. # Ρωτάει το χρήστη τι θέλει να κάνει και καλεί τις κατάλληλες συναρτήσεις. def menu(): # Επιστρέφει 0 αν θέλουμε να συνεχίσει να καλείται # και 1 αν θέλουμε να σταματήσει να καλείται clear_output() # καθαρίζουμε την οθόνη print("---------------------------------------------------") print("επιλέξτε") print(" s: Δείξτε όλο τον τηλεφωνικό κατάλογο") print("?: Αναζήτηση ατόμου") print(" i: Προσθήκη ατόμου") print(" e: Τροποποίηση ατόμου") print(" d: Σώστε τον κατάλογο στο δίσκο") print(" l: Φορτώστε τον κατάλογο από το δίσκο") print(" q: Κλείσιμο του προγράμματος") print("---------------------------------------------------") # Η επιλογή του χρήστη υποδεικνύεται με ένα γράμμα, μοναδικό ανά εντολή. choice = input(" Η επιλογή σας: ") # Ζητάμε από το χρήστη να επιλέξει λειτουργία. if choice == "s": show() # Δείχνουμε όλες τις εγγραφές στη βάση δεδομένων μας if choice == "?": search() # Αναζητούμε μια εγγραφή στη βάση if choice == "i": insert() # Προσθήκη μιας εγγραφής if choice == "e": edit() # Τροποποίηση μιας εγγραφής

if choice == "d": save() # Αποθήκευση του λεξικού στο αρχείο if choice == "l": load() # Φόρτωμα του λεξικού από το αρχείο if choice == "q": 1 # Τέλειωμα του προγράμματος. Μόνο τότε επιστρέφει 1. # Η συνάρτηση αυτή, που δεν καλείται από την menu, αλλα από άλλες συναρτήσεις # δείχνει απλά μαι εγγραφή της βάσης στο χρήστη def showperson(name, lastname, phone): print("*** {}: Επώνυμο: {} Αριθμ. Τηλ. {}".format(name, lastname, phone)) # Δείχνει όλες τις εγγραφές στο χρήστη (αλφαβητική σειρά κλειδιού) def show(): for p in sorted(person.keys()): lastname = Person[p][1] phone = Person[p][0] showperson(p, lastname, phone) # Αναζήτηση κλειδιού στη βάση def search(): k = input("δώστε το μικρό όνομα του ατόμου: ").strip() # Ο ρόλος του strip είναι να απαλλαγούμε από if k not in Person.keys(): # κενούς χαρακτήρες στο τέλος της απάντησης του χρήστ η print("δεν υπάρχει τέτοιο όνομα") L = Person[k] # Το βρήκαμε και φέρνουμε τα στοιχεία του αό τη βάση. lastname = L[1]; phone = L[0] showperson(k, lastname, phone) # Τα δείχνουμε # Εισαγωγή νέου ατόμου στη βάση def insert(): name = input("δώστε το μικρό όνομα για καταχώρηση: ").strip() if name in Person.keys(): print("υπάρχει ήδη. Sorry.") # Το όνομα που ζήτησε να εισαχθεί υπάρχει ήδη lastname = input("δώστε το επώνυμο: ") # Νέο όνομα. Ζητάμε από το χρήστη τα στοιχεία του. phone = input("δώστε το τηλέφωνο: ") Person[name] = [ phone, lastname ] # Νέα εγγραφή στη βάση.

# Τροποποίηση στοιχείων ατόμου def edit(): name = input("δώστε το μικρό όνομα για τροποποίηση: ").strip() if name not in Person.keys(): print("δεν υπάρχει. Sorry.") lastname = Person[name][1] phone = Person[name][0] print("τα στοιχεία του {} είναι: ".format(name)) # Δείχνουμε τα υπάρχοντα στοιχεία στο χρήστη print(" Επώνυμο: {}".format(lastname)) print(" Τηλέφωνο: {}".format(phone)) newlastname = input("δώστε νέο επώνυμο (enter για ίδιο): ").strip() # Ζητάμε τα νέα στοιχεία newphone = input("δώστε νέο τηλέφωνο (enter για ίδιο): ").strip() if newlastname=="": # Αν ο χρήστης πάτησε απλά enter τότε διατηρούμε τα παλιά στοιχεία. newlastname = lastname if newphone == "": # Αν ο χρήστης πάτησε απλά enter τότε διατηρούμε τα παλιά στοιχεία. newphone = phone Person[name] = [ newphone, newlastname] # Τροποποιούμε την τιμή του κλειδιού name στο λεξικό. # Αποθήκευση του λεξικού στο αρχείο με όνομα filename def save(): f = open(filename, "w") # Ανοίγουμε το αρχείο για γράψιμο N = len(person) print(n, file=f) # Στην πρώτη γραμμή γράφουμε το πλήθος των εγγραφών (για πιο εύκολο διάβασμα) for p in Person.keys(): # Για κάθε εγγραφή στη βάση μας γράφουμε τρεις διαδοχικές γραμμές στο αρχείο print(p, file=f) # Στην πρώτη το όνομα print(person[p][1], file=f) # Στη δεύτερη το επώνυμο print(person[p][0], file=f) # Στην τρίτη το τηλέφωνο f.close() # Κλείνουμε το αρχείο # Γεμίζουμε το λεξικό μας από το αρχείο (που είναι γραμμένο όπως το γράφει η συνάρτηση load). def load(): global Person # Εδώ πρέπει να δηλωθεί το Person ως global μεταβλητή αλλιώς η συνάρτηση load τη θεωρεί τοπική. # Ο λόγος είναι ότι η πρώτη πρόσβαση που γίνεται στην Person είναι εγγραφή και όχι ανάγνωση. # Δε θα έβλαπτε γενικά να δηλώναμε την Person ως global μεταβλητή σε κάθε συνάρτηση σε αυτό το πρόγρα μμα. f = open(filename, "r") # Ανοίγουμε το αρχείο για διάβασμα. # ***** Ως έχει θα αποτύχει και θα παρουσιάσει σφάλμα αν το αρχείο με όνομα filename δεν υπάρχει # ***** ή, για κάποιο άλλο λόγο, δε μπορεί να ανοιχθεί.. L = [ s.strip() for s in f.readlines() ] # Διαβάζουμε όλες τις γραμμές του αρχείου στη λίστα L.