Σημειωματάριο Τετάρτης 4 Οκτ. 2017

Σχετικά έγγραφα
Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Εισαγωγή στον Προγ/μό Υπολογιστών

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Εισαγωγή στην Python Χειμερινό Εξάμηνο 2016

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Εισαγωγή στην Python Χειµερινό Εξάµηνο 2014

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Σημειωματάριο Δευτέρας 23 Οκτ. 2017

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Βασικά στοιχεία γλώσσας προγραμματισμού. Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Γλώσσα προγραμματισμού python

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Σημειωματάριο Τετάρτης 11 Οκτ. 2017

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ. ΜΕΡΟΣ 1ο ΑΛΓΕΒΡΑ

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

Σημειωματάριο Δευτέρας 13 Νοε. 2017

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Όταν οι αριθμοί είναι ομόσημοι Βάζουμε το κοινό πρόσημο και προσθέτουμε

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ

Να υπολογίζουμε τη λύση ή ρίζα ενός πολυωνύμου της μορφής. Να υπολογίζουμε τη ν-οστή ρίζα ενός μη αρνητικού αριθμού.

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Λογικές εκφράσεις και μεταβλητές

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

Κεφάλαιο 1. Τι θα μάθουμε σήμερα: -AND, OR, NOT. -Ενσωματωμένες συναρτήσεις. -Μαθηματικοί τελεστές -ΤΕΛΕΣΤΕΣ DIV ΚΑΙ MOD. -Προτεραιότητα πράξεων

Στοιχειώδης προγραμματισμός σε C++

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Κεφάλαιο 8: Προγραμματίζοντας αλγορίθμους έξυπνα και δημιουργικά

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αλφαριθμητικά Χειμερινό Εξάμηνο 2016

4.2 ΕΥΚΛΕΙΔΕΙΑ ΔΙΑΙΡΕΣΗ

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Σημειωματάριο μαθήματος 1ης Νοε. 2017

( ) Ίσες συναρτήσεις. = g, Οι συναρτήσεις f, g λέμε ότι είναι ίσες και συμβολίζουμε f. όταν: Έχουν το ίδιο πεδία ορισμού Α

ΚΕΦΑΛΑΙΟ 4. Συναρτήσεις και εκτέλεση υπό συνθήκη. 4.1 Εισαγωγή

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Τιμές και τύποι, μεταβλητές Ένα πρώτο σημαντικό βήμα για να μάθουμε να προγραμματίζουμε είναι να

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

Μορφοποίηση εξόδου. Σημειώσεις

Φ1: ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Βασικά στοιχεία γλώσσας προγραμματισμού

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Μαθηματικά: Αριθμητική και Άλγεβρα. Μάθημα 11 ο, Τμήμα Α. Γεωμετρία

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Mεταβλητές (variables) και Σταθερές (constants)

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ακολουθία (sequence)

2.1 ΠΡΑΞΕΙΣ ΚΑΙ ΟΙ ΙΔΙΟΤΗΤΕΣ ΤΟΥΣ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Κεφάλαιο Πέµπτο: Η Εξάσκηση

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη ΠΚ2 11:15, 13:15, 15:15, 17:15 και 19:15

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 8. Πότε το γινόμενο δύο ή περισσοτέρων αριθμών παραγόντων είναι ίσο με το μηδέν ;

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΜΕΘΟΔΟΛΟΓΙΕΣ & ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΗΝ ΑΛΓΕΒΡΑ ΤΗΣ Α ΛΥΚΕΙΟΥ

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Μαθηματικά Γ Γυμνασίου

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Μαθηματικά. Ενότητα 1: Οι Αριθμοί. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Transcript:

