Εμφάνιση αναρτήσεων με ετικέτα Προγραμματισμού. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα Προγραμματισμού. Εμφάνιση όλων των αναρτήσεων

13 Ιανουαρίου 2022

Εφαρμογή στοίβας με προσθήκη και αφαίρεση αριθμών


Να γράψετε ένα πρόγραμμα το οποίο θα διαβάζει αριθμούς από το πληκτρολόγιο, μέχρι να δοθεί ο αριθμός 0. Κάθε φορά που θα διαβάζει έναν θετικό αριθμό, θα τον προσθέτει σε μια στοίβα. Όταν διαβάζει έναν αρνητικό αριθμό θα αφαιρεί τόσους αριθμούς από τη στοίβα, αν αυτό είναι δυνατόν και θα τους εμφανίζει στην οθόνη.

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

 

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

Επίλυση εξίσωσης δευτέρου βαθμού με συνάρτηση της Python 2.7

 Επίλυση εξίσωσης δευτέρου βαθμού της μορφής αx2 + βx + γ = 0, με α ≠ 0

με τη χρήση της διακρίνουσας Δ με Python 2.7

Δ = β2 – 4αγ

Η εξίσωση

αx2 + βx + γ = 0, α ≠ 0
Δ > 0Έχει δύο ρίζες άνισες τις pic236
Δ = 0Έχει μια διπλή ρίζα τη pic238
Δ < 0Είναι αδύνατη στο R .

Πηγή: 

http://users.sch.gr/fergadioti1/Institude_Geogebra/applets/A_alg_3exisoseis/33.html


Στην Python δημιουργούμε μία συνάρτηση quad(a,b,c) με παραμέτρους τους συντελεστές της δευτεροβάθμιας εξίσωσης α,β και γ (a,b,c).

Πρώτα υπολογίζουμε την διακρίνουσα  Δ = β2 – 4αγ    (d=b**2-4*a*c)

d<0 επιστρέφει το d και τα μηνύματα: "No real solution",  "No real solution"

Αλλιώς αν το d>0 η συνάρτηση επιστρέφει το d και δύο ρίζες:

x1=(-b+math.sqrt(d))/(2*a)

x2=(-b-math.sqrt(d))/(2*a)

return d,x1,x2

Τέλος αν d=0 (d==0)  η συνάρτηση επιστρέφει το d και μία διπλή ρίζα:

 x=-b/float(2*a)

return d,x,x

 

Η συνάρτηση και οι κλήσεις της συνάρτησης από τη γραμμή εντολών (εκτέλεση)


 
Το αρχείο 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 και το κυρίως πρόγραμμα

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

Βελτιωμένος αλγόριθμος ταξινόμησης ευθείας ανταλλαγής (bubble sort) - Δημιουργία τυχαίας λίστας διαφορετικών ακέραιων αριθμών (random - randint)

 


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

Όμως, στην κανονική του μορφή, κάνει συγκεκριμένα περάσματα (n-1, όπου n το μήκος της λίστας προς ταξινόμηση), ακόμα κι όταν η λίστα είναι ήδη ταξινομημένη.

Αυτό μπορεί να διορθωθεί ελέγχοντας αν στο τέλος ενός περάσματος από τα n-1, προκύψουν μηδενικές ανταλλαγές.

Στο αρχείο python που παρατίθεται, έχουμε την απλή υλοποίηση και την βελτιωμένη. Η λίστα των αριθμών παράγεται με την χρήση της βιβλιοθήκης random και της συνάρτησης randint, ώστε να έχουμε μια τυχαία και όχι προσχεδιασμένη λίστα.    

Αρχείο Python 1

 Αρχείο Python 2

Στην εικόνα που ακολουθεί φαίνεται ο κώδικας του προγράμματος και η εκτέλεση του, όπου φαίνεται ξακάθαρα ότι σε μία τυχαία αταξινόμητη λίστα στην απλή υλοποίηση του bubble sort κάνουμε δύο περάσματα επιπλέον σε σχέση με την βελτιωμένη υλοποίηση. Σε μία λίστα 10 αριθμών η διαφορά φαίνεται μικρή, αλλά σε πολύ μεγάλες λίστες υπάρχει μεγάλη εξοικονόμηση επαναλήψεων.


 

 

10 Ιουνίου 2020

Αφαίρεση αρνητικών αριθμών από μια λίστα με την χρήση της μεθόδου pop()


