-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShotPutGame.py
53 lines (52 loc) · 2.97 KB
/
ShotPutGame.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""
ΘΕΜΑ Δ
Σε έναν αγώνα σφαιροβολίας συμμετέχουν 12 αθλητές Κάθε αθλητής έκανε μόνο μια έγκυρη ρίψη που
καταχωρείται ως επίδοση του αθλητή και εκφράζεται σε μέτρα. Να γράψετε πρόγραμμα σε Python το
οποίο:
Δ1. Να διαβάζει με τη βοήθεια κατάλληλων μηνυμάτων για κάθε αθλητή το ονοματεπώνυμο και την
επίδοση του (πραγματικός αριθμός) και θα καταχωρίζει τα δεδομένα στις λίστες onoma και
epidosi αντίστοιχα.
Δ2. Χρησιμοποιώντας τον αλγόριθμο ταξινόμησης ευθείας ανταλλαγής να ταξινομεί τους αθλητές
σε φθίνουσα διάταξη ως προς την επίδοση τους.
Δ3. Να εμφανίζει τα ονοματεπώνυμα και τις επιδόσεις των τριών πρώτων αθλητών.
Δ4.
α. Να διαβάζει με τη βοήθεια κατάλληλου μηνύματος έναν πραγματικό αριθμό που εκφράζει
το παγκόσμιο ρεκόρ στη σφαιροβολία και να τον αποθηκεύει στην μεταβλητή wr.
β. Θεωρώντας ότι κανένας αθλητής δεν έκανε νέο παγκόσμιο ρεκόρ χρησιμοποιώντας τον
αλγόριθμο της δυαδικής αναζήτησης το πρόγραμμα να εμφανίζει με τη βοήθεια
κατάλληλου μηνύματος το ονοματεπώνυμο του αθλητή που ισοφάρισε το παγκόσμιο
ρεκόρ του αθλήματος. Σε αντίθετη περίπτωση να εμφανίζει το μήνυμα «Δεν
ισοφαρίστηκε το παγκόσμιο ρεκόρ».
Παρατηρήσεις:
1. Να θεωρήσετε ότι όλα τα δεδομένα είναι έγκυρα.
2. Να θεωρήσετε ότι οι τιμές των επιδόσεων για τους αθλητές είναι μοναδικές.
"""
onoma = []
epidosh = []
for i in range (12):
ono = raw_input('dose onoma:')
ep = input ('dose epidosh:')
onoma.append(ono)
epidosh.append(ep)
for i in range (1,12):
for j in range(11,i-1,-1):
if epidosh[j] > epidosh[j-1]:
epidosh[j],epidosh[j-1] = epidosh[j-1],epidosh[j]
onoma[j],onoma[j-1] = onoma[j-1],onoma[j]
for i in range(3):
print onoma[i],epidosh[i]
wr = input ('dose rekor:')
first = 0
last = 11
found = False
while first <= last and not found:
mid = (first + last)/2
if epidosh[mid] == wr :
found = True
print onoma[mid]
elif epidosh[mid] < wr:
first = mid + 1
else:
last = mid - 1
if found == False:
print 'den breuhke'