4 3 δομή επανάληψης

Page 1

Δομή Επανάληψης

Κέρος Α. Ιωάννης Καθηγητής Πληροφορικής ΠΕ19 1ο ΕΠΑΛ Κιλκίς


Δομή επανάληψης Συχνά, ορισμένοι υπολογισμοί σε ένα πρόγραμμα είναι αναγκαίο να εκτελούνται περισσότερες από μία φορές. Υπάρχουν δύο τύποι επαναλήψεων: • Οι προκαθορισμένοι, όπου το πλήθος των επαναλήψεων είναι δεδομένο πριν αρχίσουν οι επαναλήψεις. Για παράδειγμα, ο γυμναστής λέει στον μαθητή να κάνει 10 κάμψεις για να αποκτήσει καλύτερη φυσική κατάσταση.

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

• Στην Python, υπάρχουν 2 μορφές επανάληψης για να καλύψουν τις παραπάνω ανάγκες,η for και η while αντίστοιχα.


Το σενάριο «Παίρνω – Κάνω» Φανταστείτε ότι έξω από την πόρτα της τάξης βρίσκονται πολλοί άνθρωποι, ο κάθε ένας εκ’ των οποίων πρέπει να μπει στην τάξη να βάλει μια υπογραφή σε ένα χαρτί και να φύγει. Αν είχατε να επιλέξετε πως θα τους εξυπηρετούσατε (έναν – έναν ή όλους μαζί), τι θα επιλέγατε; Φυσικά έναν - έναν ως εξής: 1. Μπαίνει ένας, βάζει την υπογραφή του, φεύγει 2. Μπαίνει ο επόμενος, βάζει την υπογραφή του, φεύγει 3. Μπαίνει ο επόμενος, βάζει την υπογραφή του, φεύγει κοκ. και αυτό θα επαναληφθεί τόσες φορές, όσοι ήταν οι μαθητές.

3


Η εντολή while Χρησιμοποιείται κυρίως στην περίπτωση μη προκαθορισμένου αριθμού επαναλήψεων. Ωστόσο, μπορεί να χρησιμοποιηθεί και στην αντίθετη περίπτωση.

while συνθήκη: Εντολή1 Εντολή2 κοκ.

Προσοχή στην στοίχιση

True

Τρόπος εκτέλεσης

Υπολογίζεται η τιμή της συνθήκης και: • Αν ήταν True, εκτελούνται οι εντολές και επαναλαμβάνουμε την διαδικασία υπολογίζοντας ξανά την λογική έκφραση ενώ, • Αν ήταν False, εκτελούνται οι εντολές που υπάρχουν μετά τις εντολές.

Συνθήκη Εντολές False

4


Παραδείγματα while Τι θα εμφανίσει καθένα από τα ακόλουθα κομμάτια προγράμματος Python; x=3 while x<5: print(x) x=x+1

x=3 while x<=3: print(x) x=x+1

x=6 while x<=5: print(x) x=x+1

Οθόνη

Οθόνη

Οθόνη

3

3

4

a=7 b=1 c=2 d=4 while b<=5: d=d+a+c b=b+1 print(d) if d<30: print('Σπάρτη') else: print('Κιλκίς') 5 Οθόνη

49 Κιλκίς


Ασκήσεις while (1η) Εκφώνηση Να γραφεί πρόγραμμα Python που θα διαβάσει πολλούς αριθμούς. Αν δοθεί το 5 το πρόγραμμα πρέπει να εμφανίσει το άθροισμα όσων αριθμών έχουν δοθεί έως τότε ενώ εάν είχε δοθεί εξ’ αρχής το 5 το μήνυμα «Δυστυχώς, δώσατε απευθείας το 5». (PowerPointWhile1.py) Λύση

Αθροιστής

flag=False sinolo=0 x=int(input('Δώστε έναν αριθμό:')) while x!=5: sinolo=sinolo+x flag=True x=int(input('Δώστε έναν ακόμη αριθμό:')) if flag==True: print('Το άθροισμα των αριθμών είναι:',sinolo) else: print('Δυστυχώς, δώσατε απευθείας το 5') 6


