Допоможіть будьласочка !!!!
Ответы
Відповідь:
#1-й спосіб вирішення задачі(за умовою)
def input_var(string):
while True:
try:
var = int(input(string))
return var
except ValueError:
print("Введено неправильне значення цілого числа. Будь ласка, повторіть введення.")
N = input_var("Введіть кількість рядів яблук:")
apples = 0
rows = 0
for rows in range(N):
apples+=rows+1
print("Кількість яблук в {0} рядах = {1}".format(N,apples))
#2-й спосіб - за допомогою формули
N = input_var("Введіть кількість рядів яблук:")
total_apples = (N*(N+1))//2
print("Кількість яблук в {0} рядах = {1}".format(N,total_apples))
Пояснення:
У першому способі оголошується змінна N, яка заповнюється даними користувача, потім оголошується зміна apples для загальної кількості яблук та змінна rows для проходження по циклу for у ролі лічильника. Далі у циклі for ми додаємо щоразу до загальної кількості яблук значення ряду rows+1, тим самим відтворюючи ситуацію 1-й ряд -- 1 яблуко, 2-й ряд -- 2 яблука і так далі, потім виводимо результат.
Оскільки цю задачу можна вирішити формулою, то замість підрахунку загальної кількості яблук в циклі, ми можемо уявити яблука, що складені пірамідою, як половина прямокутника зі сторонами N та N+1. Наприклад, візьмемо N = 3. Яблуки в цих 3-ох рядах можна скласти як прямокутний трикутник. Доєднавши ще один такий тпрямокутний трикутник, ми можемо утворити прямокутник 3 на 4. Відтак, 3*4 буде 12, але пам'ятаємо, що ми взяли 2 таких прямокутних трикутника, тому ділимо 12 навпіл, виходить 6. І дійсно, 1+2+3 = 6. Відтак, ми можемо вирахувати кількість яблук замість N ітерацій циклу for одним кроком, що буде набагато ефективніше.