1. Εισαγωγή στην Python#

Η φιλοσοφία της Python δίνει έμφαση στην αναγνωσιμότητα του κώδικα. Αυτό δίνει την δυνατότητα στον αρχάριο χρήστη της να παράγει γρήγορα αποτελέσματα. Παρακάτω παρουσιάζονται κάποια βασικά στοιχεία της γλώσσας που καλύπτουν τον αναγνώστη όσον αφορά τα παραδείγματα και τις ασκήσεις του συγγράμματος. Για τις πιο προχωρημένες δυνατότητες τις γλώσσας υπάρχει πληθώρα εξειδικευμένων συγγραμμάτων και οδηγών στο διαδίκτυο.

1.1. Περιβάλλον εκτέλεσης της Python#

Για την εκτέλεση των παραδειγμάτων και την επίλυση των ασκήσεων που συνοδεύουν το σύγγραμμα, θα χρειαστεί πρόσβαση σε ένα περιβάλλον εκτέλεσης της Python (runtime). Προτείνονται οι παρακάτω επιλογές:

  1. Εγκατάσταση στον υπολογιστή σας των παρακάτω πακέτων λογισμικού:

    • Python: Η επίσημη διανομή του Python Software Foundation.

      Important

      Κατά την εγκατάσταση στα windows ενεργοποιήστε την επιλογή “Add python.exe to PATH”.

    • Visual Studio Code

      Important

      Κατά το πρώτο άνοιγμα ενός σημειωματάριου jupyter, το Visual Studio Code θα σας προτείνει την εγκατάσταση ορισμένων plugin, τα οποία θα πρέπει να αποδεχτείτε.

  2. Χρήση ενός διαδικτυακού περιβάλλοντος εκτέλεσης σημειωματαρίων jupyter, όπως:

1.2. Αριθμητικοί τελεστές#

a = 3.0
b = 1.5

-a  # sign change (unary operator)
a + b
a - b
a * b
a / b
a // b  # integer (floor) division
a % b  # modulus (real or integer)
a**b  # power (operator "^" is bitwise xor)

type(a)
float

H προτεραιότητα των πράξεων ακολουθεί τις μαθηματικές συμβάσεις σύμφωνα με την ακολουθία:

  1. Παρενθέσεις

  2. Δυνάμεις

  3. Αλλαγές πρόσημου

  4. Πολλαπλασιασμοί και διαιρέσεις

  5. Αθροίσματα και διαφορές

Tip

Στην μεταβλητή “_” αποθηκεύεται το τελευταίο αποτέλεσμα.

Exercise 1.1

Υπολογίστε την παρακάτω μαθηματική έκφραση και το τετράγωνό της.

\[\frac{3^{\frac{3}2}+5}{8+2}\]
a = (3 ** (3 / 2) + 5) / (8 + 2)

print(a, a**2)
1.0196152422706632 1.0396152422706633

1.3. Λογικοί και συγκριτικοί τελεστές#

a = 3.0
b = 1.5
c = 10.0

a > b
a >= b
a < b
a <= b
a == b  # Note the double equal mark
a != b

a < b and b < c
not (a > b or b < c)  # Equivalent with the above
a < b < c  # Equivalent with the above
False

1.4. Μαθηματικές συναρτήσεις#

import math  # using module math

math.sqrt(2.0)  # square root
math.exp(1.0)  # exponent
math.log(10.0)  # natural logarithm, inverse of exp
math.log10(10.0)  # base 10 logarithm
math.sin(math.pi / 4)  # sinus. Be careful, input in rad not degrees
math.tan(math.pi / 4)  # tangent. Be careful, input in rad not degrees
0.9999999999999999

1.5. Ορισμός συναρτήσεων#

Παραδείγματα:

def f(x):
    f = x**2 + 2 * x**2 + 1   # blocks are denoted by indentation
    return f


# annotations are indicative (not used by interpreter). Still a very good practice.
def g(x: float) -> float:
    return x**2 + 2 * x**2 + 1


print(f(0.5), g(0.5), g(2))
1.75 1.75 13

1.6. Μορφοποίηση της εξαγωγής στην οθόνη#

Από την έκδοση 3.6 εχουν εισαχθεί στην Python οι συμβολοσειρές τύπου f (f-strings), οι οποίες αποτελούν τον πιο εύχρηστο τρόπο μορφοποίησης της εξαγωγής στην οθόνη. Ειδικά για την εξαγωγή αριθμητικών τιμών χρησιμοποιείται η σύνταξη:

