Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας στο τετράδιό σας, δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση, τη λέξη Σωστό, αν η πρόταση είναι σωστή, ή τη λέξη Λάθος, αν η πρόταση είναι λανθασμένη.
α.Ένα αντικείμενο δημιουργείται από μία ειδική μέθοδο που στην αντικειμενοστρεφή ορολογία ονομάζεται κατασκευαστής (constructor).
β.Η συνάρτηση open('words.txt', 'a') δημιουργεί το αρχείο όταν αυτό δεν υπάρχει διαφορετικά το ανοίγει σε κατάσταση προσθήκης δεδομένων.
γ.Η κλήση μιας συνάρτησης γίνεται με την εντολή call όνομα_συνάρτησης().
δ.Όταν απωθούμε ένα στοιχείο από τη στοίβα πρέπει προηγουμένως να έχουμε εξασφαλίσει ότι η στοίβα δεν είναι κενή.
ε.Η συνάρτηση pow(4,2) επιστρέφει την τιμή 8.
Ενδεικτική απάντηση
Πρόταση
Απάντηση
Αιτιολόγηση
α
Σωστό
Ο κατασκευαστής (constructor) είναι η μέθοδος __init__ που δημιουργεί και αρχικοποιεί το αντικείμενο.
β
Σωστό
Ο τρόπος προσπέλασης "a" (append) δημιουργεί το αρχείο αν δεν υπάρχει, αλλιώς το ανοίγει για προσθήκη στο τέλος.
γ
Λάθος
Η κλήση γίνεται γράφοντας απλώς το όνομα της συνάρτησης με τις παραμέτρους της, π.χ. onoma_synartisis(). Δεν υπάρχει εντολή call.
δ
Σωστό
Η απώθηση (pop) από κενή στοίβα οδηγεί σε σφάλμα υποχείλισης (underflow).
ε
Λάθος
Η pow(4,2) υπολογίζει το 4 υψωμένο στη δύναμη 2, δηλαδή 16.
Α2
Μονάδες 10
Να γράψετε στο τετράδιό σας τους αριθμούς 1, 2, 3, 4, 5 από τη στήλη Α και δίπλα σε καθέναν από αυτούς ένα από τα γράμματα α, β, γ, δ, ε, στ της στήλης Β, που δίνει τη σωστή αντιστοίχιση. Σημειώνεται ότι ένα γράμμα της στήλης Β περισσεύει.
ΣΤΗΛΗ Α
ΣΤΗΛΗ Β
1. pow(3,3)
α. 2
2. 14/8.0
β. 1.75
3. "python"[1:4]
γ. "yth"
4. len(range(3,5))
δ. (1, 6)
5. int(3.2)
ε. 3
στ. 27
Ενδεικτική απάντηση
ΣΤΗΛΗ Α
→
ΣΤΗΛΗ Β
1. pow(3,3)
στ
Η pow(x,y) υψώνει το x στη δύναμη y.
2. 14/8.0
β
Με δεκαδικό διαιρέτη η διαίρεση δίνει δεκαδικό αποτέλεσμα.
3. "python"[1:4]
γ
Το τμήμα [1:4] παίρνει τους χαρακτήρες των θέσεων 1, 2 και 3.
4. len(range(3,5))
α
Η range(a,b) παράγει τους αριθμούς από a έως b-1.
5. int(3.2)
ε
Η int() αποκόπτει το δεκαδικό μέρος, δεν στρογγυλοποιεί.
Περισσεύει το γράμμα δ ((1, 6)).
ΘΕΜΑ Β
Β1
Μονάδες 10
Η παρακάτω συνάρτηση δέχεται μια λίστα ακεραίων (lista) και επιστρέφει το πλήθος των στοιχείων της που είναι μεγαλύτερα από 50.
def plithos_pano(lista):
metritis = (1)
for i in range( (2) ):
if lista[i] (3) 50:
metritis = metritis + (4)
return (5)
Να γράψετε στο τετράδιό σας τους αριθμούς (1) έως (5) και δίπλα σε καθέναν από αυτούς αυτό που πρέπει να συμπληρωθεί, ώστε το τμήμα προγράμματος να λειτουργεί σωστά.
Ενδεικτική απάντηση
Κενό
Συμπλήρωση
(1)
0
(2)
len(lista)
(3)
>
(4)
1
(5)
metritis
Το συμπληρωμένο τμήμα προγράμματος:
def plithos_pano(lista):
metritis = 0
for i in range(len(lista)):
if lista[i] > 50:
metritis = metritis + 1
return metritis
Β2
Μονάδες 10
Δίνεται το παρακάτω τμήμα προγράμματος σε γλώσσα προγραμματισμού Python. Να γράψετε στο τετράδιό σας τι ακριβώς θα εμφανιστεί στην οθόνη κατά την εκτέλεσή του.
s = 0
i = 1
while i <= 12:
s = s + i
print i, s
i = i + 3
Ενδεικτική απάντηση
Παρακολούθηση της εκτέλεσης:
Επανάληψη
i
s
1
1
1
2
4
5
3
7
12
4
10
22
Άρα στην οθόνη εμφανίζεται:
Έξοδος στην οθόνη
1 1
4 5
7 12
10 22
Β3
Μονάδες 5
Να γράψετε στο τετράδιό σας τι θα εμφανίσει η εκτέλεση του παρακάτω τμήματος προγράμματος.
L = [7, 4, 1, 9]
L.append(16)
print L
x = L.pop()
print x, len(L)
Ενδεικτική απάντηση
Έξοδος στην οθόνη
[7, 4, 1, 9, 16]
16 4
Η append() προσθέτει στο τέλος, η pop() αφαιρεί ΚΑΙ επιστρέφει το τελευταίο στοιχείο, οπότε το μήκος της λίστας μειώνεται.
ΘΕΜΑ Γ
Ένα πλανητάριο δέχεται τέσσερα (4) σχολεία ανά ημέρα, για πέντε (5) ημέρες. Θεωρήστε ότι κατά το διάστημα αυτό κάθε σχολείο καταγράφεται μόνο μία φορά.
Το πλήθος των μαθητών ανά σχολείο είναι από είκοσι (20) έως και πενήντα (50). Η τιμή του εισιτηρίου για κάθε μαθητή είναι τέσσερα (4) ευρώ.
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Python το οποίο:
Γ1
Μονάδες 8
Για κάθε μία από τις πέντε (5) ημέρες και για κάθε σχολείο να διαβάζει:
α)Το όνομα του σχολείου. (μον. 2)
β)Τον τύπο του σχολείου ("ΕΠΑΛ", "ΓΕΛ", "ΜΟΥΣΙΚΟ"). (μον. 2)
γ)Το πλήθος των μαθητών. Να γίνεται έλεγχος ορθότητας, ώστε η τιμή που καταχωρίζεται να είναι από είκοσι (20) έως και πενήντα (50). (μον. 4)
Ενδεικτική απάντηση
onomata = []
katigories = []
plithi = []
for imera in range(5):
for j in range(4):
onoma = raw_input("Onoma: ")
katigoria = raw_input("Katigoria (ΕΠΑΛ/ΓΕΛ/ΜΟΥΣΙΚΟ): ")
plithos = input("Plithos (20-50): ")
while plithos < 20 or plithos > 50:
print "Lathos timi. Prospathiste ksana."
plithos = input("Plithos (20-50): ")
onomata.append(onoma)
katigories.append(katigoria)
plithi.append(plithos)
Γ2
Μονάδες 6
Να υπολογίζει και να εμφανίζει τα έσοδα για κάθε σχολείο. Για τον σκοπό αυτό να γίνεται κλήση της συνάρτησης YPOLOGISMOS(), όπως περιγράφεται στο ερώτημα Γ3.
Ενδεικτική απάντηση
Μέσα στην επανάληψη του ερωτήματος Γ1, αμέσως μετά την καταχώριση:
Να υλοποιεί συνάρτηση με όνομα YPOLOGISMOS, η οποία δέχεται το πλήθος των μαθητών και επιστρέφει τα αντίστοιχα έσοδα, όταν η τιμή είναι τέσσερα (4) ευρώ ανά μαθητή.
Ενδεικτική απάντηση
def YPOLOGISMOS(plithos):
return plithos * 4
Ο ορισμός της συνάρτησης γράφεται στην αρχή του προγράμματος, πριν από την πρώτη κλήση της.
Γ4
Μονάδες 6
Να υπολογίζει και να εμφανίζει:
α)Τα συνολικά έσοδα του πλανηταρίου από τα σχολεία. (μον. 3)
β)Το ποσοστό των μαθητών που αντιστοιχούν σε εγγραφές τύπου "ΕΠΑΛ", ως προς το σύνολο των μαθητών. (μον. 3)
Θεωρήστε ότι υπάρχει τουλάχιστον μία εγγραφή κάθε τύπου.
Ένα φαρμακείο καταγράφει στοιχεία για δεκαπέντε (15) φάρμακα. Για κάθε φάρμακο καταχωρίζονται το όνομα και το πλήθος των συνταγών.
Να αναπτύξετε πρόγραμμα σε γλώσσα προγραμματισμού Python το οποίο:
Δ1
Μονάδες 7
Να διαβάζει για καθένα από τα φάρμακα (15 συνολικά) το όνομα και το πλήθος των συνταγών, και να τα καταχωρίζει στις παράλληλες λίστες onomata και sintages.
Ενδεικτική απάντηση
onomata = []
sintages = []
for i in range(15):
onoma = raw_input("Onomasia: ")
timi = input("Timi: ")
onomata.append(onoma)
sintages.append(timi)
Δ2
Μονάδες 6
Να ταξινομεί τις δύο λίστες κατά αύξουσα αλφαβητική σειρά ως προς τη λίστα onomata, με τον αλγόριθμο ταξινόμησης ευθείας ανταλλαγής, μετακινώντας ταυτόχρονα και τα αντίστοιχα στοιχεία της sintages.
Ενδεικτική απάντηση
for i in range(1, 15):
for j in range(15 - 1, i - 1, -1):
if onomata[j] < onomata[j-1]:
onomata[j], onomata[j-1] = onomata[j-1], onomata[j]
sintages[j], sintages[j-1] = sintages[j-1], sintages[j]
Δ3
Μονάδες 6
Να διαβάζει μια ονομασία και να την αναζητά στην ταξινομημένη λίστα onomata με τον αλγόριθμο της δυαδικής αναζήτησης. Αν βρεθεί, να εμφανίζει την αντίστοιχη τιμή· αλλιώς κατάλληλο μήνυμα.
Ενδεικτική απάντηση
zitoumeno = raw_input("Onomasia pros anazitisi: ")
left = 0
right = 15 - 1
thesi = -1
while left <= right and thesi == -1:
mesi = (left + right) / 2
if onomata[mesi] == zitoumeno:
thesi = mesi
elif onomata[mesi] < zitoumeno:
left = mesi + 1
else:
right = mesi - 1
if thesi == -1:
print "Den vrethike"
else:
print onomata[thesi], sintages[thesi]
Δ4
Μονάδες 6
Να υπολογίζει τον μέσο όρο των τιμών της λίστας sintages και να δημιουργεί αρχείο κειμένου «syntages.txt» με τις εγγραφές που έχουν τιμή μεγαλύτερη από τον μέσο όρο.
Ενδεικτική απάντηση
athroisma = 0
for i in range(15):
athroisma = athroisma + sintages[i]
mo = athroisma / float(15)
f = open("syntages.txt", "w")
for i in range(15):
if sintages[i] > mo:
f.write(onomata[i] + " " + str(sintages[i]) + "\n")
f.close()
print "Mesos oros:", mo
Ολοκληρωμένο πρόγραμμα του θέματος:
onomata = []
sintages = []
for i in range(15):
onoma = raw_input("Onomasia: ")
timi = input("Timi: ")
onomata.append(onoma)
sintages.append(timi)
for i in range(1, 15):
for j in range(15 - 1, i - 1, -1):
if onomata[j] < onomata[j-1]:
onomata[j], onomata[j-1] = onomata[j-1], onomata[j]
sintages[j], sintages[j-1] = sintages[j-1], sintages[j]
zitoumeno = raw_input("Onomasia pros anazitisi: ")
left = 0
right = 15 - 1
thesi = -1
while left <= right and thesi == -1:
mesi = (left + right) / 2
if onomata[mesi] == zitoumeno:
thesi = mesi
elif onomata[mesi] < zitoumeno:
left = mesi + 1
else:
right = mesi - 1
if thesi == -1:
print "Den vrethike"
else:
print onomata[thesi], sintages[thesi]
athroisma = 0
for i in range(15):
athroisma = athroisma + sintages[i]
mo = athroisma / float(15)
f = open("syntages.txt", "w")
for i in range(15):
if sintages[i] > mo:
f.write(onomata[i] + " " + str(sintages[i]) + "\n")
f.close()
print "Mesos oros:", mo
Τα ΘΕΜΑΤΑ Α και Β προέρχονται από τράπεζα υλικού
βασισμένη στα πραγματικά θέματα των Πανελλαδικών 2017–2026, με υπολογισμένες απαντήσεις.
Τα ΘΕΜΑΤΑ Γ και Δ γράφτηκαν από το μοντέλο
nvidia/nemotron-3-super-120b-a12b. Δεν είναι επίσημο
θέμα του Υπουργείου Παιδείας και μπορεί να περιέχει λάθη — αν βρεις κάποιο, πες μας στο
Forum.