Skip to content

Αμυντικός Προγραμματισμός

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

Παράδειγμα 1: Ζητείται η εισαγωγή από τον χρήστη ενός θετικού ακέραιου αριθμού.

Α' τρόπος

defensive1.py
while True:
    x = input("Δώσε θετικό ακέραιο αριθμό: ")
    # isdigit() returns True if the string is a digit string, False otherwise.
    # A string is a digit string if all characters in the string are digits and
    # there is at least one character in the string.
    if not x.isdigit():
        print("Λάθος είσοδος")
    else:
        if int(x) <= 0:
            print("Λάθος είσοδος")
        else:
            break

print(x)
Παράδειγμα εκτέλεσης:
$ python defensive1.py
Δώσε θετικό ακέραιο αριθμό: -4
Λάθος είσοδος
Δώσε θετικό ακέραιο αριθμό: α
Λάθος είσοδος
Δώσε θετικό ακέραιο αριθμό: 0
Λάθος είσοδος
Δώσε θετικό ακέραιο αριθμό: 17
17

Β' τρόπος

defensive2.py
while True:
    x = input("Δώσε θετικό ακέραιο αριθμό: ")
    try:
        if int(x) <= 0:
            print('Λάθος είσοδος, δοκιμάστε ξανά')
        else:
            break
    except ValueError:
        print('Λάθος είσοδος, δοκιμάστε ξανά')

print(x)
Παράδειγμα εκτέλεσης:
$ python defensive2.py
Δώσε θετικό ακέραιο αριθμό: 4+
Λάθος είσοδος, δοκιμάστε ξανά
Δώσε θετικό ακέραιο αριθμό: πέντε
Λάθος είσοδος, δοκιμάστε ξανά
Δώσε θετικό ακέραιο αριθμό: 42
42

Παράδειγμα 3: Εισαγωγή μη κενής συμβολοσειράς

defensive1.py
1
2
3
4
5
s = input("Εισάγετε μια μη κενή συμβολοσειρά: ")
while s.strip() == '':
    s = input("Εισάγετε μια μη κενή συμβολοσειρά: ")

print(s)
Παράδειγμα εκτέλεσης:
$ python defensive3.py
Εισάγετε μια μη κενή συμβολοσειρά: 
Εισάγετε μια μη κενή συμβολοσειρά:    
Εισάγετε μια μη κενή συμβολοσειρά: 
Εισάγετε μια μη κενή συμβολοσειρά: τεστ
τεστ

Παράδειγμα 4: Εισαγωγή μόνο κάποιας από τις τιμές 0, 1, 2, 3

defensive4.py
1
2
3
4
5
6
7
8
while True:
    x = input("Δώσε τιμή ένα από τα 0,1,2,3: ")
    if x.isdigit():
        if 0 <= int(x) <= 3:
            break
    print("Λάθος τιμή")

print(x)
Παράδειγμα εκτέλεσης:
$ python defensive4.py
Δώσε τιμή ένα από τα 0,1,2,3: -1
Λάθος τιμή
Δώσε τιμή ένα από τα 0,1,2,3: 5
Λάθος τιμή
Δώσε τιμή ένα από τα 0,1,2,3: α
Λάθος τιμή
Δώσε τιμή ένα από τα 0,1,2,3: 3
3