10 Ιουνίου 2020

Αφαίρεση αρνητικών αριθμών από μια λίστα με την χρήση της μεθόδου pop()


Πρόγραμμα με συνάρτηση που αφαιρεί τους αρνητικούς αριθμούς από μία λίστα ακεραίων αριθμών.
Η διάσχιση της λίστας πρέπει να γίνει από το τέλος προς την αρχή της λίστας για να μην παραλείπονται θέσεις και να μην έχουμε το μήνυμα "out of range", δηλαδή να ελέγχουμε μία θέση της λίστας που δεν υπάρχει πλέον.

Πρόγραμμα

[1, -2, -5, 3, 5, 87, 23, 78, -1923, -5, -45, -53, 100]
[1, 3, 5, 87, 23, 78, 100]



Παράδειγμα με παράλληλη ταξινόμηση





Διπλή παράλληλη ταξινόμηση, πρώτα σε αύξουσα σειρά και μετά σε φθίνουσα σειρά ώστε τα γράμματα που έχουν ίδιο αριθμό να είναι ταξινομημένα αλφαβητικά. Π.χ. 'b','f' που έχουν 85 και 'g', 'h' που έχουν 79

Παράδειγμα 

 Πριν την ταξινόμηση
['c', 'f', 'a', 'h', 'd', 'b', 'e', 'i', 'g']
[89, 85, 92, 79, 83, 85, 95, 82, 79]

Μετά την ταξινόμηση
['e', 'a', 'c', 'b', 'f', 'd', 'i', 'g', 'h']
[95, 92, 89, 85, 85, 83, 82, 79, 79]

1 Ιουνίου 2020

Πρόγραμμα Python που μεταφέρει τις λέξεις από ένα κείμενο σε λίστα


Να γίνει πρόγραμμα σε Python που:
1) Ζητάει από τον χρήστη ένα κείμενο (συμβολοσειρά) που αποτελείται από λέξεις.
2) Στη συνέχεια οι λέξεις μεταφέρονται μία μία σε μία λίστα. Θεωρούμε ότι μία λέξη τελείωσε όταν εντοπιστεί το κενό διάστημα " " ή ένας από τους χαρακτήρες ! , . : ; ? 
3) Να εμφανιστούν μία μία οι λέξεις που μεταφέρθηκαν στη λίστα.

Παρατήρηση: Οι χαρακτήρες ! , . : ; ? και το κενό διάστημα " " δεν μεταφέρονται στη λίστα, ακόμα κι αν υπάρχουν στη σειρά.
Π.χ.

Καλημέρα, που είσαι; Καιρό έχω να σε δω!!

Καλημέρα
που
είσαι
Καιρό
έχω
να
σε
δω

Ενδεικτική λύση


10 Μαΐου 2020

Θέμα πανελλαδικών ΓΕΛ (Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον) προσαρμοσμένο για Python


Στην 27η Βαλκανιάδα Πληροφορικής που θα διεξαχθεί στην Αθήνα τον Σεπτέμβριο του 2020, συμμετέχουν 40 μαθητές. Κάθε μαθητής παίρνει έναν κωδικό από 1 έως και 40, ο οποίος αντιστοιχεί στη σειρά που δήλωσε συμμετοχή. Κάθε μαθητής καλείται να επιλύσει έξι (6) προβλήματα. Για κάθε πρόβλημα αναπτύσσει τη λύση του σε μία γλώσσα προγραμματισμού και την υποβάλλει για βαθμολόγηση. Η λύση βαθμολογείται σε ακέραια κλίμακα από 0 έως 100. Κατά τη διάρκεια του διαγωνισμού κάθε μαθητής και για κάθε πρόβλημα μπορεί να υποβάλλει τη λύση του όσες φορές θέλει.

Να αναπτύξετε πρόγραμμα σε ΓΛΩΣΣΑ το οποίο:

1.Να διαβάζει επαναληπτικά τα ονόματα των μαθητών και να τα καταχωρίζει στη λίστα ΟΝ. Επίσης, να αρχικοποιεί με την τιμή 0 όλα τα στοιχεία της λίστας VATH (λίστα δύο διαστάσεων με 40 υπολίστες 6 στοιχείων), η οποία θα περιέχει τη βαθμολογία κάθε μαθητή για κάθε πρόβλημα.

2. Κάθε φορά που μία λύση προβλήματος υποβάλλεται και βαθμολογείται, το πρόγραμμα να διαβάζει τον κωδικό του μαθητή (από 1 έως και 40), αριθμό του προβλήματος (από 1 έως και 6) και τη βαθμολογία του (από 0 έως και 100).  Η βαθμολογία να καταχωρίζεται στην αντίστοιχη θέση της λίστας VATH μόνο αν είναι μεγαλύτερη από τη βαθμολογία που είναι ήδη καταχωρισμένη. Για τον τερματισμό της εισαγωγής δεδομένων το πρόγραμμα να εμφανίζει το μήνυμα «Υπάρχει νέα λύση προβλήματος; ΝΑΙ / ΟΧΙ». Αν εισαχθεί η τιμή «ΟΧΙ», να τερματίζεται η εισαγωγή δεδομένων.

3. Να υπολογίζει και να καταχωρίζει στην λίστα SV τα αθροίσματα των βαθμολογιών κάθε μαθητή στα έξι προβλήματα. Για τον σκοπό αυτό να καλεί μόνο μια φορά το υποπρόγραμμα με όνομα YSV. Να αναπτύξετε το υποπρόγραμμα YSV το οποίο να δέχεται ως είσοδο την λίστα VATH και να επιστρέφει ως έξοδο συμπληρωμένη την λίστα SV.

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