Ασκήσεις while (2η) Εκφώνηση Να γραφεί πρόγραμμα Python που θα διαβάσει πολλούς αριθμούς. Το πρόγραμμα θα τους προσθέσει και η διαδικασία θα σταματήσει όταν το άθροισμα ξεπεράσει το 1000, οπότε και θα το εμφανίσει. (PowerPointWhile2.py) Λύση sinolo=0 while sinolo<=1000: x=int(input('Δώστε έναν αριθμό:')) sinolo=sinolo+x print('Το άθροισμα των αριθμών είναι:',sinolo)

7


Ασκήσεις while (3η) Εκφώνηση Ο πληθυσμός μιας χώρας αυξάνεται κάθε χρόνο με σταθερό ποσοστό 10% επί του συνόλου. Αν σήμερα ο πληθυσμός είναι 8.000, να γραφεί πρόγραμμα Python που θα εμφανίσει σε πόσα χρόνια θα ξεπεράσει τις 10.000. (PowerPointWhile3.py) Λύση

Μετρητής

xronia=0 plithismos=8000 while plithismos<=10000: plithismos=plithismos+0.1*plithismos xronia=xronia+1 print('Σε',xronia,'χρόνια')

8


Ασκήσεις while (4η) Εκφώνηση Να γραφεί πρόγραμμα Python που θα διαβάσει 5 ακέραιους αριθμούς και θα εμφανίσει πόσοι από αυτούς ήταν θετικοί, πόσοι αρνητικοί και πόσοι μηδέν. (PowerPointWhile4.py) Λύση i=1 pos=0 neg=0 zer=0 while i<=5: x=int(input('Δώστε έναν αριθμό:')) if x>0: pos=pos+1 elif x<0: neg=neg+1 else: zer=zer+1 i=i+1 print('Θετικοί αριθμοί:',pos) print('Αρνητικοί αριθμοί:',neg) print('Μηδενικά:',zer)

While και προκαθορισμένος αριθμός επαναλήψεων

9


Ασκήσεις while (5η)

Εκφώνηση Να γραφεί πρόγραμμα Python που θα διαβάσει πολλούς ακέραιους αριθμούς και θα εμφανίσει πόσοι από αυτούς ήταν θετικοί, πόσοι αρνητικοί και πόσοι μηδέν. Το πλήθος των αριθμων που θα δοθούν θα τον πληκτρολογήσει ο χρήστης στην αρχή της εκτέλεσης του προγράμματος (PowerPointWhile5.py) Λύση N=int(input('Πόσοι είναι οι αριθμοί που θα δοθούν;')) i=1 pos=0 neg=0 zer=0 while i<=N: While και x=int(input('Δώστε έναν αριθμό:')) προκαθορισμένος if x>0: αριθμός pos=pos+1 επαναλήψεων elif x<0: neg=neg+1 else: zer=zer+1 i=i+1 print('Θετικοί αριθμοί:',pos) print('Αρνητικοί αριθμοί:',neg) 10 print('Μηδενικά:',zer)


Ασκήσεις while με break Εκφώνηση Να γραφεί πρόγραμμα Python που θα διαβάσει πολλούς αριθμούς και θα εμφανίσει τον τριπλάσιο του καθενός. Η εισαγωγή αριθμών σταματά όταν ο χρήστης πληκτρολογήσει τον αριθμό 0. (PowerPointBreak.py) Λύση while True: num = int(input('Δώσε έναν αριθμό:')) if num == 0: break print(num*3)

11


Η δήλωση break • Η δήλωση break χρησιμοποιείται για να βγει το πρόγραμμα από έναν βρόχο μόλις την συναντήσει. • Συνήθως, για να εκτελεστεί πρέπει να πληρείται μία συνθήκη (προϋπόθεση) και για τον λόγο αυτό συνοδεύεται από μία δομή if που καθορίζει πότε εκτελείται.

συνθήκη

• Είναι καλό όμως να αποφεύγεται γιατί παράγει δυσανάγνωστο κώδικα.

break

εντολές

εντολές • Σε ελάχιστες περιπτώσεις όμως, βοηθάει κατανοήσουμε πως τερματίζεται ο βρόχος.

να

• Σε κάθε περίπτωση όμως μπορεί να αντικατασταθεί με κατάλληλες μετατροπές στην συνθήκη του βρόχου. 12


