Почему мой код сильно избыточен?
Всем привет, хочу попросить Вас объяснить мне в чем у меня заключается ошибки и как его можно будет улучшать этот код. Вопрос был в "Задача про зерна на шахматной доске на Python. Написать цикл, который бы выводил на печать порядковый номер клетки и количество зёрен на ней до тех пор, пока количество зёрен на одной клетке не превысит 100000. Используя простые циклы. While, for. Range. Помогите, пожалуйста."
Вот код:
from math import *
sum = 0
for n in range(1, 65):
m = int(pow(2, n - 1))
print("%2d: %d" % (n, m))
if sum < 100000:
sum = sum + m
if sum > 100000:
break
print("sum = %d" % sum)
Ответы (1 шт):
А если так?
cell = 1
grains = 1
while grains < 10000:
print("%2d: %d" % (cell, grains))
grains *= 2
cell += 1
Использование степени pow здесь не требуется, приведение результата к int вообще ни к чему. Два сравнения (причём не той величины, что нужна) - излишни.
Набор суммы по условию не требуется. Кстати, использование названия встроенной функции sum нехорошо.