Ошибка в коде в том, что переменная tomatoes инициализируется как n, а затем в цикле к ней ещё добавляются значения при i==j и при i>j. В итоге диагональ учитывается дважды, и сумма получается не n^2 как должно, а другая величина.
Как исправить
- Инициализируй счётчики нулями и считай диагональ и нижнюю часть в цикле без двойного учёта.
- Либо вынеси логику в одну ветку для tomatoes.
Исправленный вариант (минимальные правки, сохраняем структуру цикла):
n = int(input()) tomatoes = 0 peppers = 0 for i in range(n): for j in range(n): if i == j or i > j: tomatoes += 1 else: peppers += 1 total = tomatoes + peppers print(f"Помидоров: {tomatoes}") print(f"Перцев: {peppers}") print(f"Всего: {total}")
Пояснение
- Диагональ (i == j) и нижняя часть (i > j) вместе дают n + n(n-1)/2 = n(n+1)/2 помидоров.
- Верхняя часть (i < j) даёт n(n-1)/2 перцев.
- Всего: n(n+1)/2 + n(n-1)/2 = n^2 — квадрат, как и должно быть.
Альтернативно можно сразу посчитать по формулам (без цикла):
n = int(input()) tomatoes = n * (n + 1) // 2 peppers = n * (n - 1) // 2 total = n * n print(f"Помидоров: {tomatoes}") print(f"Перцев: {peppers}") print(f"Всего: {total}")
Примеры
- При n = 3: Помидоров 6, Перцев 3, Всего 9 (3^2).
- При n = 4: Помидоров 10, Перцев 6, Всего 16 (4^2).