Ασκήσεις while με continue Εκφώνηση Να γραφεί πρόγραμμα Python που θα ζητάει από τον χρήστη την πληκτρολόγηση ενός κειμένου μέχρι να δοθούν οι χαρακτήρες ‘quit’. Το πρόγραμμα χρησιμοποιώντας την ενσωματωμένη συνάρτηση len (η οποία μετράει το πλήθος των χαρακτήρων ενός αλφαριθμητικού) θα πληροφορεί τον χρήστη εάν το αλφαριθμητικό ήταν πολύ μικρό (<3 χαρακτήρες) ή επαρκές.(PowerPointContinue.py) Λύση while True: s=str(input('Εισάγετε κάτι: ')) if s == 'quit': break if len(s)<3: print('Πολύ μικρό') continue print('Το μήκος των εισαχθέντων στοιχείων είναι επαρκές') 13


Η δήλωση continue • Όταν εκτελεστεί η continue στο «σώμα» ενός βρόγχου, ο έλεγχος ροής μεταφέρεται στη συνθήκη του βρόγχου. Δηλαδή, δεν εκτελούνται οι εντολές που υπάρχουν από το σημείο που γράφτηκε μέχρι το τέλος του βρόχου. • Είναι καλό όμως να αποφεύγεται γιατί παράγει δυσανάγνωστο κώδικα.

συνθήκη εντολές continue εντολές

14


Ασκήσεις while (6η) Εκφώνηση Να γραφεί πρόγραμμα Python που θα διαβάσει δύο ακέραιους αριθμούς και θα εμφανίσει τον Μέγιστο Κοινό τους Διαιρέτη (ΜΚΔ). Υπενθυμίζεται ότι ο ΜΚΔ δύο αριθμών a και b μπορεί να βρεθεί αφαιρώντας από τον μεγαλύτερο τον μικρότερο αριθμό και αποθηκεύοντας τον στην θέση του μεγαλύτερου. Η διαδικασία τερματίζεται όταν οι δύο αριθμοί γίνουν ίσοι, οπότε και συμπίπτουν με τον ζητούμενο ΜΚΔ. (PowerPointWhile6.py) Λύση a = int(input('Δώσε τον πρώτο αριθμό: ')) b = int(input('Δώσε το δεύτερο αριθμό: ')) while a != b: if a>b: a=a-b else: b=b-a print('O μέγιστος κοινός διαιρέτης είναι o ',a) 15


Η συνάρτηση range() Σύνταξη range(από, μέχρι, βήμα)

Παράγει αριθμούς σε συγκεκριμένο διάστημα [από, μέχρι) οι οποίοι διαφέρουν κατά το βήμα

προαιρετικά

Παραδείγματα range(10)

[0,1,2,3,4,5,6,7,8,9]

range(1,8)

[1,2,3,4,5,6,7]

range(0,35,5)

[0,5,10,15,20,25,30]

range(8,-1,-1)

[8,7,6,5,4,3,2,1,0]

16


Η εντολή for Χρησιμοποιείται αποκλειστικά στην περίπτωση του προκαθορισμένου αριθμού επαναλήψεων.

for μεταβλητή in range(από, μέχρι, βήμα): Εντολή1 Εντολή2 κοκ. Τρόπος εκτέλεσης Η επανάληψη εκτελείται για όλες τις τιμές που παράγει η συνάρτηση range()

17


Παραδείγματα for Τι θα εμφανίσει τo ακόλουθo κομμάτι προγράμματος Python;

a=4 d=5 for i in range (1,6): d=d+a+i print(d)

Οθόνη

40

18


Ασκήσεις for (1η-2η) Εκφώνηση Να γραφεί πρόγραμμα Python που να εκτυπώνει πέντε (5) φορές το μήνυμα «Θέλει αρετή και τόλμη η ελευθερία!». (PowerPointFor1.py) Λύση for i in range(5): print('Θέλει αρετή και τόλμη η ελευθερία') Εκφώνηση Να γραφεί πρόγραμμα σε γλώσσα Python που να υπολογίζει το άθροισμα 1+2+3+...+100. (PowerPointFor2.py) Λύση sinolo=0 for i in range(1,101): sinolo=sinolo+i print(sinolo) 19


