Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας στο τετράδιό σας, δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση, τη λέξη Σωστό, αν η πρόταση είναι σωστή, ή τη λέξη Λάθος, αν η πρόταση είναι λανθασμένη.
α.Η λειτουργία της στοίβας είναι γνωστή στη βιβλιογραφία ως FIFO (First In First Out).
β.Η τιμή της λογικής έκφρασης x < 1 and x > 20 είναι πάντα False ανεξάρτητα από την τιμή της ακέραιας μεταβλητής x.
γ.Η δομή while χρησιμοποιείται για μη προκαθορισμένο αριθμό επαναλήψεων.
δ.Ένα αντικείμενο δημιουργείται από μία ειδική μέθοδο που ονομάζεται αποδομητής (destructor).
ε.Οι μεταβλητές που μπορούν να χρησιμοποιηθούν σε οποιοδήποτε τμήμα ενός προγράμματος, ανεξάρτητα από το πού δηλώθηκαν, χαρακτηρίζονται ως καθολικές.
Ενδεικτική απάντηση
Πρόταση
Απάντηση
Αιτιολόγηση
α
Λάθος
Η στοίβα λειτουργεί ως LIFO (Last In First Out). Η ουρά είναι αυτή που λειτουργεί ως FIFO.
β
Σωστό
Δεν υπάρχει x που να είναι ταυτόχρονα μικρότερο του 1 και μεγαλύτερο του 20, άρα η σύζευξη είναι πάντα False.
γ
Σωστό
Η while εκτελείται όσο ισχύει μια συνθήκη, άρα καλύπτει και τις περιπτώσεις όπου το πλήθος των επαναλήψεων δεν είναι γνωστό εκ των προτέρων.
δ
Λάθος
Το αντικείμενο δημιουργείται από τον κατασκευαστή (constructor), τη μέθοδο __init__. Ο αποδομητής (destructor) καταστρέφει το αντικείμενο.
ε
Σωστό
Αυτός ακριβώς είναι ο ορισμός των καθολικών (global) μεταβλητών.
Α2
Μονάδες 10
Να γράψετε στο τετράδιό σας τους αριθμούς 1, 2, 3, 4, 5 από τη στήλη Α και δίπλα σε καθέναν από αυτούς ένα από τα γράμματα α, β, γ, δ, ε, στ της στήλης Β, που δίνει τη σωστή αντιστοίχιση. Σημειώνεται ότι ένα γράμμα της στήλης Β περισσεύει.
ΣΤΗΛΗ Α
ΣΤΗΛΗ Β
1. abs(8-29)
α. (3, 5)
2. min([29, 8, 6])
β. 21
3. "ΑΘΗΝΑ"[1:4]
γ. 6
4. 29/8
δ. "ΘΗΝ"
5. divmod(29,8)
ε. 5
στ. 3
Ενδεικτική απάντηση
ΣΤΗΛΗ Α
→
ΣΤΗΛΗ Β
1. abs(8-29)
β
Η abs() επιστρέφει την απόλυτη τιμή.
2. min([29, 8, 6])
γ
Η min() επιστρέφει το μικρότερο στοιχείο της λίστας.
3. "ΑΘΗΝΑ"[1:4]
δ
Το τμήμα [1:4] παίρνει τους χαρακτήρες των θέσεων 1, 2 και 3.
4. 29/8
στ
Διαίρεση ακεραίων στην Python 2.7: κρατά μόνο το ακέραιο πηλίκο.
5. divmod(29,8)
α
Η divmod(x,y) επιστρέφει το ζεύγος (πηλίκο, υπόλοιπο).
Περισσεύει το γράμμα ε (5).
ΘΕΜΑ Β
Β1
Μονάδες 10
Η παρακάτω συνάρτηση δέχεται μια λίστα αριθμών (times) και επιστρέφει τον μεγαλύτερο από αυτούς.
def megisto(times):
megalytero = (1)
for i in range(1, (2) ):
if times[i] (3) megalytero:
megalytero = (4)
return (5)
Να γράψετε στο τετράδιό σας τους αριθμούς (1) έως (5) και δίπλα σε καθέναν από αυτούς αυτό που πρέπει να συμπληρωθεί, ώστε το τμήμα προγράμματος να λειτουργεί σωστά.
Ενδεικτική απάντηση
Κενό
Συμπλήρωση
(1)
times[0]
(2)
len(times)
(3)
>
(4)
times[i]
(5)
megalytero
Το συμπληρωμένο τμήμα προγράμματος:
def megisto(times):
megalytero = times[0]
for i in range(1, len(times)):
if times[i] > megalytero:
megalytero = times[i]
return megalytero
Β2
Μονάδες 10
Δίνεται το παρακάτω τμήμα προγράμματος σε γλώσσα προγραμματισμού Python. Να γράψετε στο τετράδιό σας τι ακριβώς θα εμφανιστεί στην οθόνη κατά την εκτέλεσή του.
x = 18
while x > 0:
if x % 2 == 0:
print "artios", x
else:
print "perittos", x
x = x - 3
Να γράψετε στο τετράδιό σας τι θα εμφανίσει η εκτέλεση του παρακάτω τμήματος προγράμματος.
L = [9, 6, 2, 7]
L.append(13)
print L
x = L.pop()
print x, len(L)
Ενδεικτική απάντηση
Έξοδος στην οθόνη
[9, 6, 2, 7, 13]
13 4
Η append() προσθέτει στο τέλος, η pop() αφαιρεί ΚΑΙ επιστρέφει το τελευταίο στοιχείο, οπότε το μήκος της λίστας μειώνεται.
ΘΕΜΑ Γ
Σε ένα πλανητάριο καταγράφονται είκοσι (20) εγγραφές. Για κάθε σχολείο καταγράφονται το όνομα του σχολείου, τον τύπο του σχολείου ("ΕΠΑΛ", "ΓΕΛ", "ΜΟΥΣΙΚΟ") και το πλήθος των μαθητών, που πρέπει να είναι από είκοσι (20) έως και πενήντα (50).
Η χρέωση ανά μαθητή εξαρτάται από την κατηγορία: "ΕΠΑΛ" τέσσερα (4) ευρώ, "ΓΕΛ" επτά (7) ευρώ, "ΜΟΥΣΙΚΟ" δύο (2) ευρώ. Επιπλέον, όταν το πλήθος των μαθητών ξεπερνά τα τριάντα πέντε (35), γίνεται έκπτωση 10% στη συνολική χρέωση.
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Python το οποίο:
Γ1
Μονάδες 8
Για καθεμία από τις είκοσι (20) εγγραφές να διαβάζει:
α)Το όνομα του σχολείου. (μον. 2)
β)Τον τύπο του σχολείου ("ΕΠΑΛ", "ΓΕΛ", "ΜΟΥΣΙΚΟ"). (μον. 2)
γ)Το πλήθος των μαθητών. Να γίνεται έλεγχος ορθότητας, ώστε η τιμή που καταχωρίζεται να είναι από είκοσι (20) έως και πενήντα (50). (μον. 4)
Ενδεικτική απάντηση
onomata = []
katigories = []
plithi = []
for i in range(20):
onoma = raw_input("Onoma: ")
katigoria = raw_input("Katigoria (ΕΠΑΛ/ΓΕΛ/ΜΟΥΣΙΚΟ): ")
plithos = input("Plithos (20-50): ")
while plithos < 20 or plithos > 50:
print "Lathos timi."
plithos = input("Plithos (20-50): ")
onomata.append(onoma)
katigories.append(katigoria)
plithi.append(plithos)
Γ2
Μονάδες 6
Για κάθε σχολείο να υπολογίζει και να εμφανίζει τη χρέωση που αντιστοιχεί, με κλήση της συνάρτησης XREOSI(), όπως περιγράφεται στο ερώτημα Γ3.
Να υλοποιεί συνάρτηση με όνομα XREOSI, η οποία δέχεται την κατηγορία και το πλήθος των μαθητών, και επιστρέφει τη χρέωση σύμφωνα με τις τιμές κάθε κατηγορίας και την έκπτωση 10% όταν η τιμή ξεπερνά τα τριάντα πέντε (35).
Ένα κέντρο ανακύκλωσης καταγράφει στοιχεία για δώδεκα (12) υλικά. Για κάθε υλικό καταχωρίζονται η ονομασία και τα κιλά που συγκεντρώθηκαν.
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Python το οποίο:
Δ1
Μονάδες 7
Να διαβάζει για καθένα από τα δώδεκα (12) υλικά την ονομασία και τα κιλά, και να τα καταχωρίζει σε δύο παράλληλες λίστες με ονόματα ylika και kila αντίστοιχα.
Ενδεικτική απάντηση
ylika = []
kila = []
for i in range(12):
onoma = raw_input("Onoma: ")
timi = input("Timi: ")
ylika.append(onoma)
kila.append(timi)
Δ2
Μονάδες 6
Να βρίσκει και να εμφανίζει την ονομασία για το οποίο τα κιλά που συγκεντρώθηκαν είναι το μεγαλύτερο, καθώς και την τιμή αυτή.
Ενδεικτική απάντηση
megisto = kila[0]
thesi = 0
for i in range(1, 12):
if kila[i] > megisto:
megisto = kila[i]
thesi = i
print "Megisto:", ylika[thesi], megisto
Δ3
Μονάδες 6
Να ταξινομεί τα υλικά κατά φθίνουσα σειρά ως προς τα κιλά, με τον αλγόριθμο ταξινόμησης ευθείας ανταλλαγής. Σε κάθε αντιμετάθεση να μετακινείται και το αντίστοιχο στοιχείο της λίστας ylika, ώστε οι δύο λίστες να παραμένουν παράλληλες.
Ενδεικτική απάντηση
for i in range(1, 12):
for j in range(12 - 1, i - 1, -1):
if kila[j] > kila[j-1]:
kila[j], kila[j-1] = kila[j-1], kila[j]
ylika[j], ylika[j-1] = ylika[j-1], ylika[j]
Η σύγκριση με > δίνει φθίνουσα ταξινόμηση. Οι δύο αντιμεταθέσεις γίνονται μαζί, ώστε κάθε όνομα να ακολουθεί την τιμή του.
Δ4
Μονάδες 6
Να δημιουργεί αρχείο κειμένου με όνομα «anakiklosi.txt», στο οποίο να γράφει, ένα ανά γραμμή, την ονομασία και τα κιλά, μόνο για όσα υλικά έχουν τιμή μεγαλύτερη από πεντακόσια (500).
Ενδεικτική απάντηση
f = open("anakiklosi.txt", "w")
for i in range(12):
if kila[i] > 500:
f.write(ylika[i] + " " + str(kila[i]) + "\n")
f.close()
Η write() δέχεται μόνο συμβολοσειρές, γι' αυτό ο αριθμός μετατρέπεται με str(). Το \n αλλάζει γραμμή.
Ολοκληρωμένο πρόγραμμα του θέματος:
ylika = []
kila = []
for i in range(12):
onoma = raw_input("Onoma: ")
timi = input("Timi: ")
ylika.append(onoma)
kila.append(timi)
megisto = kila[0]
thesi = 0
for i in range(1, 12):
if kila[i] > megisto:
megisto = kila[i]
thesi = i
print "Megisto:", ylika[thesi], megisto
for i in range(1, 12):
for j in range(12 - 1, i - 1, -1):
if kila[j] > kila[j-1]:
kila[j], kila[j-1] = kila[j-1], kila[j]
ylika[j], ylika[j-1] = ylika[j-1], ylika[j]
f = open("anakiklosi.txt", "w")
for i in range(12):
if kila[i] > 500:
f.write(ylika[i] + " " + str(kila[i]) + "\n")
f.close()
Τα ΘΕΜΑΤΑ Α και Β προέρχονται από τράπεζα υλικού
βασισμένη στα πραγματικά θέματα των Πανελλαδικών 2017–2026, με υπολογισμένες απαντήσεις.
Τα ΘΕΜΑΤΑ Γ και Δ γράφτηκαν από το μοντέλο
nvidia/nemotron-3-super-120b-a12b. Δεν είναι επίσημο
θέμα του Υπουργείου Παιδείας και μπορεί να περιέχει λάθη — αν βρεις κάποιο, πες μας στο
Forum.