Помогите решить задачу по программированию Python (ломаю голову уже неделю)
Выведите чётные числа из заданного диапазона, чтобы они шли в первой строке слева направо, в следующей справа налево, и дальше продолжали чередоваться построчно.
при этом можно использовать только циклы (списки, кортежи и т.д отменяются, так же отменяются все списочные выражения и методы строк)
помогите пожалуйста
Ввод: 10
75
8 (количество чисел в строке)
Вывод: 10 12 14 16 18 20 22 24 40 38 36 34 32 30 28 26 42 44 46 48 50 52 54 56 72 70 68 66 64 62 60 58 74
Для решения задачи можно использовать два вложенных цикла: первый будет отвечать за перебор строк, а второй — за вывод чётных чисел в нужном направлении. Поскольку нельзя использовать списки и другие структуры данных, будем работать с числами напрямую.
Алгоритм решения:
Получить начальное (a) и конечное (b) значения диапазона.
Определить первое чётное число в диапазоне: если a нечётное, увеличить его на 1.
Определить шаг для перебора чётных чисел (шаг = 2).
Использовать внешний цикл для чередования направления вывода:
в первой итерации выводить числа слева направо;
во второй итерации — справа налево;
и так далее.
Внутри внешнего цикла использовать внутренний цикл для перебора и вывода чётных чисел.
Пример реализации на Python:
# Ввод данных
a, b = map(int, input().split())
# Корректируем начальное значение, если оно нечётное
if a % 2 != 0:
a += 1
# Определяем границы для вывода
start = a
end = b
step = 2
direction = 1 # 1 — слева направо, -1 — справа налево
while start <= b:
# Определяем конечное значение для текущей строки
current_end = start + 38 # 38 = 2 * 19 (19 чётных чисел по условию примера)
if current_end > b:
current_end = b
# Внутренний цикл для вывода чисел
if direction == 1:
for num in range(start, current_end + 1, step):
print(num, end=' ')
else:
for num in range(current_end, start - 1, -step):
print(num, end=' ')
print() # Переход на новую строку
# Обновляем границы для следующей строки
start = current_end + 2
direction *= -1 # Меняем направление
Пояснение:
Внешний цикл while отвечает за перебор строк.
Внутренний цикл for выводит числа в нужном направлении: слева направо или справа налево.
Переменная direction отвечает за направление вывода: 1 — слева направо, -1 — справа налево. После каждой строки направление меняется на противоположное.
Границы для каждой строки определяются так, чтобы выводить по 19 чисел (как в примере), но для последней строки учитывается ограничение конечного значения b.
Этот код выведет чётные числа из заданного диапазона, чередуя направление вывода на каждой строке, как требуется в задаче. Вы можете скорректировать количество чисел в строке (сейчас установлено 19), если это необходимо для других диапазонов.
a, b, n = int(input()), int(input()) + 1, int(input())
start, is_forward = a + (a % 2), True
for s in range(start, b, n << 1):
if is_forward:
for num in range(s, min(s + (n << 1), b), 2):
print(num, end=' ')
else:
for num in range(min(s + ((n - 1) << 1), b), s - 1, -2):
print(num, end=' ')
print()
is_forward = not is_forwardstart = 10
end = 75
per_line = 8
if start % 2 != 0:
start += 1
current = start
line_num = 1
while current <= end:
nums = ""
cnt = 0
sub_start = current
i = 0
while i < per_line and current <= end:
nums += str(current) + " "
current += 2
cnt += 1
i += 1
if line_num % 2 == 1:
idx = 0
value = ""
num = ""
while idx < len(nums):
ch = nums[idx]
if ch != " ":
num += ch
else:
value += num + " "
num = ""
idx += 1
print(value.rstrip())
else:
idx = len(nums)-1
nums = nums.rstrip()
numbers_printed = 0
num = ""
value = ""
while idx >= 0:
ch = nums[idx]
if ch != " ":
num = ch + num
else:
value += num + " "
num = ""
numbers_printed += 1
idx -= 1
if num != "":
value += num + " "
print(value.rstrip())
line_num += 1start = 10
end = 75
per_line = 8
if start % 2 != 0:
start += 1
current = start
line_num = 1
while current <= end:
nums = ""
cnt = 0
sub_start = current
i = 0
while i < per_line and current <= end:
nums += str(current) + " "
current += 2
cnt += 1
i += 1
if line_num % 2 == 1:
idx = 0
value = ""
num = ""
while idx < len(nums):
ch = nums[idx]
if ch != " ":
num += ch
else:
value += num + " "
num = ""
idx += 1
print(value.rstrip())
else:
idx = len(nums)-1
nums = nums.rstrip()
numbers_printed = 0
num = ""
value = ""
while idx >= 0:
ch = nums[idx]
if ch != " ":
num = ch + num
else:
value += num + " "
num = ""
numbers_printed += 1
idx -= 1
if num != "":
value += num + " "
print(value.rstrip())
line_num += 1
Чем помочь? Сделать на халяву и бесплатно потратить на это своё время?
а зачем тогда придуман мэил ру? почему вы вообще такой токсичный? если вы не можете помочь мне - просто пролистните, тем более я не прошу писать за меня курсовую, это обычная задача (с которой у меня сложности), но я думаю у более опытных программистов не будет с этим проблем