Ασκήσεις for (3η) Εκφώνηση Να γραφεί πρόγραμμα σε γλώσσα Python που να διαβάζει πέντε τυχαίους ακεραίους αριθμούς και να υπολογίζει το άθροισμα τους. (PowerPointFor3.py) Λύση sum = 0 for i in range(5): x = int(input("Δώσε έναν αριθμό: " )) sum = x + sum print('To άθροισμα είναι ', sum)

20


Ασκήσεις for (4η) Εκφώνηση Να γραφεί πρόγραμμα σε γλώσσα Python που να διαβάζει Ν τυχαίους ακεραίους αριθμούς και να υπολογίζει το άθροισμα τους. Το πλήθος Ν των αριθμών θα το πληκτρολογήσει ο χρήστης εκ’ των προτέρων. (PowerPointFor4.py) Λύση N=int(input('Πόσοι είναι οι αριθμοί;')) sum = 0 for i in range(N): x = int(input("Δώσε έναν αριθμό: " )) sum = x + sum print('To άθροισμα είναι ', sum)

21


Ασκήσεις for (5η) Εκφώνηση Ένας έμπορος δομικών υλικών πουλάει τούβλα προς 10 € τα εκατό στους καταναλωτές και προς 8 € τα εκατό στους οικοδόμους. Να γραφεί πρόγραμμα Python που θα διαβάσει για 5 παραγγελίες το είδος του πελάτη (1 = Καταναλωτής, 2 = Οικοδόμος) και την ποσότητα τούβλων που αυτός αγόρασε και θα υπολογίσει εμφανίσει την αξία κάθε παραγγελίας αλλά και το σύνολο των χρημάτων που θα εισπράξει ο έμπορος. (PowerPointFor5.py) Λύση sinolo=0 for i in range (5): eidos=int(input('Τι είδους πελάτης είστε;')) posotita=int(input('Πόσα τούβλα αγοράσατε;')) if eidos==1: axia=posotita*10/100 else: axia=posotita*8/100 print('Η αξία της παραγγελίας είναι: ',axia) sinolo=sinolo+axia print('Η αξία και των πέντε παραγγελιών είναι:',sinolo)

22


Ασκήσεις for (6η) Εκφώνηση Να γραφεί πρόγραμμα Python που θα εμφανίσει το πλήθος και το άθροισμα όλων των ακέραιων αριθμών μεταξύ του 100 και του 300 (και του 100 και του 300) που διαιρούνται ακριβώς με το 16. (PowerPointFor6.py) Λύση plithos=0 sinolo=0 for i in range(100,301): if i % 16 ==0: plithos=plithos+1 sinolo=sinolo+i print('Πλήθος αριθμών: ',plithos) print('Αθροισμα αριθμών: ',sinolo)

23


For σε άλλη μορφή!!! for c in 'hello': print(c)

h e l l o

Εντυπωσιακό!!!

for variable in sequence: Εντολές Η εντολή for κάνει επανάληψη διατρέχοντας τα στοιχεία μιας ακολουθίας, για παράδειγμα μιας συμβολοσειράς ή μιας λίστας με τη σειρά με την οποία αυτά εμφανίζονται στην ακολουθία. 24


Έλεγχος ορθότητας δεδομένων. Μέχρι τώρα, όλες οι ασκήσεις λύθηκαν με την παραδοχή ότι ο χρήστης ήταν «καλός»: πληκτρολογούσε ότι ακριβώς του ζητούσαμε. Είναι όμως αυτό; Παράδειγμα Σε μία άσκηση ο χρήστης πρέπει να πληκτρολογήσει τον κωδικό ενός είδους. Ο τελευταίος μπορεί να είναι μόνο 1 ή 2 ή 3. Μέχρι τώρα θα πληκτρολογούσαμε: code=int(input(‘Δώστε τον κωδικό του είδους: ’))

Αλλά με την εντολή αυτή ο χρήστης μπορεί μόνο να πληκτρολογήσει 1, 2, 3 αλλά και οτιδήποτε άλλο. Αυτό που θα κάνουμε τώρα είναι να απαιτήσουμε την σωστή πληκτρολόγηση των δεδομένων και να μην προχωρήσουμε την εκτέλεση του προγράμματος αν δεν πάρουμε τέτοια.

25


Έλεγχος ορθότητας δεδομένων. Τι κάνουμε λοιπόν;