Πρόγραμμα με συνάρτηση που αφαιρεί τους αρνητικούς αριθμούς από μία λίστα ακεραίων αριθμών.
Η διάσχιση της λίστας πρέπει να γίνει από το τέλος προς την αρχή της λίστας για να μην παραλείπονται θέσεις και να μην έχουμε το μήνυμα "out of range", δηλαδή να ελέγχουμε μία θέση της λίστας που δεν υπάρχει πλέον.

Πρόγραμμα

[1, -2, -5, 3, 5, 87, 23, 78, -1923, -5, -45, -53, 100]
[1, 3, 5, 87, 23, 78, 100]



Παράδειγμα με παράλληλη ταξινόμηση





Διπλή παράλληλη ταξινόμηση, πρώτα σε αύξουσα σειρά και μετά σε φθίνουσα σειρά ώστε τα γράμματα που έχουν ίδιο αριθμό να είναι ταξινομημένα αλφαβητικά. Π.χ. 'b','f' που έχουν 85 και 'g', 'h' που έχουν 79

Παράδειγμα 

 Πριν την ταξινόμηση
['c', 'f', 'a', 'h', 'd', 'b', 'e', 'i', 'g']
[89, 85, 92, 79, 83, 85, 95, 82, 79]

Μετά την ταξινόμηση
['e', 'a', 'c', 'b', 'f', 'd', 'i', 'g', 'h']
[95, 92, 89, 85, 85, 83, 82, 79, 79]

1 Ιουνίου 2020

Πρόγραμμα Python που μεταφέρει τις λέξεις από ένα κείμενο σε λίστα


Να γίνει πρόγραμμα σε Python που:
1) Ζητάει από τον χρήστη ένα κείμενο (συμβολοσειρά) που αποτελείται από λέξεις.
2) Στη συνέχεια οι λέξεις μεταφέρονται μία μία σε μία λίστα. Θεωρούμε ότι μία λέξη τελείωσε όταν εντοπιστεί το κενό διάστημα " " ή ένας από τους χαρακτήρες ! , . : ; ? 
3) Να εμφανιστούν μία μία οι λέξεις που μεταφέρθηκαν στη λίστα.

Παρατήρηση: Οι χαρακτήρες ! , . : ; ? και το κενό διάστημα " " δεν μεταφέρονται στη λίστα, ακόμα κι αν υπάρχουν στη σειρά.
Π.χ.

Καλημέρα, που είσαι; Καιρό έχω να σε δω!!

Καλημέρα
που
είσαι
Καιρό
έχω
να
σε
δω

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


16 Φεβρουαρίου 2020

Διάσχιση γραμμών αρχείου με την δομή while. Παράδειγμα με υπολογισμό αθροίσματος

Πρόγραμμα που ανοίγει ένα αρχείο κειμένου που περιέχει ακέραιους θετικούς αριθμούς.
Διαβάζει μία μία τις γραμμές του αρχείου με τη χρήση της δομής while και τη μέθοδο readline() και προσθέτει τις γραμμές στο άθροισμα αφού τις μετατρέψει σε ακέραια μορφή.
Το αρχείο τελειώνει όταν η readline() επιστρέψει κενή συμβολοσειρά ""

Ο κώδικας του προγράμματος

Εγγραφή αριθμών σε αρχείο κειμένου και υπολογισμός αθροίσματος, μέσου όρου, μεγαλύτερου και μικρότερου αριθμού

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

Πρόγραμμα Python

 

Μέτρηση γραμμών αρχείου. Υπολογισμός αθροίσματος αρχείου αριθμών. Προσθήκη αθροίσματος στο τέλος


  1. Συνάρτηση που μετράει και επιστρέφει τις γραμμές ενός αρχείου κειμένου.
  2. Κώδικας που ανοίγει ένα αρχείο κειμένου που περιέχει αριθμούς για "ανάγνωση" "r" και υπολογίζει το άθροισμά τους.
  3. Κώδικας που ανοίγει ένα αρχείο κειμένου που περιέχει αριθμούς για "προσθήκη στο τέλος" "a" και γράφει το άθροισμα στην τελευταία γραμμή του αρχείου.
  4. Κώδικας που ανοίγει ένα αρχείο κειμένου που περιέχει αριθμούς για ανάγνωση και εμφανίζει μόνο την τελευταία γραμμή που περιέχει το άθροισμα.

Ο κώδικας του προγράμματος