Σημειωματάριο Τετάρτης 4 Οκτ. 2017 Strings (λέξεις) Ένας από τους κύριους τύπους δεδομένων στην Python είναι τα strings (κείμενα, λέξεις). Όταν γράφουμε ένα κείμενο σε απλά ή διπλά εισαγωγικά τότε αυτό είναι ένα string (προσοχή όμως μη βάζετε εισαγωγικά μέσα σε εισαγωγικά γιατί μπορεί να έχετε πρόβλημα). Στο επόμενο έχουμε δύο μεταβλητές s και t τύπου string στις οποίες δίνουμε τιμή και τυπώνουμε με την print. In [1]: s = "Μιχάλης" t = 'Mihalis' print(s, t) Μιχάλης Mihalis Εδώ δείχνουμε ότι δύο strings μπορούν να συγκολληθούν σε ένα string με την πράξη +. In [2]: s = "Μιχάλης" t = 'Mihalis' newstring = s+t print(newstring) ΜιχάληςMihalis Ή όπως εδώ. In [5]: print("mihalis"+"manolis") MihalisManolis Η πράξη (φυσικός αριθμός Ν)*string συγκολλεί το string με τον εαυτό του Ν φορές. In [6]: x="abc" y=3*x print(y) abcabcabc Και οι κενοί χαρακτήρες (γράμματα) μπορούν να είναι μέρος ενός string. http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 1/7

In [10]: print(10*"abc ") abc abc abc abc abc abc abc abc abc abc Η συνάρτηση len μας επιστρέφει το μήκος (δηλ. πόσα γράμματα έχει) του string που της περνάμε ως όρισμα. Η συνάρτηση print τυπώνει όλα τα ορίσματά της διαχωρισμένα με ένα κενό χαρακτήρα. In [6]: x=5*"1 23" # Ο κενός χαρακτήρας μετράει στο μήκος του string n = len(x) print("το string x έχει μήκος", n) print("το string ", x, "έχει μήκος", n) Το string x έχει μήκος 20 Το string 1 231 231 231 231 23 έχει μήκος 20 Για να τυπώσουμε πολλά πράγματα με το print χωρίς υποχρεωτικά να τυπώνονται οι ενδιάμεσοι κενοί χαρακτήρες μπορούμε να τα συγκολλήσουμε πρώτα σε ένα string και να τυπώσουμε αυτό. Δε μπορούμε όμως να συγκολλήσουμε ένα string με ένα ακέραιο, γι' αυτό γράφουμε +str(n) και όχι n. Η συνάρτηση str(n) παίρνει τον αριθμό n (ή και άλλους τύπους δεδομένων) και τους διαμορφώνει ως string το οποίο και επιστρέφει. In [17]: x=5*"123" n = len(x) print("το string"+x+"έχει μήκος"+str(n)) Το string123123123123123έχει μήκος15 In [ ]: Δείτε εδώ πώς δουλεύει η `str`. In [9]: str(5) Out[9]: '5' In [10]: str(-5.2) Out[10]: '-5.2' http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 2/7

In [12]: str(1+2.1) Out[12]: '3.1' In [11]: str(1 == 2) Out[11]: 'False' Εδώ βλέπουμε μια μεταβλητή x "λογικού" (boolean) τύπου. Η τιμή που παίρνει η x στην εκχώρηση (assignment) x = a < b είναι το αν είναι True ή False η παράσταση μετά το =. In [13]: a=3 b=5 x = a < b print(x) True Η συνάρτηση type(x) μας επιστρέφει τον τύπο μιας ποσότητας x. Bool είναι ο τύπος των λογικών μεταβλητών στην Python. In [23]: type(x) Out[23]: bool Ενώ float και int είναι ο τύπος πραγματικών (floating poing numbers, στους υπολογιστές) και ακεραίων (integers) αντίστοιχα. In [24]: y=3.2 type(y) Out[24]: float http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 3/7

