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

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

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

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

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

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

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

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

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

Μορφοποίηση εξόδου. Σημειώσεις

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

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

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

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

Γραφικά υπολογιστών Εργαστήριο 2 Παιχνίδια μαντεύματος με τυχαίους αριθμούς και loops

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

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

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

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

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

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Σημειωματάριο μαθήματος 1ης Νοε. 2017

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

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος

Στο πρόγραμμα θα πρέπει να γίνει υποχρεωτικά χρήση κλάσεων. Για την υλοποίηση του προγράμματος χρειάζονται 3 βασικές κλάσεις.

Γλώσσα προγραμματισμού python

a. Επιλέγουμε τις γραμμές προς διαγραφή a. Επιλέγουμε τις στήλες προς διαγραφή a. Γράφουμε σε μια στήλη μια σειρά από αριθμούς ή αλφαριθμητικά

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

Αρχές Προγραμματισμού

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

Ευφυής Προγραμματισμός

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Νέο υλικό. Matlab2.pdf - Παρουσίαση μαθήματος 2. Matlab-reference.pdf Σημειώσεις matlab στα ελληνικά (13 σελίδες).

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

Ηλεκτρονικοί Υπολογιστές

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Κατανεμημένα Συστήματα

Μαθηματικά της Φύσης και της Ζωής

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Βασικά Στοιχεία Python 3

Ηλεκτρονικοί Υπολογιστές

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Τεχνικός Εφαρμογών Πληροφορικής

POINTERS, AGGREGATION, COMPOSITION

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Ανάπτυξη και Σχεδίαση Λογισμικού

ΦΥΣ 145 Μαθηματικές Μέθοδοι στη Φυσική. Γράψτε το ονοματεπώνυμο και αριθμό ταυτότητάς σας στο πάνω μέρος της αυτής της σελίδας.

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β

Σχέδια μαθημάτων για την δημιουργία συναρτήσεων υπολογισμού του ΜΚΔ και του ΕΚΠ στην MSWLogo

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη ΠΚ2 11:15, 13:15, 15:15, 17:15 και 19:15

Ασκήσεις στις Δομές Δεδομένων (Λίστες-Συμβολοσειρές)

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

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

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

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

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΤΟ MICROSOFT WORD XP. Ας ξεκινήσουμε λοιπόν!

lab7 PASS -Δεν έχεις καθόλου σχόλια! Διάβασε το φυλλάδιο. PASS -Πολύ καλή εργασία µε σωστά και επεξηγηµατικά σχόλια. -Πρόσεξε την στοίχισή σου!

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

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

Transcript:

Σημειωματάριο Δευτέρας 23 Οκτ. 2017 Ένα μεγάλο πρόγραμμα διαχείρισης πληροφορίας σε λίστες Σήμερα γράψαμε ένα μεγάλο πρόβλημα απλής διαχείρισης μιας μικρής βάσης δεδομένων. Η πληροφορία με την οποία ξεκινάμε περιέχεται ολόκληρη στις δύο λίστες L και M που φαίνονται στην αρχή του προγράμματος. Κάθε στοιχείο της λίστας L περιέχει το όνομα ενός φοιτητή και μια λίστα με τα ονόματα των μαθημάτων που έχει πάρει. Κάθε στοιχείο της λίστας H περιέχει το όνομα ενός μαθήματος και τη λίστα με τις ώρες της εβδομάδας στις οποίες διδάσκεται (μια ώρα της εβδομάδας αναπαρίσταται από μια λίστα με δύο στοιχεία, το όνομα της μέρας και τον αύξοντα αριθμό της ώρας, όπου 0 είναι η ώρα 9:00-10:00, 1 η ώρα 10:00 και, τέλος, 9 είναι η τελευταία ώρα 18:00-19:00). Σκοπός μας στο πρόγραμμα αυτό είναι να εξάγουμε διάφορες πληροφορίες από τις λίστες αυτές. Δείτε τα σχόλια μέσα στο πρόγραμμα για το τι ακριβώς κάνουμε.