code=int(input('Δώστε τον κωδικό: ')) while code!=1 and code!=2 and code!=3: print('Λάθος κωδικός') code=int(input('Δώστε ξανά τον κωδικό: ')) Αν δεν δώσει αυτά που θέλουμε τότε ξανά… Αν δώσει αυτά που θέλουμε τότε το πρόγραμμα προχωρά παρακάτω….

26


Άσκηση ελέγχου ορθότητας δεδομένων (1η) Εκφώνηση Σε μία εταιρεία parking υπάρχουν 3 χώροι στάθμευσης ανάλογα με το είδος των οχημάτων που παρκάρουν: • φορτηγά (ΦΟΡ, • αυτοκίνητα (ΑΥΤ) και • μοτοσικλέτες (ΜΟΤ)). Για κάθε όχημα κόβεται ένα εισιτήριο. Στο parking μπορούν να κοπούν συνολικά 10 εισιτήρια την ημέρα ανεξαρτήτως του είδους των οχημάτων. Να γραφεί πρόγραμμα Python που θα διαβάσει το είδος του οχήματος (να ελέγχει την ορθή καταχώριση - εγκυρότητα των δεδομένων) και θα υπολογίσει και εμφανίσει τον αριθμό των φορτηγών, των αυτοκινήτων και των μοτοσικλετών που πάρκαραν στο τέλος της ημέρας. (Υποθέστε ότι στο τέλος της ημέρας έχουν παρκάρει ακριβώς 10 οχήματα). (PowerPointCheckData1.py) 27


Άσκηση ελέγχου ορθότητας δεδομένων (1η) Λύση

auto=0 moto=0 truck=0 for i in range(10): eidos=str(input('Δώστε το είδος του οχήματος: ')) while eidos!='ΑΥΤ' and eidos!='ΜΟΤ' and eidos!='ΦΟΡ': print('Λάθος είδος οχήματος') eidos=str(input('Δώστε ξανά το είδος του οχήματος: ')) if eidos=='ΑΥΤ': auto=auto+1 elif eidos=='ΜΟΤ': moto=moto+1 else: truck=truck+1 print('Πλήθος αυτοκινήτων: ',auto) print('Πλήθος μοτοσυκλετών: ',moto) print('Πλήθος φορτηγών: ',truck)

28


Άσκηση ελέγχου ορθότητας δεδομένων (2η) Εκφώνηση Μια εταιρεία δημοσκοπήσεων θέτει σε ένα δείγμα 2000 πολιτών ένα ερώτημα. Για την επεξεργασία των δεδομένων να αναπτύξετε πρόγραμμα Python που: 1.

Να διαβάσει το φύλλο του πολίτη (Α = Άνδρας, Γ = Γυναίκα) και να ελέγχει την ορθή εισαγωγή,

2.

Να διαβάσει την απάντηση στο ερώτημα, η οποία μπορεί να είναι "ΝΑΙ", "ΌΧΙ", "ΔΕΝ ΞΕΡΩ" και να ελέγχει την ορθή εισαγωγή,

3.

Να υπολογίσει και να εμφανίσει το πλήθος που απάντησαν "ΝΑΙ",

4.

Στο σύνολο των ατόμων που απάντησαν "ΝΑΙ" να υπολογίσει και να εμφανίσει το ποσοστό των ανδρών και το ποσοστό των γυναικών (PowerPointCheckData2.py)

29


plYES=0 plW=0 plM=0 Λύση for i in range(10): filo=str(input('Δώστε το φύλλο του πολίτη: ')) while filo!='Α' and filo!='Γ': print('Λάθος φύλλο πολίτη') filo=str(input('Δώστε ξανά το φύλλο του πολίτη: ')) apan=str(input('Δώστε την απάντηση στο ερώτημα του πολίτη: ')) while apan!='ΝΑΙ' and apan!='ΟΧΙ' and apan!='ΔΕΝ ΞΕΡΩ': print('Λάθος απάντηση πολίτη') apan=str(input('Δώστε ξανά την απάντηση στο ερώτημα του πολίτη: ')) if apan=='ΝΑΙ': plYES=plYES+1 if filo=='Α': plM=plM+1 else: plW=plW+1 print('Πλήθος ανθρώπων που απάντησαν ΝΑΙ: ',plYES) if plYES!=0: posM=plM/plYES*100 posW=plW/plYES*100 print('Ποσοστό ανδρών που απήντησαν ΝΑΙ: ',posM) print('Ποσοστό γυναικών που απήντησαν ΝΑΙ: ',posW) else: print('Προφανώς δεν υπήρξε κανένας που απήντησε ΝΑΙ')

