Простой 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))