Раздел «Язык Си».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

-- TatyanaDerbysheva - 13 Oct 2017