Άσκηση ελέγχου ορθότητας δεδομένων (2η)

30


Εμφωλευμένες επαναλήψεις. Τι θα εμφανίσει τo ακόλουθο τμήμα προγράμματος Python; for i in range(1,4): for j in range(1,4): print(i,j) Κανόνες εμφωλευμένων επαναλήψεων 1. Πρώτα ξεκινάει η εξωτερική επανάληψη και μετά ξεκινάει και ολοκληρώνεται η εσωτερική και συνεχίζει πάλι η εξωτερική. 2. Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής 2 ή περισσοτέρων βρόχων που ο ένας είναι στο εσωτερικό του άλλου.

X Y 1 1 1 2 1 3

2 1 2 2 2 3 3 1 3 2 3 3

31


Άσκηση με φωλιασμένες επαναλήψεις Εκφώνηση Να γραφεί πρόγραμμα Python που θα εμφανίσει όλες τις ακέραιες λύσεις της εξίσωσης 2*x-4*y=0 στο διάστημα [1..10].(PowerPointNested1.py)

for x in range(1,11): for y in range(1,11): if 2*x-4*y==0: print(x,y)

2 4 6 8 10

1 2 3 4 5

32


Άσκηση με φωλιασμένες επαναλήψεις Εκφώνηση Να γραφεί πρόγραμμα Python που θα εμφανίσει όλες τις ακέραιες λύσεις της εξίσωσης 2*x-4*y=0 στο διάστημα [1..10].(PowerPointNested2.py)

for x in range(1,11): for y in range(1,11): if 2*x-4*y==0: print(x,y)

2 4 6 8 10

1 2 3 4 5

33


Εύρεση μεγίστων - ελαχίστων Αρκετές φορές, θα χρειαστούμε από ένα σύνολο από τιμές να βρούμε ποια είναι η πιο μεγάλη (max) και ποια η πιο μικρή (min). Για να καταλάβουμε την λογική εύρεσης των max (min), να θυμηθούμε ότι κάθε φορά στην επανάληψη έχουμε ένα δεδομένο. Συγκρίνουμε το δεδομένο που έχουμε τώρα για να δούμε αν είναι μεγαλύτερο (μικρότερο) από το μέχρι τώρα μεγαλύτερο (max) / μικρότερο (min) και: • Αν ήταν μεγαλύτερο (μικρότερο) αντικαθιστούμε τον max (min) • Διαφορετικά, δεν γίνεται αλλαγή στον max (min) Το μόνο πρόβλημα που έχουμε είναι με το πρώτο δεδομένο. Με ποιο να συγκριθεί αφού τώρα ξεκινά η διαδικασία;

34


Εύρεση μεγίστων – ελαχίστων (1η) Να γραφεί πρόγραμμα Python που θα διαβάσει τον αριθμό (έστω Ν) των μαθητών ενός σχολείου και τα ακόλουθα στοιχεία για κάθε έναν από αυτούς: • • •

Όνομα. Κωδικός φύλου (1= αγόρι 2= κορίτσι ) Βαθμός.

Το πρόγραμμα να εμφανίσει ποιο αγόρι έχει το μικρότερο βαθμό στη τάξη και ποιο κορίτσι τον μεγαλύτερο. Υποθέστε ότι: • το πλήθος Ν των μαθητών είναι θετικός ακέραιος αριθμός, • ο κωδικός φύλου είναι 1 ή 2, • ο βαθμός είναι πραγματικός αριθμός από 1 έως και 20 και • Ο χρήστης θα πληκτρολογήσει τουλάχιστον ένα αγόρι και ένα κορίτσι. (PowerPointMaxMin1.py) 35


