Rzutowanie na int - wydajność, konwencja

0

Python, wprowadzenie, Mark Lutz. W środku taki kod:

while True:
    reply = input('Wpisz tekst:')
    if reply == 'stop': break
    try:
        num = int(reply)
    except:
        print('Niepoprawnie!' * 5)
    else:
        print(int(reply) ** 2)
    print('Koniec')

Dlaczego po else autor daje

print(int(reply) ** 2)

zamiast

print(num ** 2)

?? Z mojego doświadczenia z innym językiem to jest błąd, bo dlaczego nie wykorzystać już naszego num? Czy w pythonie jest inna konwencja, lub jest jakiś inny kejs związany z wydajnością lub czymkolwiek innym, który sprawił, że autor tak napisał?

1

Nie ma powodu ani konwencji czemu autor tak napisał.

0

Nie jestem specjalistą od Pythona, ale w innych językach to błąd, więc tu chyba też. Ale czekam na opinie ogarniętych w tym temacie

0

przede wszystkim pytanie brzmi czemu pomiędzy if'em a else się znajduje try oraz except które nawet nie są zagnieżdżone w if'ie. To jest wbrew jakiejkolwiek czytelności programu o ile w ogóle zadziała ten kod, na pierwszy rzut oka nie powinien :).

@Edit: A tak konkretniej odpowiadając na pytanie, podejrzewam że nie zostało to zastąpione zmienną num, ponieważ gdyby wystąpił błąd po try, nie posiadamy tej zmiennej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1