In [14]: type(-2) Out[14]: int Ο πραγματικοί αριθμοί δεν αναπαρίστανται ποτέ ακριβώς στον υπολογιστή. Αυτό μπορεί να δημιουργήσει καταστάσεις που δε δεν τις περιμένουμε. Σημειωτέον ότι ούτε και οι πράξεις ανάμεσα σε πραγματικούς αριθμούς γίνονται ακριβώς. Αντίθετα η αναπαράσταση των ακεραίων είναι ακριβής (όσο τουλάχιστον "χωράνε" στον υπολογιστή μας) όπως και οι πράξεις ανάμεσά τους. Στο επόμενο βλέπουμε ότι αν πάρουμε την τετραγωνική ρίζα του 2 και την υψώσουμε στο τετράγωνο παίρνουμε κάτι που δεν είναι ακριβώς 2. In [15]: import math (math.sqrt(2))**2 Out[15]: 2.0000000000000004 Δε συγκρίνουμε για ισότητα ποτέ λοιπόν δύο πραγματικούς αριθμούς με το συνηθισμένο σύμβολο ισότητας πραγμάτων στην Python το ==. Αυτό που κάνουμε είναι ότι αν θέλουμε να συγκρίνουμε δύο αριθμούς για ισότητα τους αφαιρούμε και ελέγχουμε αν η απόλυτη τιμή της διαφοράς τους (που την υπολογίζουμε με τη συνάρτηση abs) είναι αρκετά μικρή για τους σκοπούς μας, π.χ., μικρότερη του 10 6 εδώ, αριθμός ο οποίος μπορεί για συντομία να γραφεί στην Python ως 1e-6. In [30]: import math x = math.sqrt(2) y = x*x t = ( 2 == y ) # Εδώ συγκρίνουμε για ισότητα με το "χαζό" τρόπο tt = ( abs(2-y) < 1e-6) # Κι εδώ συγκρίνουμε αν το y και το 2 είναι προσεγγιστικ ά ίσοι print(t, tt) False True Η επιστημονική γραφή ενός αριθμού είναι XXXXEYYYY όπου XXXX είναι ένας δεκαδικός αριθμός και YYYY είναι ένας ακέραιος. In [31]: 1e6 Out[31]: 1000000.0 http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 4/7

Μπορούμε να μετατρέψουμε όλα τα γράμματα σε ένα string σε κεφαλαία με τη μέθοδο.upper() η οποία καλείται όπως φαινεται παρακάτω. Κάθε τύπος δεδομένων έχει κάποιες προκαθορισμένες μεθόδους (συναρτήσεις ουσιαστικά) που καλούνται με τον τρόπο που βλέπετε και κάνουν διάφορες δουλειές. Θα δούμε πολλές τέτοιες στο μάθημα. In [32]: s = "abcdef" s.upper() Out[32]: 'ABCDEF' In [33]: "abcdef".upper() Out[33]: 'ABCDEF' Τα γράμματα ενός string x με μήκος N είναι τα x[0] (το πρώτο γράμμα), x[1],... x[n-1] (τελευταίο γράμμα). Αν ο δείκτης είναι αρνητικός η σύμβαση είναι ότι μετράμε από το τέλος. Π.χ. το x[-1] είναι το ίδιο με το x[n-1] και το x[-2] το ίδιο με το x[n-2]. Αν θέλουμε να πάρουμε μια υπολέξη ενός string τότε χρησιμοποιούμε ένα slice που είναι της μορφής a:b, όπου τα a, b είναι ακέραιοι και το νόημα του slice είναι να πάρουμε όλους τους ακεραίους από το a και πάνω όσο είναι μικρότεροι (αυστηρά) του b. In [21]: x="abcdef" print(x[0], x[1]) N = len(x) print(x[n-1]) print(x[-1]) # Αυτό είναι το τελευταίο γράμμα του x print(x[1:n-1]) # Εδώ παίρνουμε όλα τα γράμματα από το δεύτερο (x[1]) έως και το προτελευταίο (x[n-2]) a b f f bcde Αν το δεύτερο μέρος του slice είναι κενό, έχουμε δηλ. ένα slice της μορφής a: τότε θεωρούμε ότι το δεύτερο μέλος είναι το μέγιστο δυνατό, πάμε, με άλλα λόγια, από το a μέχρι το τέλος του string. Έτσι το s[1:] παρακάτω είναι το κομμάτι του string s από το δεύτερο γράμμα και πέρα. Με τον παρακάτω κώδικα πετυχαίνουμε να κάνουμε κεφαλαίο μόνο το πρώτο γράμμα του string. http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 5/7