Εύρεση μεγίστων – ελαχίστων (1η) Λύση N=int(input('Πόσοι είναι οι μαθητές του σχολείου; ')) max=0 # Εκμεταλλευόμαστε το γεγονός ότι το προς εξέταση στοιχείο βρίσκεται min=21 # σε ένα κλειστό διάστημα της μορφής [1..20] for i in range(N): onoma=str(input('Δώστε το όνομα του μαθητή: ')) kodfil=int(input('Δώστε τον κωδικό φύλλου του μαθητή/μαθήτριας: ')) vath=float(input('Δώστε τον βάθμό του μαθητή/μαθήτριας: ')) if kodfil==1: if vath<min: min=vath onmin=onoma else: if vath>max: max=vath onmax=onoma print('Το αγόρι με τον μικρότερο βαθμό στην τάξη είναι: ',onmin) print('Το κορίτσι με τον μεγαλύτερο βαθμό στην τάξη είναι: ',onmax)

36


Εύρεση μεγίστων – ελαχίστων (2η) Να γραφεί πρόγραμμα Python που θα διαβάσει 5 αριθμούς και θα εμφανίσει τον μεγαλύτερο και τον μικρότερο. (PowerPointMaxMin2.py) Γιατί αυτή η λύση είναι προβληματική;

Λύση max=-100 min=100 max=-100 min=100 for i in range(5): Εάν όλοι οι αριθμοί Εάν όλοι οι αριθμοί x=float(input('Δώστε έναν αριθμό: ')) που δόθηκαν ήταν που δόθηκαν ήταν if x>max: μεγαλύτεροι από 100 ο μικρότεροι από -100 ο min παραμένει στην max=x max παραμένει στην τιμή 100 if x<min: τιμή -100 min=x Μόνο αν είχε δοθεί αριθμός print('Ο μεγαλύτερος αριθμός που δόθηκε είναι ο: ',max) σε αυτό το διάστημα το πρόγραμμα θα έδινε σωστά αποτελέσματα print('Ο μικρότερος αριθμός που δόθηκε είναι ο: ',min) 37 37


Εύρεση μεγίστων – ελαχίστων (3η) Να γραφεί πρόγραμμα Python που θα διαβάσει 5 αριθμούς και θα εμφανίσει τον μεγαλύτερο και τον μικρότερο. (PowerPointMaxMin3.py) Λύση x=float(input('Δώστε έναν αριθμό: ')) max=x # Το πρώτο προς εξέταση στοιχείο τίθεται μέγιστο και ελάχιστο min=x for i in range(4): x=float(input('Δώστε έναν αριθμό: ')) if x>max: max=x if x<min: min=x print('Ο μεγαλύτερος αριθμός που δόθηκε είναι ο: ',max) print('Ο μικρότερος αριθμός που δόθηκε είναι ο: ',min) 38

38


Εύρεση μεγίστων – ελαχίστων (4η) Να γραφεί πρόγραμμα Pythonπου θα διαβάζει για πολλά αυτοκίνητα τα εξής στοιχεία για κάθε ένα από αυτά: • Πινακίδα αυτοκινήτου. • Αριθμός ατυχημάτων. Το πλήθος των αυτοκινήτων θα το διαβάσετε εκ’ των προτέρων. Το πρόγραμμα θα υπολογίσει και θα εμφανίσει τον μέσο όρο των ατυχημάτων και τον αριθμό του αυτοκινήτου με τα περισσότερα και τα λιγότερα ατυχήματα. Υποθέστε ότι το πλήθος των αυτοκινήτων και ο αριθμός των ατυχημάτων τους είναι θετικοί αριθμοί. (PowerPointMaxMin4.py)

39


Εύρεση μεγίστων – ελαχίστων (4η) Λύση

N=int(input('Πόσοι είναι τα αυτοκίνητα; ')) pin=str(input('Δώστε την πινακίδα του αυτοκινήτου: ')) atix=int(input('Δώστε τον αριθμό των ατυχημάτων του αυτοκινήτου: ')) max=atix onmax=pin min=atix onmin=pin for i in range(N-1): pin=str(input('Δώστε την πινακίδα του αυτοκινήτου: ')) atix=int(input('Δώστε τον αριθμό των ατυχημάτων του αυτοκινήτου: ')) if atix>max: max=atix onmax=pin if atix<min: min=atix onmin=pin print('Το αυτοκίνητο με τα περισσότερα ατυχήματα είναι το: ',onmax) print('Το αυτοκίνητο με τα λιγότερα ατυχήματα είναι το: ',onmin)

40

40


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.