f"...{value:[minimumwidth].[decimals][type]}..."

Περισσότερες λεπτομέρειες για τους διαθέσιμους τύπους δίνονται στην βελτιωτική πρόταση PEP 3101.

import numpy as np

# Integer with at least 4 characters
print(f"{10:4d}")
# float notation with a fixed length of 10 total characters (including symbols and letters) of which 2 decimals
print(f"Ο αριθμός π είναι {np.pi:10.2f}")
# scientific notation with 2 decimals
print(f"Ο αριθμός π είναι {np.pi:.2e}")
# Percentage notation with 1 decimal
print(f"1/4 =  {0.25:.1%}")
  10
Ο αριθμός π είναι       3.14
Ο αριθμός π είναι 3.14e+00
1/4 =  25.0%

1.7. Βασικές δομές δεδομένων#

H Python προσφέρει τις παρακάτω βασικές δομές δεδομένων:

  • Λίστες (lists)

  • Πλειάδες (tuples)

  • Σύνολα (sets)

  • Λεξικά (dictionaries)

mylist = [1, 2, 1, 4]  #
mytuple = (1, 2, 1, 4)  #
myset = {4, 2, 1, 4}  # Equals {1,2,4}
mydictionary = {"a": 1, "b": 2}

Tip

Τα στοιχεία σε μια βασική δομή δεδομένων μπορεί να είναι διαφορετικού τύπου. Επίσης μία δομή δεδομένων μπορεί να περιλαμβάνει άλλες δομές.

1.8. Έλεγχος ροής#

Για τον έλεγχο ροής χρησιμοποιούνται οι γνωστές δηλώσεις if, for και while που συναντώνται και σε άλλες γλώσσες προγραμματισμού. Παρακάτω δίνονται ορισμένα παραδείγματα.

x = 8
if x > 10:
    y = 10
elif x > 5:
    y = 7.5
else:
    y = 0
print(y)
7.5

Στους βρόχους επανάληψης for χρησιμοποιούνται συχνά ακολουθίες ακεραίων τιμών, οι οποίες δημιουργούνται με την τύπο δεδομένων range όπως παρακάτω:

range(stop)
range(start, stop[, step])

Tip

Η range τερματίζει στην τιμή stop, η οποία δεν περιλαμβάνεται στην επιστρεφόμενη ακολουθία. Η προεπιλεγμένη τιμή για την start είναι 0 και για την step 1.

a = []    # list
for i in range(4):
    a.append(i) #   Add element to end of list

b = [x for x in range(4)]  # Equivalent expression

print(a, b)
[0, 1, 2, 3] [0, 1, 2, 3]

Οι βρόχοι επανάληψης for και while μπορούν να τερματιστούν πρόωρα με την εντολή break ή να ξεκινήσουν καινούργια επανάληψη με την εντολή continue.

i = 0
n = 0
while i < 10:
    i += 1
    if i < 0:
        break   # Exit while loop

    if i % 2 == 0:  # Check if even number
        n += i
    else:
        continue    # Start new iteration
    print(i)

print(n)
2
4
6
8
10
30

1.9. Βελτιωτικές προτάσεις (PEP)#

Η εξέλιξη της Python βασίζεται σε βελτιωτικές προτάσεις (Python Enhancement Proposals), γνωστές ως PEP, οι οποίες συντάσσονται και συναποφασίζονται από μέλη της κοινότητας της Python. Υπάρχουν τρεις μεγάλες κατηγορίες προτάσεων:

  1. Προτάσεις που αφορούν τον σχεδιασμό προτύπων (Standards track), όπως:

    • τα χαρακτηριστικά της γλώσσας

    • τη λειτουργία του διερμηνευτή (interpreter) CPython

    • τη διαλειτουργικότητα με το υπόλοιπο οικοσύστημα

  2. Πληροφοριακές προτάσεις (Informational)

  3. Διαχειριστικές προτάσεις (Process)

Οι παρακάτω ενδεικτικές PEP παρουσιάζουν ιδιαίτερο ενδιαφέρον:

  • PEP1, Σκοπός και κατευθυντήριες γραμμές των PEP

  • PEP8, Οδηγίες για το στυλ συγγραφής κώδικα Python

  • PEP20, Το ζεν της Python

  • PEP719, Χρονοδιάγραμμα κυκλοφορίας Python 3.13