In [8]: # Χρησιμοποιούμε τη συνάρτηση pprint από το module ("βιβλιοθήκη") pprint για να τυπώνου με ωραία μια λίστα from pprint import pprint # Λίστα με τους φοιτητές και τα μαθήματά τους L = [ ["Γιάννης", ["ΑπΙ", "ΠρογρΙ", "ΑπΙΙΙ"]], ["Μαρία", ["ΑπΙ", "ΠρογρΙ", "ΓρΑλ"]], ["Ελένη", ["ΑπΙ", "ΠρογρΙ", "ΓρΑλ", "ΑναλΙ"]], ["Μανώλης", []], ["Παντελής", ["ΠρογρΙ", "ΑναλΙ", "ΑπΙΙΙ", "ΦυσΙ"]], ["Μιχάλης", ["ΑναλΙ"]] ] # Λίστα με τα μαθήματα και τις ώρες που διδάσκονται μέσα στη βδομάδα H = [

] ["ΑπΙ", [ ["Τρ", 0], ["Τρ", 1], ["Πε", 0], ["Πε", 1] ] ], ["ΠρογρΙ", [ ["Δε", 2], ["Δε", 3], ["Τε", 4], ["Τε", 5] ] ], ["ΑπΙΙΙ", [ ["Τε", 0], ["Τε", 1], ["Πα", 0], ["Πα", 1] ] ], ["ΑναλΙ", [ ["Τε", 4], ["Τε", 5], ["Πα", 4], ["Πα", 5] ] ], ["ΓρΑλ", [ ["Δε", 3], ["Δε", 4], ["Πα", 3], ["Πα", 4] ] ], ["ΦυσΙ", [ ["Τρ", 4], ["Τρ", 5], ["Πα", 4], ["Πα", 5] ] ], # Στη λίστα courses μαζεύουμε τα ονόματα όλων των μαθημάτων courses = [] for l in L: # Για να τη συμπληρώσουμε διανύουμε τη λίστα L for c in l[1]: # Για κάθε ένα από τα μαθήματα που αναφέρονται σε κάποιο στοιχείο τη ς L if c not in courses: # αν δεν το έχουμε ήδη βάλει στη λίστα μας courses.append(c) # το βάζουμε print("τα μαθήματα είναι:"); print() pprint(courses) print() # μια έξτρα γραμμή # Στη λίστα students μαζεύουμε τα ονόματα όλων των φοιτητών students = [] for l in L: # Διανύουμε τη λίστα L και μαζεύουμε τα πρώτα στοιχεία των στοιχείων της L students.append(l[0]) print("οι φοιτητές είναι:"); print() pprint(students) print() # Τώρα αντιστρέφουμε την πληροφορία που είναι στην L και την παρουσιάζουμε κατά μάθημα. # Στη λίστα M θα έχουμε όλα τα μαθήματα με τους φοιτητές τους. # Η πληροφορία στην M είναι οργανωμένη όπως στην L. Κάθε στοιχείο της M είναι μια λίστα με δύο # στοιχεία. Το πρώτο στοιχείο είναι το όνομα του μαθήματος και το δεύτερο είναι η λίστα όλων των # φοιτητών που παίρνουν το μάθημα. Δείτε την εκτύπωση της λίστας στο output του προγράμ ματος. M = [] for c in courses: # για κάθε μάθημα c M.append([c, []]) # το προσθέτουμε στη λίστα M με κενή λίστα φοιτητών αρχικά.

for l in L: # για κάθε φοιτητή στη λίστα L name = l[0] # έστω name το όνομα του φοιτητή thecourses = l[1] # και έστω thecourses η λίστα των μαθημάτων του φοιτητή for c in thecourses: # για κάθε μάθημα c του φοιτητή που εξετάζουμε for m in M: # διανύουμε τη λίστα M για να βρούμε το στοιχείο της M που αφορά το μάθημα αυτό if m[0]==c: # αν το πρώτο στοιχείο του στοιχείου m της M είναι το c τότε βρ ήκαμε το σωστό στοιχείο m[1].append(name) # προσθέτουμε τον φοιτητή στη λίστα φοιτητών (δεύτερο στοιχείο του m) break # σταματάμε το "for m in M:" παραπάνω αφού δε χρειάζεται πλέον. print("η λίστα των μαθημάτων με τους φοιτητές τους είναι:"); print() pprint(m); print() # Για κάθε ζεύγος φοιτητών θέλουμε να βρούμε τη λίστα των κοινών τους μαθημάτων # πρώτα βρίσκουμε όλα τα ζεύγη φοιτητών, στη λίστα pairs, η οποία θα περιέχει λίστες μή κους 2 pairs = [] for i in students: # Για κάθε φοιτητή i for j in students: # Για κάθε φοιτητή j if i == j: # Δε μας ενδιαφέρουν ζεύγη με ίδια στοιχεία continue # αυτό σημαίνει συνέχισε να πάρεις το επόμενο j if [j, i] not in pairs: # αν το ζεύγος που βρήκαμε, [i, j], δεν είναι ήδη στη λ ίστα με ανάποδη σειρά pairs.append([i, j]) # το βάζουμε στη λίστα pairs # Στη λίστα cpp (courses per pair) θα αποθηκεύσουμε όλα τα ζεύγη φοιτητών με τα κοινά τ ους μαθήματα. # Κάθε στοιχεία της cpp είναι μια λίστα με δύο στοιχεία. Το πρώτο στοιχείο είναι το ζεύ γος φοιτητών (μια # λίστα δηλ. μήκους 2) και το δεύτερο στοιχείο είναι η λίστα των κοινών τους μαθημάτων. Δείτε το output. cpp = [] for p in pairs: # Για κάθε ζεύγος (τα έχουμε ήδη βρει πριν) a = p[0]; b = p[1] # ονομάζουμε a τον πρώτο φοιτητή του ζεύγους και b το δεύτερο for l in L: # Για κάθε φοιτητή στη λίστα L if l[0]==a: # αν ο φοιτητής είναι o a τότε στη μεταβλητή ca κρατάμε τη λίστα τω ν μαθημάτων του ca = l[1]

