Уважаемые гуру. есть вопрос:
# Пользователь вводит в цикле целые положительные числа,
# пока не введет число 0. Для каждого числа вычисляется квадратный корень
# (с точностью до сотых) и значение выводится на экран (в столбик).
# С помощью словаря выполните кэширование данных так, чтобы при
# повторном вводе того же самого числа результат не вычислялся,
# а бралось ранее вычисленное значение из словаря.
# При этом на экране должно выводиться: значение из кэша: <число>
#
# Sample Input:
# 1
# 2
# 3
# 3
# 2
# 4
# 0
#
# Sample Output:
# 1.0
# 1.41
# 1.73
# значение из кэша: 1.73
# значение из кэша: 1.41
# 2.0
Сначала я решил задачу так:
Программа работает, но код мне как-то не очень понравился. Я ее переписал немного:
Проблема в том. что elif не работает. Т.е. словарь не создается. подскажите пожалуйста - где у меня ошибка. Спасибо.
# Пользователь вводит в цикле целые положительные числа,
# пока не введет число 0. Для каждого числа вычисляется квадратный корень
# (с точностью до сотых) и значение выводится на экран (в столбик).
# С помощью словаря выполните кэширование данных так, чтобы при
# повторном вводе того же самого числа результат не вычислялся,
# а бралось ранее вычисленное значение из словаря.
# При этом на экране должно выводиться: значение из кэша: <число>
#
# Sample Input:
# 1
# 2
# 3
# 3
# 2
# 4
# 0
#
# Sample Output:
# 1.0
# 1.41
# 1.73
# значение из кэша: 1.73
# значение из кэша: 1.41
# 2.0
Сначала я решил задачу так:
:
d = {}
n = 1
while n != 0:
n = int(input('Введите целое положительное число либо "0" для выхода: '))
if n not in d and n != 0:
d[n] = round(n ** 0.5, 2)
print(d[n])
elif n in d:
print('Значение из кеша:', d[n])
else:
print('Программа завершена')
break
print(n)
:
n = int(input('Введите целое положительное число либо "0" для выхода: '))
d = {}
while True:
if n not in d and n != 0:
d[n] = round(n ** 0.5, 2)
print(d[n])
elif n in d:
print('Значение из кеша:', d[n])
else:
print('Программа завершена')
break