Εμφάνιση αναρτήσεων με ετικέτα Programming. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα Programming. Εμφάνιση όλων των αναρτήσεων

17 Μαρτίου 2024

Εφαρμογή λειτουργίας r+ σε αρχείο

 Πρόγραμμα σε Python που ζητάει και γεμίζει ένα αρχείο με ακέραιους αριθμούς από το 1 - 100 μέχρι να δοθεί ακέραιος εκτός του εύρους 1-100. Οι αριθμοί γράφονται στο αρχείο σε μορφή συμβολοσειράς 3 χαρακτήρων και αλλαγή γραμμής π.χ. αν 5 γράφεται 005, αν 56 γράφεται 056.

Στη συνέχεια ανοίγουμε το αρχείο με τη λειτουργία r+ και διαβάζουμε 4 χαρακτήρες (την συμβολοσειρά 3 χαρακτήρων και την αλλαγή γραμμής).

Αν ο ακέραιος αριθμός που περιέχεται σε αυτούς τους χαρακτήρες είναι μικρότερος του 50 μετακινούμαστε στην αρχή της γραμμής μετακινούμενοι -5 χαρακτήρες πίσω με τη μέθοδο seek. Μετακινούμαστε -5 επειδή η μέθοδος seek υπολογίζει την αλλαγή γραμμής ως δύο χαρακτήρες. Στη συνέχεια γράφουμε στη θέση του αριθμού τρία Χ και αλλαγή γραμμής  --> "ΧΧΧ\n" και μετακινούμαστε στο τρέχον σημείο για να διαβάσουμε την επόμενη γραμμή 4 χαρακτήρων.

Όταν διαβάσει κενούς χαρακτήρες "" σταματάει η επανάληψη.

Ακολουθούν οι οθόνες από την εκτέλεση του προγράμματος (Το αρχείο πριν και μετά την εφαρμογή της r+):

Αρχείο Python
 

27 Ιανουαρίου 2021

Συνάρτηση δημιουργίας λίστας της ακολουθίας Fibonacci με Python

 

Οι Αριθμοί Φιμπονάτσι είναι οι αριθμοί της παρακάτω ακέραιας ακολουθίας:

 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144 , … 

Εξ ορισμού, οι πρώτοι δύο αριθμοί Φιμπονάτσι είναι το 0 και το 1, και κάθε επόμενος αριθμός είναι το άθροισμα των δύο προηγούμενων.

Σε μαθηματικούς όρους, η ακολουθία Fn των αριθμών Φιμπονάτσι ορίζεται από τον αναδρομικό τύπο: 

F n = F n − 1 + F n − 2  

με F 0 = 0 και F 1 = 1 

Πηγή: https://el.wikipedia.org/wiki/Ακολουθία_Φιμπονάτσι

Στην Python γράφουμε μία συνάρτηση που δημιουργεί μια λίστα με την ακολουθία Fibonacci m αριθμών. Στο κυρίως πρόγραμμα ζητάμε το πλήθος m που πρέπει να είναι μεγαλύτερο του 2.

Στη συνάρτηση που παίρνει ως παράμετρο το πλήθος m των αριθμών της ακολουθίας δημιουργούμε τη λίστα με την ακολουθία. Αρχικά είναι [0,1] και κάθε νέο στοιχείο είναι το άθροισμα των δύο προηγούμενων. Αν n=len(L) τότε L.append(L[n-2]+L[n-1]). Αυτό επαναλαμβάνεται όσο ισχύει n<m ώστε να έχει η ακολουθία ακριβώς m αριθμούς.

 
Η συνάρτηση python και το κυρίως πρόγραμμα

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 και άνω και τις εμφανίζει. 

22 Απριλίου 2018

Άσκηση πανελλαδικών ΓΕΛ στο μάθημα ΑΕΠΠ προσαρμοσμένη για Python


Δημόσιος οργανισμός διαθέτει ένα συγκεκριμένο ποσό για την επιδότηση επενδυτικών έργων. Η επιδότηση γίνεται κατόπιν αξιολόγησης και αφορά δύο συγκεκριμένες κατηγορίες έργων με βάση τον προϋπολογισμό τους. Οι κατηγορίες και τα αντίστοιχα ποσοστά επιδότησης επί του προϋπολογισμού φαίνονται στον παρακάτω πίνακα.

Κατηγορία
έργου
Προϋπολογισμός
έργου σε ευρώ
Ποσοστό
Επιδότησης
Μικρή
200.000 – 299.999
60%
Μεγάλη
300.000 – 399.999
70%

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

1. Να διαβάζει το ποσό που διαθέτει ο οργανισμός για το πρόγραμμα επενδύσεων συνολικά, ελέγχοντας ότι το ποσό είναι μεγαλύτερο από 5.000.000 ευρώ.