if l[0]==b: # αν ο φοιτητής είναι ο b τότε στη μεταβλητή cb κρατάμε τη λίστα τω ν μαθημάτων του cb = l[1] cab = [] # έχουμε βρει τα μαθήματα του a (λίστα ca) και τα μαθήματα του b (λίσta c b) # και θέλουμε να βρούμε τα κοινά στοιχεία της λίστα ca και της cb στη λίστα cab. for h in ca: # για κάθε μάθημα του a if h in cb: # αν αυτό είναι και μάθημα του b cab.append(h) # τότε το προσθέτουμε στην cab (και μόνο τότε) cpp.append([p, cab]) # έχουμε φτιάξει τη λίστα cab του ζεύγους p και το προσθέτουμε στη λίστα cpp print("τα ζεύγη των φοιτητών με τα κοινά τους μαθήματα είναι:"); print() pprint(cpp); print() # Από δω και κάτω θα βρούμε και θα τυπώσουμε το ωρολόγιο πρόγραμμα της εβδομάδας, το συ νολικό (σε ποιες # ώρες της εβδομάδας γίνονται μαθήματα) και για κάθε φοιτητή χωριστά. # Αν σε μια ώρα της εβδομάδας γίνονται μαθήματα τότε τυπώνουμε σε εκείνη τη θέση το str ing '**' αλλιώς το ' ' day = ["Δε", "Τρ", "Τε", "Πε", "Πα"] # Οι εργάσιμες μέρες της εβδομάδας print(" Συνολικό ωρολόγιο πρόγραμμα") s = " " # Η πρώτη γραμμή που θα τυπωθεί print(s) # Θα τυπωθούν ακόμη 10 γραμμές, όσες και οι ώρες κάθε μέρας # Σε κάθε γραμμή θα υπάρχουν 5 ώρες, μια για κάθε εργάσιμη μέρα. Δείτε το output. for i in range(10): # Για κάθε ώρα της μέρας (για κάθε γραμμή που θέλουμε να τυπώσουμε) line = "{x:02d}".format(x=i+9)+" " # Στην αρχή της γραμμής τυπώνουμε την ώρα που αν τιστοιχεί (αρχίζει από i+9) # Φροντίζουμε ακόμη και το 9 να τυπωθεί διψήφιο για να είναι σωστή η στοίχιση. # Αυτός είναι ο ρόλος του x:02d μέσα στα άγγιστρα. Το x είναι εδώ το όνομα της "τρύ πας" με το οποίο αναφερόμαστε # σε αυτή στο format. Το 02d σημαίνει ότι τυπώνουμε ακέραιο, σε 2 το πολύ θέσεις, μ ε "leading zeros". for d in range(5): # Για κάθε μια από τις 5 μέρες sp=" " # αυτό θα τυπωθεί στη θέση της μέρας στη γραμμή αυτή. Αν δε βρούμε μάθ ημα εκεί τότε θα τυπωθούν κενά for h in H: # Για κάθε μάθ ημα στον πίνακα H if [day[d], i] in h[1]: # Αν η μέρα και ώρα που κοιτάμε είναι στις ώρες του μαθήματος sp="** " # τότε ξέρουμε ότι διδάσκεται μάθημα αυτή την ώρα και τυπώνουμ

