Раздел «Язык Си».PythonLoop:

Циклы

Упражнения на range.

Пример 1. Прочитаем числа и распечатаем их

На строке даны числа через пробел. Напечатать все числа по одному числу на строку.

a = map(int, input().split())    # прочитали 1 строку, разбили ее на слова, из слов получили числа, записали их в a
for x in a:                      # для каждого элемента из a
    print(x)                     # напечатать этот элемент

x и a - переменные. Им можно дать другие имена.

Input Output
3 46 -2 18

3
46
-2
18

Задача 1. Положительные числа

Даны числа. Напечатать только положительные числа.

Input Output
3 46 -2 18

3
46
18

Задача 2. От -10 до 10

Даны числа. Напечатать только числа от -10 до 10.

Input Output
3 46 -2 18

3
-2

Задача 3. Сумма чисел

Даны числа. Найти их сумму.

Input Output
3 46 -2 18 65

Решение задачи:

# отдельная функция, которая считает и возвращает сумму чисел в последовательности
def mysum(m):
   res = 0
   for x in m:
      res = res + x
      print('x=', x, 'res=', res)
   return res

# основная программа: читаем числа и считаем их сумму
a = map(int, input().split())
print("END: res=", mysum(a))

Задача 4. Сумма отрицательных чисел

Даны числа. Найти сумму отрицательных чисел.

Input Output
-3 46 -2 18 -5

Задача 5. Сколько отрицательных чисел

Даны числа. Сколько из них отрицательных чисел?

Input Output
-3 46 -2 -18 3

Задача 6. Максимум

Даны числа. Найти самое большое число.

Input Output
-3 46 -2 18 46

Задача 7. Минимум

Даны числа. Найти самое маленькое число.

Input Output
-3 46 -2 18 -3

IDEA! Переменной можно присвоить None (ничего) значение.

x = None
if x is None:
    print("В х нет числа")

x = 5
if x is not None:
    print("х не None")

Пример 2. Есть число 5?

Даны числа. Есть ли в них число 5?

a = map(int, input().split())    # прочитали строку, разделили на слова, сделали из них числа и сохранили в а
for x in a:                      # для каждого х в этих числах
    if x == 5:                   # если x = 5
        print("Есть число 5")    # печатаем (один раз!)
        break                    # выходим из цикла (чтобы не печатать много раз)
    print(x)                     # печатаем каждый раз число х
else:                            # ТОЛЬКО если break не работал
    print("Нет числа 5")
                                 # конец цикла
                                 # сюда выйдет break

Задача 8. Капитан Флинт (целые числа)

Капитан Флинт зарыл клад на Острове сокровищ. Он оставил описание, как найти клад. Описание состоит из строк вида: "0 5", где первое число – одно из 0 (North, север), 2 (Sout, юг), 1 (East, восток), 3 (West, запад), а второе число – количество шагов, необходимое пройти в этом направлении.

Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.

Программа получает на вход последовательность строк указанного вида, завершающуюся строкой со словом "Treasure!". Программа должна вывести два целых числа: координаты клада.

Путь 5 шагов на север, 3 шага на восток, 1 шаг на юг мы запишем как:

0 5
1 3
2 1
Treasure!

Вход Выход
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
  # тут нужно дописать решение для юг, восток, запад

Пример 3. Напечатать строку по символам

Можно в цикле по символам напечатать стоку:

s = input()      # прочитать строку
for x in s:      # для каждого символа в строке s
    print(x)     # напечатать этот символ

Input Output
Hello

H
e
l
l
o

Задача 9

Дана строка. Сколько раз в строке встретилась буква z?

Input Output
azzzbz 4
z 1
Hello
ZZZ

Задача 10. Скобки for_14

Дана строка из скобок. Напечатать YES, если это правильная скобочная последовательность. Иначе напечатать NO.

Input Output
()() YES
(()()) YES
((())) YES
(() NO
()) NO
)( NO

Задача 12. for_8

Дано число N. Напечатать символ * N раз без пробелов

for i in range(4):
    print('*', end='') # end='' - не делать новую строку, не делать пробелов

Input Output
4
****
1 *

Задача 13. for_9

Даны числа M и N. Вывести символами * прямоугольник M строк на N столбцов.

Input Output
3
4
****
****
****

Задача 14. for_91

Даны числа M и N. Вывести символами * рамку M строк на N столбцов. Середину печатать пробелами.

Input Output
3
4
****
* *
****

Задача 15. Второй минимум

Даны целые числа. Найти в один проход минимум и второй минимум в этой последовательности.

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

2019 год подфак

print('***')            # напечатать *** и встать на новую строку
print('***', end='')    # напечатать *** и остаться где закончили печатать
print('')               # перейти на новую строку

Задача 12. for_8

Дано число N. Напечатать символ * N раз без пробелов

for i in range(4):
    print('*', end='') # end='' - не делать новую строку, не делать пробелов

Input Output
4
****
1 *

Задача 13. for_9

Даны числа M и N. Вывести символами * прямоугольник M строк на N столбцов.

Input Output
3
4
****
****
****

Задача 14. for_91

Даны числа M и N. Вывести символами * рамку M строк на N столбцов. Середину печатать пробелами.

Input Output
3
4
****
* *
****

Задача 15. Второй минимум

Даны целые числа. Найти в один проход минимум и второй минимум в этой последовательности.

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

Задача 13b. треугольник с равными катетами

Дано число N. Вывести символами * треугольник с катетами N строк на N столбцов.

Input Output
3 *
**
***

Задача 13c. треугольник

Даны числа M и N. Вывести символами * треугольник M строк на N столбцов.

Рекомендую изучить Алгоритм Брезенхэма

Используйте алгоритм для определения где заканчивается гипотенуза.

Текстовые задачи

Максимальное число одинаковых чисел

Дана последовательность чисел.

Определите, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.

Input Output
3 1 1 1 5 7 3
1 9 9 6 8 3 3 0 2
1 2 3

Задача. Максимальная длина монотонной последовательности

Даны числа. Определите наибольшую длину монотонного фрагмента последовательности (то есть такого фрагмента, где все элементы либо больше или равны предыдущего, либо меньше или равны).

Input Output
3 1 1 1 5 7 5
1 9 9 6 3 8 3 0 4
1 2 1 3 2

Задача. Минимальное расстояние между локальными максимумами.

Даны числа.

Найдите наименьшее расстояние (сколько чисел) между двумя локальными (строгими) максимумами.

Если локальный максимум один, то напечатайте 0.

Задача 8. Капитан Флинт (целые числа)

Капитан Флинт зарыл клад на Острове сокровищ. Он оставил описание, как найти клад. Описание состоит из строк вида: "0 5", где первое число – одно из 0 (North, север), 2 (Sout, юг), 1 (East, восток), 3 (West, запад), а второе число – количество шагов, необходимое пройти в этом направлении.

Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.

Программа получает на вход последовательность строк указанного вида, завершающуюся строкой со словом "Treasure!". Программа должна вывести два целых числа: координаты клада.

Путь 5 шагов на север, 3 шага на восток, 1 шаг на юг мы запишем как:

0 5
1 3
2 1
Treasure!

Вход Выход
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
  # тут нужно дописать решение для юг, восток, запад

Задача 17. Правильные скобки

Дана строка из скобок.

Напечатать YES, если скобки расставлены правильно и NO, если неправильно.

Input Output
(()()) YES
(() NO
(())) NO
)( NO

-- TatyanaDerbysheva - 13 Oct 2017