2. Να διαβάζει το όνομα κάθε έργου. Η σειρά ανάγνωσης είναι η σειρά υποβολής των έργων. Η επαναληπτική διαδικασία να τερματίζεται, όταν αντί για όνομα έργου δοθεί η λέξη «ΤΕΛΟΣ», ή όταν το διαθέσιμο ποσό έχει μειωθεί τόσο, ώστε να μην είναι δυνατή η επιδότηση ούτε ενός έργου μικρής κατηγορίας. Για κάθε έργο, αφού διαβάσει το όνομά του, να διαβάζει και τον προϋπολογισμό του (δεν απαιτείται έλεγχος εγκυρότητας του προϋπολογισμού).

3. Για κάθε έργο να ελέγχει αν το διαθέσιμο ποσό καλύπτει την επιδότηση, και μόνον τότε να γίνεται η εκταμίευση του ποσού. Στη συνέχεια, να εμφανίζει το όνομα του έργου και το ποσό της επιδότησης που δόθηκε.

4. Να εμφανίζει το πλήθος των έργων που επιδοτήθηκαν από κάθε κατηγορία καθώς και τη συνολική επιδότηση που δόθηκε σε κάθε κατηγορία.

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


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

15 Απριλίου 2018

Άσκηση πανελλαδικών ΓΕΛ στο μάθημα ΑΕΠΠ προσαρμοσμένη για Python


Σε κάποιο σχολικό αγώνα, για το άθλημα «Άλμα εις μήκος» καταγράφεται για κάθε αθλητή η καλύτερη έγκυρη επίδοσή του. Τιμής ένεκεν, πρώτος αγωνίζεται ο περσινός πρωταθλητής. Η Επιτροπή του αγώνα διαχειρίζεται τα στοιχεία των αθλητών που αγωνίστηκαν. Να γράψετε πρόγραμμα σε python που:



1. Να ζητάει το ρεκόρ αγώνων και να το δέχεται, εφόσον είναι θετικό και μικρότερο των 10 μέτρων.

2. Να ζητάει τον συνολικό αριθμό των αγωνιζομένων και για κάθε αθλητή το όνομα και την επίδοσή του σε μέτρα. Τα στοιχεία αυτά (όνομα και επίδοση) θα καταχωρούνται σε δύο λίστες athlets και jumps με τη σειρά που αγωνίζονται.

3. Να εμφανίζει το όνομα του αθλητή με τη χειρότερη επίδοση.

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

5. Να βρίσκει και να εμφανίζει τη θέση που κατέλαβε στην τελική κατάταξη ο περσινός πρωταθλητής.

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



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

20 Μαρτίου 2018

Παράδειγμα δημιουργίας κλάσης Καλαθοσφαιριστή με ιδιότητες όνομα, ύψος, πόντους και φάουλ και μεθόδων σημείωσης πόντων και φάουλ

Παράδειγμα δημιουργίας κλάσης Καλαθοσφαιριστή με ιδιότητες όνομα, ύψος, πόντους και φάουλ και μεθόδων σημείωσης πόντων (scores) και φάουλ (makesfoul).
Οι αρχικές τιμές για τους πόντους και τα φάουλ ενός παίκτη (στιγμιότυπο κλάσης Καλαθοσφαιριστή) είναι 0.
Ζητάμε τα ύψη των παικτών h1 και h2
Δημιουργούμε δύο παίκτες (στιγμιότυπα) p1 και p2 με ονόματα Player1 και Player2 και ύψη h1 και h2.
Ακολουθούν οι παρακάτω ενέργειες:
Ο p1 κάνει φάουλ
Ο p2 βάζει 3 πόντους
Ο p1 κάνει φάουλ
Ο p2 βάζει 2 πόντους
Ο p2 κάνει φάουλ
Εμφανίζονται οι πόντοι και τα φάουλ των 2 παικτών

Το παράδειγμα

27 Φεβρουαρίου 2018

Άσκηση με υπολογισμό αθροίσματος, μέσου όρου, μέγιστου και ελάχιστου σε αρχείο κειμένου που περιέχει αριθμούς

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

14 Φεβρουαρίου 2018

9 Ιανουαρίου 2018

Δυαδική αναζήτηση αριθμών και δυαδική αναζήτηση αριθμού σε ταξινομημένη λίστα σε python

Δυαδική αναζήτηση αριθμού (του χρήστη) σε εύρος αριθμών (1-1000) σε python. Ο αλγόριθμος ρωτάει αν ο αριθμός που αναζητούμε είναι μεγαλύτερος ή μικρότερος από αυτόν που προτείνει ο αλγόριθμος.




Δυαδική αναζήτηση αριθμού από 1 - 1000


Δυαδική αναζήτηση αριθμού σε ταξινομημένη λίστα (αύξουσα ταξινόμηση) σε python. Ο αλγόριθμος υλοποιείται με τη χρήση συνάρτησης που δέχεται ως ορίσματα τη λίστα και το αριθμό που αναζητούμε.  Ο αλγόριθμος συγκρίνει αν ο αριθμός που αναζητούμε είναι μεγαλύτερος ή μικρότερος από αυτόν που προτείνει ο αλγόριθμος.


Αλγόριθμος δυαδικής αναζήτησης σε ταξινομημένη λίστα