ε αστεράκια break # δε χρειάζεται να ψάξουμε αν γίνονται άλλα μαθήματα αφού ήδη έχο υμε βρει ένα. line += sp # προσθέτουμε το string που βρήκαμε στη γραμμή line που θα τυπώσουμε print(line) # τυπώνουμε τη γραμμή που φτιάξαμε (που αντιστοιχεί σε μια από τις 10 ώ ρες της μέρας) print() # Για κάθε φοιτητή θέλουμε τώρα να τυπώσουμε το ωρολόγιό του πρόγραμμα for st in students: # Για κάθε φοιτητή st stcourses = [] # βρίσκουμε πρώτα από τη λίστα L τη λίστα με τα μαθήματά του for l in L: if l[0]==st: stcourses=l[1] break print("------------------------ωρολόγιο πρόγραμμα του/ης {name}".format(name=st)) print() s = " " # Πρώτη γραμμή, επικεφαλίδα, λίγο πιο μέσα τώρα print(s) # τυπώνουμε την επικεφαλίδα for i in range(10): # Για κάθε ώρα της μέρας line = "{x:02d} - {y:02d}".format(x=i+9, y=i+10)+" " # τώρα τυπώνουμε αρχή και τέλος της ώρας for d in range(5): # για κάθε μέρα της βδομάδας sp=" " # ψάχνουμε όπως και πριν να βρούμε τι θα τυπώσουμε στη θέση αυτή, κενά ή αστεράκια for h in H: if h[0] not in stcourses: continue if [day[d], i] in h[1]: sp="** " break line += sp print(line)

Τα μαθήματα είναι: ['ΑπΙ', 'ΠρογρΙ', 'ΑπΙΙΙ', 'ΓρΑλ', 'ΑναλΙ', 'ΦυσΙ'] Οι φοιτητές είναι: ['Γιάννης', 'Μαρία', 'Ελένη', 'Μανώλης', 'Παντελής', 'Μιχάλης'] Η λίστα των μαθημάτων με τους φοιτητές τους είναι: [['ΑπΙ', ['Γιάννης', 'Μαρία', 'Ελένη']], ['ΠρογρΙ', ['Γιάννης', 'Μαρία', 'Ελένη', 'Παντελής']], ['ΑπΙΙΙ', ['Γιάννης', 'Παντελής']], ['ΓρΑλ', ['Μαρία', 'Ελένη']], ['ΑναλΙ', ['Ελένη', 'Παντελής', 'Μιχάλης']], ['ΦυσΙ', ['Παντελής']]] Τα ζεύγη των φοιτητών με τα κοινά τους μαθήματα είναι: [[['Γιάννης', 'Μαρία'], ['ΑπΙ', 'ΠρογρΙ']], [['Γιάννης', 'Ελένη'], ['ΑπΙ', 'ΠρογρΙ']], [['Γιάννης', 'Μανώλης'], []], [['Γιάννης', 'Παντελής'], ['ΠρογρΙ', 'ΑπΙΙΙ']], [['Γιάννης', 'Μιχάλης'], []], [['Μαρία', 'Ελένη'], ['ΑπΙ', 'ΠρογρΙ', 'ΓρΑλ']], [['Μαρία', 'Μανώλης'], []], [['Μαρία', 'Παντελής'], ['ΠρογρΙ']], [['Μαρία', 'Μιχάλης'], []], [['Ελένη', 'Μανώλης'], []], [['Ελένη', 'Παντελής'], ['ΠρογρΙ', 'ΑναλΙ']], [['Ελένη', 'Μιχάλης'], ['ΑναλΙ']], [['Μανώλης', 'Παντελής'], []], [['Μανώλης', 'Μιχάλης'], []], [['Παντελής', 'Μιχάλης'], ['ΑναλΙ']]] Συνολικό ωρολόγιο πρόγραμμα 09 ** ** ** ** 10 ** ** ** ** 11 ** 12 ** **

13 ** ** ** ** 14 ** ** ** 15 16 17 18 ------------------------Ωρολόγιο πρόγραμμα του/ης Γιάννης 09-10 ** ** ** ** 10-11 ** ** ** ** 11-12 ** 12-13 ** 13-14 ** 14-15 ** 15-16 17-18 ------------------------Ωρολόγιο πρόγραμμα του/ης Μαρία 09-10 ** ** 10-11 ** ** 11-12 ** 12-13 ** ** 13-14 ** ** ** 14-15 ** 15-16 17-18 ------------------------Ωρολόγιο πρόγραμμα του/ης Ελένη 09-10 ** ** 10-11 ** ** 11-12 ** 12-13 ** ** 13-14 ** ** ** 14-15 ** **

15-16 17-18 ------------------------Ωρολόγιο πρόγραμμα του/ης Μανώλης 09-10 10-11 11-12 12-13 13-14 14-15 15-16 17-18 ------------------------Ωρολόγιο πρόγραμμα του/ης Παντελής 09-10 ** ** 10-11 ** ** 11-12 ** 12-13 ** 13-14 ** ** ** 14-15 ** ** ** 15-16 17-18 ------------------------Ωρολόγιο πρόγραμμα του/ης Μιχάλης 09-10 10-11 11-12 12-13 13-14 ** ** 14-15 ** ** 15-16

17-18