Δημοσιεύτηκε: 03 Μάιος 2012, 21:08
@saviolidis
Σαν γενική αρχή καλό είναι να μη βάζεις πολλά πράγματα μέσα στο block του "try". Ιδανικά μόνο ένα. Ο λόγος είναι για να είναι πιο εύκολο το debugging. Σκέψου πχ την περίπτωση, το ValueError να μη γίνει raised από την input αλλά από κάποια άλλο εντολή που βρίσκεται μέσα στο try block. Πως θα ξέρεις τι πήγε στραβά?
Για το λόγο αυτό στο τέλος του try/except μπορείς προαιρετικά να βάλεις και τα else/finally. Δηλαδή o κώδικας θα γίνει κάπως έτσι.
Το else εκτελείται μόνο αν δε σηκωθεί το exception ενώ το finally εκτελείται ότι και να γίνει (είτε δηλαδή υπάρχει exception είτε όχι).
ps. To code highlight πως μπαίνει?
ps2. Το σωστό είναι το shebang να δείχνει στο env και όχι απευθείας στην Python.
Σαν γενική αρχή καλό είναι να μη βάζεις πολλά πράγματα μέσα στο block του "try". Ιδανικά μόνο ένα. Ο λόγος είναι για να είναι πιο εύκολο το debugging. Σκέψου πχ την περίπτωση, το ValueError να μη γίνει raised από την input αλλά από κάποια άλλο εντολή που βρίσκεται μέσα στο try block. Πως θα ξέρεις τι πήγε στραβά?
Για το λόγο αυτό στο τέλος του try/except μπορείς προαιρετικά να βάλεις και τα else/finally. Δηλαδή o κώδικας θα γίνει κάπως έτσι.
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#!/usr/bin/env python3
net = 0
while True:
try:
num_courses = int(input('Give number of courses: '))
except ValueError:
print('Invalid input. Please enter an integer.')
else:
break
for i in range(num_courses):
while True:
try:
grade = int(input("enter a grade (0 - 20)")
except ValueError:
print("Invalid grade. Please retry!")
else:
if 0 <= grade <= 20:
net += integer_value
break
print("your average is %.2f" % net / num_courses)
Το else εκτελείται μόνο αν δε σηκωθεί το exception ενώ το finally εκτελείται ότι και να γίνει (είτε δηλαδή υπάρχει exception είτε όχι).
ps. To code highlight πως μπαίνει?
ps2. Το σωστό είναι το shebang να δείχνει στο env και όχι απευθείας στην Python.