Простой Python Temp Script

Я написал очень простой временный скрипт, который предложит пользователю ввести данные и выложит ответ. Как вы можете видеть ниже, я предлагаю пользователю ввести 1,2 или 3: 1 от fah до cel, 2 от cel до feh и 3 для выхода из программы. Если пользователь вводит 1 или 2, другое приглашение попросит его ввести градусы, которые он хочет преобразовать. Эта запись сохраняется в переменной:

scale

Мои функции, которые я написал, должны вычислить число с плавающей точкой для правильного преобразования и вернуться к главному меню после того, как будет напечатана правильная температура. Есть некоторая логика в операторе try/exception, который попытается преобразовать этот ввод в число с плавающей точкой, и если это не удастся, он напечатает неприятный грамм. Когда я запускаю этот код, кажется, что все работает нормально, пока не доходит до вызова функции fahtoCel:

fc = fahtoCel(scale)

Я почти уверен, что у меня все отступы правильные, и я изучил объявление функций и вызов их в скрипте. Единственное, что я подозреваю, это то, что мой вызов функции находится внутри моего оператора try / исключением и, возможно, что область действия неверна? Мой код:

def fahtoCel(number):
    return(number - 32.0) * (5.0/9.0)

while True:
    x = raw_input("""Please enter 1,2 or 3: """)
    if x == "3":
        exit(0)
    if x == "1":
        scale = raw_input("""Enter degrees in Fah: """)
        try:
            scale = float(scale)
            fc = fahtoCel(scale)
        except:
            print("Invalid Entry")
        continue
    print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))
    if x == "2":
    #Do the same for cel to fah#

1 ответ

Решение

continue переводит исполнение в начало while петля, так что вы никогда не достигнете print заявление, независимо от результата try заявление. Вам нужно сделать отступ в следующем:

try:
    scale = float(scale)
    fc = fahtoCel(scale)
except Exception:  # Don't use bare except! You don't want to catch KeyboardInterrupt, for example
    print("Invalid entry")
    continue
print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))

Правда, ваш try утверждение слишком широкое. Единственное исключение, о котором вы должны беспокоиться, это ValueError тот float может поднять.

try:
    scale = float(scale)
except ValueError:
    print("Invalid entry")
    continue
fc = fahtoCel(scale)
print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))
Другие вопросы по тегам