Использование цикла while для Try Except
Я использую Python 3.4.3. Я успешно написал код, который использует попытку, за исключением внутри цикла for, чтобы убедиться, что мой список заполняется данными, которые я ищу. Проблема, с которой я сталкиваюсь, заключается в том, что после создания исключения, когда ввод вызывает еще одну ошибку исключения, он не повторяет код, чтобы перекомпоновать пользователя для ввода.
def getTemperatures():
times=["00:00","01:00","02:00","03:00","04:00","05:00","06:00","07:00",
"08:00","09:00","10:00","11:00","12:00","13:00","14:00","15:00",
"16:00","17:00","18:00","19:00","20:00","21:00","22:00","23:00"]
hourlyTemperatures=[]*len(times)
for x in times:
print(x,"Hours")
while True:
try:
hourlyTemps=eval(input("""Please input your temperature in fahrenheit
(round to the nearest degree) for this hour:\t"""))
hourlyTemperatures.append(hourlyTemps)
print("\n")
except (NameError,SyntaxError,TypeError):
print("\n")
print("You did not input a number.")
hourlyTemps=eval(input("""Please input your temperature in fahrenheit
(round to the nearest degree) for this hour:\t"""))
hourlyTemperatures.append(hourlyTemps)
print("\n")
while hourlyTemps<-50 or hourlyTemps>130:
hourlyTemperatures.remove(hourlyTemps)
print("That is a temperature outside human habitable environments.")
hourlyTemps=eval(input("""Please input your temperature in fahrenheit
(round to the nearest degree) for this hour:\t"""))
hourlyTemperatures.append(hourlyTemps)
print("\n")
print(hourlyTemperatures)
getTemperatures()
Я попытался поместить цикл while вне цикла for, а также после try, но перед исключением, и я не могу заставить его работать.
Вот пример вывода, который я получаю при тестировании кода:
00:00 Hours
Please input your temperature in fahrenheit
(round to the nearest degree) for this hour:
You did not input a number.
Please input your temperature in fahrenheit
(round to the nearest degree) for this hour:
Traceback (most recent call last):
File "F:\3.4.3 Python Programming\CS117\Labs\Lab03\GetTemperatures.py", line 11, in getTemperatures
(round to the nearest degree) for this hour:\t"""))
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "F:\3.4.3 Python Programming\CS117\Labs\Lab03\GetTemperatures.py", line 34, in <module>
getTemperatures()
File "F:\3.4.3 Python Programming\CS117\Labs\Lab03\GetTemperatures.py", line 19, in getTemperatures
(round to the nearest degree) for this hour:\t"""))
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
Я ценю любые рекомендации, которые кто-то может предложить, как решить эту проблему.
1 ответ
Использовать else
с try
оператор, гарантирующий, что следующий код будет выполнен только в том случае, если не возникнет исключение. Также ваш код не имеет возможности выйти из while
цикл, поэтому я бы предложил добавить break
где вам нужно выйти while
цикл и продолжить с for
, Так же while
это проверяет, находится ли температура в пределах границ, в значительной степени бесполезно, как вы это выразили. В вашем коде temp добавляется в список, а затем выполняется проверка. Так что вместо этого делайте что-то вроде этого:
while True:
try:
hourlyTemps = float(input("""Please input your temperature in fahrenheit
(round to the nearest degree) for this hour:\t""")) # the eval is unneccesary, the number check is simpler
if -50 < hourlyTemps < 130:
hourlyTemperatures.append(hourlyTemps)
break
except (TypeError, ValueError):
print() # putting the \n char is also unneccesary
print("You did not input a number.")
print()
Это так просто. Пожалуйста, задавайте вопросы, если что-то не понятно. Удачи!