In [46]: s = "Αβγδε" a = s[0] # πρώτο γράμμα του s rest = s[1:] # υπόλοιπο κομμάτι του s S = a.upper()+rest print(s) Αβγδε Υπάρχει επίσης και η μέθοδος.lower() στα strings που κάνει τα γράμμματα μικρά. In [47]: "δσφγδσδκφξσηδηξξξκηξλ".lower() Out[47]: 'δσφγδσδκφξσηδηξξξκηξλ' Εδώ βλέπουμε πώς μπορούμε να αντιστρέψουμε τα γράμματα ενός string με ένα γενικευμένο slice. Ένα γενικευμένο slice είναι της μορφής a:b:s και σημαίνει "ξεκίνα από το a, προχώρα με βήμα s για όσο είσαι αυστηρά μικρότερος από b. Ειδικά η μορφή ::-1 που εμφανίζεται εδώ, ξεκινά από το τέλος αφού το βήμα είναι αρνητικό και κατεβαίνει μέχρι την αρχή, πετυχαίνοντας έτσι να πάρει τα γράμματα του string με την ανάποδη σειρά. In [48]: 'hello world'[::-1] Out[48]: 'dlrow olleh' Εδώ θέλουμε να "κρυπτογραφήσουμε" μια λέξη με τον εξής απλοϊκό τρόπο. Παίρνουμε πρώτα όλα τα γράμματα με άρτιο δείκτη, δηλ. τα s[0], s[2],... (πρώτο γράμμα, τρίτο γράμμα, κλπ) και φτιάχνουμε μια λέξη που τη λέμε even, μετά παίρνουμε τα γράμματα με περιττό δείκτη s[1], s[3],... και φτιάχνουμε μια λέξη odd και στο τέλος το κρυπτογράφημα της λέξης μας είναι η συγκόλληση των δύο αυτών λέξεων. In [58]: s = "Προγραματισμός" # Για να δουλέψουν τα παρακάτω χρειάζεται η λέξη να έχει άρ τιο μήκος, εξ ου και το ένα 'μ' μόνο. even = s[::2] # Τα γράμματα με άρτιους δείκτες σε μια λέξη odd = s[1::2] # Τα γράμματα με περιττούς δείκτες σε μια λέξη cryptoword = even+odd # Συγκόλληση print(cryptoword) Πορμτσόργααιμς http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 6/7

Εδώ αποκρυπτογραφούμε τη λέξη cryptoword που έχει προκύψει με τον αμέσως προηγούμενο κώδικα. Υπολογίζουμε πρώτα το μήκος N της λέξης και μετά το μισό μήκος half = N // 2. Αυτό είναι το πηλίκο της διαίρεσης N δια 2 και άρα είναι ακέραια ποσότητα (αν γράφαμε όμως half = N/2 τότε το half θα ήταν float και όχι int. Έπειτα ξεχωρίζουμε στις επόμενες δύο γραμμές το πρώτο μισό της λέξης και το ονομάζουμε even και το δεύτερο μισό της λέξης και το ονομάζουμε odd (και εδώ είναι που χρειαζόμαστε το μήκος της κρυπτογραφημένης λέξης να είναι άρτιο). Στο τελευταίο κομμάτι του προγράμματος, από το reconstructed και μετά χρησιμοποιούμε τα δύο μισά για να πάρουμε τα γράμματά τους εναλλάξ και να ανακατασκευάσουμε τη λέξη. Επειδή δεν έχουμε μάθει ακόμη αρκετά πράγματα για να καταλάβουμε αυτά που γράφονται εκεί δε θα το αναλύσουμε αυτό το κομμάτι ακόμη. In [77]: N = len(cryptoword) half = N//2 even = cryptoword[:half] odd = cryptoword[half:] reconstructed="" for i in range(half): reconstructed = reconstructed + even[i]+odd[i] print (reconstructed) Προγραματισμός Ανάμεσα σε ποσότητες λογικού τύπου μπορεί κανείς να κάνει και λογικές πράξεις: In [80]: x = True y = False print(x and y) print(x or y) print(not(x or y)) False True False Τα strings έχουν μια μέθοδο.format() που είναι πολύ χρήσιμη στο να μορφοποιεί κανείς λέξεις από διάφορα συστατικά. Παρακάτω αφήνουμε στο string μια "τρύπα" {} την οποία γεμίζει μετά η μέθοδος.format() με τα ορίσματά της. In [22]: "Μιχ{}ς".format("άλη") Out[22]: 'Μιχάλης' Οι "τρύπες" μπορεί να είναι και παραπάνω από μία. http://fourier.math.uoc.gr/~mk/prog1718/files/notes/20171004.html 7/7