changed 5 years ago
Published Linked with GitHub

Тема 4
Циклы с заданным количеством повторений

© Яценко Р.Н., 2019-2020


1. Цикл for


Цикл с параметром for

  • Цикл for, также называемый циклом со счетчиком, в языке Python богат возможностями
  • В цикле for указывается переменная и множество значений, которое будет принимать переменная
  • Множество значений может быть задано списком, строкой или диапазоном (например, от 1 до 10)

Синтаксис цикла for

for item in list:
    Тело цикла
[else:
    Выражение]
  • item параметр цикла
  • list имя последовательности (например, списка) или вызов функции range()

Пример 1. Цвета радуги

i = 1
# заголовок цикла
for color in 'red', 'orange', 'yellow', 'green', 
             'cyan', 'blue', 'violet':
    # тело цикла
    print('#', i, ' color of rainbow is ', color, sep = '')
    i += 1


Пример 2. Список значений

for i in 1, 2, 3, 'one', 'two', 'three':
    print(i)
1
2
3
one
two
three

2. Функция range


Заданное число раз

  • Как правило, циклы for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного

  • Для повторения цикла некоторое заданное число n раз можно использовать цикл for вместе с функцией range


Пример 3. Функция range

for i in range(4):  # равносильно инструкции for i in 0, 1, 2, 3:
    # здесь можно выполнять циклические действия
    print(i)
    print(i ** 2)
# цикл закончился, поскольку закончился блок с отступом


Диапазон значений

  • Функция range может также принимать не один, а два параметра

  • Вызов range(a, b) означает, что индексная переменная (счетчик) будеть принимать значения от a до b - 1:

    • первый параметр функции range задает начальное значение счетчика
    • второй параметр — первое значение, которое счетчик принимать не будет

Пример 4. Сумма чисел от 1 до n

sum = 0
n = 5
for i in range(1, n + 1):
    sum += i
print(sum)


Цикл с заданным шагом

Чтобы организовать цикл, в котором счетчик будет изменяться на заданный шаг, необходимо использовать третий параметр функции range величину изменения счетчика

range(начальное значение, конечное значение + 1, шаг)

Примеры циклов с заданным шагом

  • Цикл по всем числам от 100 до 1

    range(100, 0, -1)

  • Цикл по всем нечетным числам от 1 до 99

    range(1, 100, 2)


Пример 5. Использование функции range

print("Посчитаем:")
for i in range(10):
    print(i, end=" ")
    
print("Перечисли кратные пяти:")
for i in range(0, 50, 5):
    print(i, end=" ")
    
print("Посчитаем в обратном порядке:")
for i in range(10, 0, -1):
    print(i, end=" ")
Посчитаем:
0 1 2 3 4 5 6 7 8 9 
Перечисли кратные пяти:
0 5 10 15 20 25 30 35 40 45 
Посчитаем в обратном порядке:
10 9 8 7 6 5 4 3 2 1 

Пример 6. Создать последовательность нечетных чисел от 1 до n, включительно, если n нечетное

n = int(input('n = '))
for j in range(1, n, 2):
    print(j, end=' ')
else:
    if n % 2:
        print(n)


3. Случайные числа


Импорт модуля random

Модули это библиотеки, содержащие код, пригодный для использования в других программах. Так, модуль random содержит функции, связанные с генерацией случайных чисел и получением случайных результатов

В начале программы пишем

import random 

Случайное число

Функция random.randint(a, b) возвращает случайное целое число от a до b :

# случайное число от 1 до 10
x = random.randint(1, 10) 

Пример 7. Кости

import random

# создаем случайные числа из диапазона 1 - 6
die1 = random.randint(1, 6) 
die2 = random.randint(1, 6) 

total = die1 + die2

print("При вашем броске выпало", die1, "и", die2, "очков")
print("В сумме", total)


4. Циклы for вложенные друг в друга


Вложенные циклы

  • Циклы for могут быть вложенными друг в друга

  • Глубина вложенности может быть сколько угодно большая, но допускать этого не следует, поскольку с увеличением глубины вложенности сложность программы возрастает и она становится плохо читаема


Пример 8. Таблица Пифагора

for j in range(1, 11):
    for k in range(1, 11):
        print('%4d' % (j * k), end='')
    print()
   1   2   3   4   5   6   7   8   9  10
   2   4   6   8  10  12  14  16  18  20
   3   6   9  12  15  18  21  24  27  30
   4   8  12  16  20  24  28  32  36  40
   5  10  15  20  25  30  35  40  45  50
   6  12  18  24  30  36  42  48  54  60
   7  14  21  28  35  42  49  56  63  70
   8  16  24  32  40  48  56  64  72  80
   9  18  27  36  45  54  63  72  81  90
  10  20  30  40  50  60  70  80  90 100

Пример 9. Уравнение

Дано целое n. Вывести все тройки чисел \(x\), \(y\) и \(z\) для которых \(x^2+y^2+z^2=n\)

from math import sqrt
n = int(input('n = ')) # n = 99
m = int(sqrt(n)) + 1
for x in range(m):
    for y in range(x, m):
        for z in range(y, m):
            if x * x + y * y + z * z == n:
                print('%4d%4d%4d' % (x, y, z))


Спасибо за внимание!

© Яценко Р.Н., 2019-2020

Select a repo