Δημοσιεύτηκε: 03 Μάιος 2012, 21:08
από pmav99
@saviolidis
Σαν γενική αρχή καλό είναι να μη βάζεις πολλά πράγματα μέσα στο 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.