25 Μαρτίου 2020

Παράδειγμα με Κλάση Student (μαθητής) και μεθόδους


Δημιουργία κλάσης Student με χαρακτηριστικά (attributes):
  • am (Αριθμός Μητρώου), 
  • name (Ονοματεπώνυμο), 
  • sclass (Τάξη),
  • avg (Γενικό μέσο όρο βαθμολογίας), 
  • absences (Απουσίες)

Δημιουργία μεθόδων για:
  • Αύξηση απουσιών (absup)
  • Προαγωγή στην επόμενη τάξη (taxiup)
Δημιουργούμε στιγμιότυπο ζητώντας με την εντολές input και raw_input τα χαρακτηριστικά.

Γίνονται οι απαραίτητοι έλεγχοι τιμών

Ζητάμε τις απουσίες για τους 9 μήνες του σχ. έτους αυξάνοντας τις απουσίες με τη μέθοδο absup

Αν οι συνολικές απουσίες είναι πάνω από 114 ή ο μέσος όρος βαθμολογίας κάτω από 9.5 ο μαθητής δεν προάγεται αλλιώς προάγεται στην επόμενη τάξη

Το αρχείο Python

16 Φεβρουαρίου 2020

Διάσχιση γραμμών αρχείου με την δομή while. Παράδειγμα με υπολογισμό αθροίσματος

Πρόγραμμα που ανοίγει ένα αρχείο κειμένου που περιέχει ακέραιους θετικούς αριθμούς.
Διαβάζει μία μία τις γραμμές του αρχείου με τη χρήση της δομής while και τη μέθοδο readline() και προσθέτει τις γραμμές στο άθροισμα αφού τις μετατρέψει σε ακέραια μορφή.
Το αρχείο τελειώνει όταν η readline() επιστρέψει κενή συμβολοσειρά ""

Ο κώδικας του προγράμματος

Εγγραφή αριθμών σε αρχείο κειμένου και υπολογισμός αθροίσματος, μέσου όρου, μεγαλύτερου και μικρότερου αριθμού

Πρόγραμμα που ζητάει 10 θετικούς ακέραιους αριθμούς (>0, να γίνεται έλεγχος τιμών) και τους γράφει σε ένα αρχείο κειμένου (έναν σε κάθε γραμμή). Μετά ανοίγει το αρχείο για ανάγνωση, υπολογίζονται και εμφανίζονται το άθροισμα, ο μέσος όρος, ο μεγαλύτερος και ο μικρότερος αριθμός.

Πρόγραμμα Python

 

Μέτρηση γραμμών αρχείου. Υπολογισμός αθροίσματος αρχείου αριθμών. Προσθήκη αθροίσματος στο τέλος


  1. Συνάρτηση που μετράει και επιστρέφει τις γραμμές ενός αρχείου κειμένου.
  2. Κώδικας που ανοίγει ένα αρχείο κειμένου που περιέχει αριθμούς για "ανάγνωση" "r" και υπολογίζει το άθροισμά τους.
  3. Κώδικας που ανοίγει ένα αρχείο κειμένου που περιέχει αριθμούς για "προσθήκη στο τέλος" "a" και γράφει το άθροισμα στην τελευταία γραμμή του αρχείου.
  4. Κώδικας που ανοίγει ένα αρχείο κειμένου που περιέχει αριθμούς για ανάγνωση και εμφανίζει μόνο την τελευταία γραμμή που περιέχει το άθροισμα.

Ο κώδικας του προγράμματος


26 Ιανουαρίου 2020

Άσκηση παράλληλης ταξινόμησης

Πρόγραμμα σε Python που διαβάζει ονόματα και βαθμολογίες (από 1 έως 100 με έλεγχο τιμών) μέχρι να δοθεί όνομα 'end'. Τα ονόματα καταχωρούνται σε μια λίστα names και οι βαθμοί σε μια λίστα grades και εμφανίζονται οι λίστες. Στη συνέχεια οι δύο λίστες ταξινομούνται παράλληλα σε φθίνουσα σειρά των βαθμών (grades) και εμφανίζονται οι λίστες. Αν οι δύο λίστες δεν είναι κενές εμφανίζεται το όνομα με τον καλύτερο βαθμό και ο βαθμός του. Θεωρήστε ότι όλοι οι βαθμοί είναι διαφορετικοί μεταξύ τους.

Άσκηση δημιοργίας λίστας, ταξινόμησης και διαχωρισμού λίστας σε δύο νέες

Πρόγραμμα σε Python που ζητά πλήθος στοιχείων λίστας L (από 5 έως 20 στοιχεία με έλεγχο τιμών). Στη συνέχεια γεμίζει τη λίστα L ζητώντας αριθμούς από το 1 έως το 1000 με έλεγχο τιμών. Υπολογίζει και εμφανίζει τον μέσο όρο mo των αριθμών της λίστας L. Ταξινομεί τη λίστα L σε φθίνουσα σειρά και την εμφανίζει. Στη συνέχεια διαχωρίζει την λίστα L σε δύο νέες λίστες L1 και L2 αδειάζοντας την L. Στην πρώτη L1 τοποθετούνται οι αριθμοί που είναι μικρότεροι από το 500 και στη δεύτερη L2 οι αριθμοί από 500 και άνω και τις εμφανίζει.