Однопроходные алгоритмы: задачи
TODO: сделать задачи с автоматической проверкой. Указать в заголовках задач короткие названия этих задач.
range1
Скопируйте код. Вместо ??? вставьте такие аргументы фукнции range, чтобы были напечатаны числа как в комментарии.
# 0 1 2 3 4 5 6 7 8 9
for x in range(10):
print(x, end=' ')
print()
# 1 3 5 7 9
for x in range(???):
print(x, end=' ')
print()
# 1 6 11 16
for x in range(???):
print(x, end=' ')
print()
# 9 8 7 6 5 4 3 2 1 0
for x in range(???):
print(x, end=' ')
print()
# 20 16 12 8 4
for x in range(???):
print(x, end=' ')
print()
Вывод:
0 1 2 3 4 5 6 7 8 9
1 3 5 7 9
1 6 11 16
9 8 7 6 5 4 3 2 1 0
20 16 12 8 4
range2
Даны целые числа k и n (по 1 числу на строке). Напечатайте числа от k до n с шагом 4. То есть если k=1, n=20, то напечатать 1 5 9 13 17
Input | Output |
---|---|
1 20 |
1 5 9 13 17 |
1 9 |
1 5 9 |
20 1 |
20 16 12 8 4 |
Пример - напечатать все числа
На строке даны целые числа через пробел. Напечатать все числа по одному числу на строку.
a = map(int, input().split()) # прочитали 1 строку, разбили ее на слова, из слов получили числа, записали их в a
for x in a: # для каждого элемента из a
print(x) # напечатать этот элемент
a
и x
- переменные. Им можно дать другие имена.
Input | Output |
---|---|
3 46 -2 18 | 3 46 -2 18 |
Положительные числа
Даны целые числа. Напечатать из них только положительные числа.
Input | Output |
---|---|
3 46 -2 18 | 3 46 -2 18 |
От -10 до 10
Даные целые числа. Напечатать только те числа, что лежат от -10 до 10 (включая).
Input | Output |
---|---|
3 46 -2 18 | 3 -2 |
100 -10 0 10 -99 | -10 0 10 |
Пример - сумма чисел
Даны целые числа. Найти их сумму.
Input | Output |
---|---|
3 46 -2 18 | 65 |
Сумма четных чисел
Даны целые числа. Найти сумму четных чисел.
Input | Output |
---|---|
3 46 -2 5 18 | 62 |
46 + (-2) + 18 = 62
Сколько отрицательных чисел.
Даны целые числа. Сколько их них отрицательных чисел?
Input | Output |
---|---|
-3 46 -2 -18 | 3 |
Минимум
В задачу вставить пример максимума через None и через next.
Даны числа. Найти самое маленькое число.
Input | Output |
---|---|
-3 46 -2 18 | -3 |
Капитан Флинт (целые числа)
Капитан Флинт зарыл клад на Острове сокровищ. Он оставил описание, как найти клад. Описание состоит из строк вида: "0 5", где первое число – одно из 0 (North, север), 2 (Sout, юг), 1 (East, восток), 3 (West, запад), а второе число – количество шагов, необходимое пройти в этом направлении.
Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.
Программа получает на вход последовательность строк указанного вида, завершающуюся строкой со словом "Treasure!". Программа должна вывести два целых числа: координаты клада.
Путь 5 шагов на север, 3 шага на восток, 1 шаг на юг мы запишем как:
0 5
1 3
2 1
Treasure!
Input | Output |
---|---|
0 5 1 3 2 1 Treasure! |
3 4 |
x = 0
y = 0
while True :
# прочитали одну строку в line
line = input()
# если Treasure! надо напечатать координаты и остановиться
if line == 'Treasure!' :
print(x, y)
break
# line разбили на части и каждую часть сделали int
direction, d = map(int, line.split())
if direction == 0 : # север
y = y + d
# тут нужно дописать решение для юг, восток, запад
Пример - напечатать строку по 1 символу
s = input() # прочитать строку
for x in s: # для каждого символа в строке s
print(x) # напечатать этот символ
# Input:
# Hello
# Output:
# H
# e
# e
# l
# o
Сколько раз встретилась z
Дана строка. Сколько раз в ней встретилась буква z?
Input | Output |
---|---|
azzzbz | 4 |
z | 1 |
Hello | 0 |
ZZZ | 0 |
for_14 - Скобки-1
Дана строка из скобок. Напечатать YES, если это правильная скобочная последовательность. Иначе напечатать NO.
Input | Output |
---|---|
()() | YES |
(()()) | YES |
((())) | YES |
(() | NO |
()) | NO |
)( | NO |
for_8 Строка из *
Дано натуральное число N. Напечатать символ * N раз без пробелов.
Код, который печатает 4 символа:
for i in range(4):
print('*', end='') # end='' - не делать новую строку, не делать пробелов
Input | Output |
---|---|
4 | **** |
for_9 Прямоугольник из *
Даны натуральные числа M и N. Вывести символами * прямоугольник M строк на N столбцов.
Input | Output |
---|---|
3 4 |
**** **** **** |
for_91 Прямоугольник из *
Даны натуральные числа M и N. Вывести символами * рамку M строк на N столбцов.
Input | Output |
---|---|
3 4 |
**** * * **** |
Двойной минимум
Даны целые числа (2 или более). Найти в один проход минимум и второй минимум в этой последовательности.
Input | Output |
---|---|
3 -5 7 1 0 10 | -5 0 |
3 5 7 1 -1 10 | -1 1 |
3 5 7 1 13 10 | 1 3 |
3 5 7 1 13 1 | 1 1 |