Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 520616

Словарь квадратных корней - Python: Решение задач

$
0
0
Уважаемые гуру. есть вопрос:
# Пользователь вводит в цикле целые положительные числа,
# пока не введет число 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

Проблема в том. что elif не работает. Т.е. словарь не создается. подскажите пожалуйста - где у меня ошибка. Спасибо.

Viewing all articles
Browse latest Browse all 520616

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>