Python. Урок 5. Условные операторы и циклы

В этом уроке рассмотрим оператор ветвления if и операторы цикла while и for.  Основная цель – это дать общее представление об этих операторах и на простых примерах показать базовые принципы работы с ними.

Условный оператор ветвления if

Оператор ветвления if  позволяет выполнить определенный набор инструкций в зависимости от некоторого условия. Возможны следующие варианты использования.

1. Конструкция if

Синтаксис оператора if выглядит так.

if выражение:
    инструкция_1
    инструкция_2
    ...
    инструкция_n

После оператора if  записывается выражение. Если это выражение истинно, то выполняются инструкции, определяемые данным оператором. Выражение является истинным, если его результатом является число не равное нулю, непустой объект, либо логическое TrueПосле выражения нужно поставить двоеточие “:”.

ВАЖНО: блок кода, который необходимо выполнить, в случае истинности выражения, отделяется четырьмя пробелами слева!

Примеры:

if 1:
   print("hello 1")

Напечатает: hello 1

a = 3
if a == 3:
    print("hello 2")

Напечатает: hello 2

a = 3
if a > 1:
   print("hello 3")

Напечатает: hello 3

lst = [1, 2, 3]
if lst :
   print("hello 4")

Напечатает: hello 4

2. Конструкция if – else

Бывают случаи, когда необходимо предусмотреть альтернативный вариант выполнения программы. Т.е. при истинном условии нужно выполнить один набор инструкций, при ложном – другой. Для этого используется конструкция if – else.

if выражение:
    инструкция_1
    инструкция_2
    ...
    инструкция_n
else:
    инструкция_a
    инструкция_b
    ...
    инструкция_x

Примеры.

a = 3
if a > 2:
   print("H")
else:
   print("L")

Напечатает: H

a = 1
if a > 2:
   print("H")
else:
   print("L")

Напечатает: L

Условие такого вида можно записать в строчку, в таком случае оно будет представлять собой тернарное выражение.

a = 17
b = True if a > 10 else False
print(b)

В результате выполнения такого кода будет напечатано: True

3. Конструкция if – elif – else

Для реализации выбора из нескольких альтернатив можно использовать конструкцию if – elif – else.

if выражение_1:
    инструкции_(блок_1)
elif выражение_2:
    инструкции_(блок_2)
elif выражение_3:
    инструкции_(блок_3)
else:
    инструкции_(блок_4)

Пример.

a = int(input("введите число:"))
if a < 0:
   print("Neg")
elif a == 0:
   print("Zero")
else:
   print("Pos")

Если пользователь введет число меньше нуля, то будет напечатано “Neg“, равное нулю – “Zero“, большее нуля – “Pos“.

Оператор цикла while

Оператор цикла while  выполняет указанный набор инструкций до тех пор, пока условие цикла истинно. Истинность условия определяется также как и в операторе ifСинтаксис оператора while  выглядит так.

while выражение:
    инструкция_1
    инструкция_2
    ...
    инструкция_n

Выполняемый набор инструкций называется телом цикла.

Пример.

a = 0
while a < 7:
   print("A")
   a += 1

Буква “А” будет выведена семь раз в столбик.

Пример бесконечного цикла.

a = 0
while a == 0:
   print("A")

Операторы break и continue

При работе с циклами используются операторы break  и continue.

Оператор break  предназначен для досрочного прерывания работы цикла while.

Пример.

a = 0
while a >= 0:
   if a == 7:
       break
   a += 1
   print("A")

В приведенном выше коде, выход из цикла произойдет при достижении переменной a  значения 7. Если бы не было этого условия, то цикл выполнялся бы бесконечно.

Оператор continue  запускает цикл заново, при этом код, расположенный после данного оператора, не выполняется.

Пример.

a = -1
while a < 10:
   a += 1
   if a >= 7:
       continue
   print("A")

При запуске данного кода символ “А” будет напечатан 7 раз, несмотря на то, что всего будет выполнено 11 проходов цикла.

Оператор цикла for

Оператор for  выполняет указанный набор инструкций заданное количество раз, которое определяется количеством элементов в наборе.

Пример. 

for i in range(5):
   print("Hello")

В результате “Hello” будет выведено пять раз.

Внутри тела цикла можно использовать операторы break  и continue, принцип работы их точно такой же как и в операторе while.

Если у вас есть заданный список, и вы хотите выполнить над каждым элементом определенную операцию (возвести в квадрат и напечатать получившееся число), то с помощью for  такая задача решается так.

lst = [1, 3, 5, 7, 9]
for i in lst:
   print(i ** 2)

Также можно пройти по всем буквам в строке.

word_str = "Hello, world!"
for l in word_str:
   print(l)

Строка “Hello, world!” будет напечатана в столбик.

На этом закончим краткий обзор операторов ветвления и цикла.

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Книга: Pandas. Работа с данными

<<< Python. Урок 4. Арифметические операции   Python. Урок 6. Работа с IPython и Jupyter Notebook >>>

Python. Урок 5. Условные операторы и циклы: 41 комментарий

  1. Ирина

    Подскажите, пожалуйста, что делать, если знаки” == “и “!=” не выделяются отдельным цветом и, соответственно, не дают никакого результата?

        1. Максим

          Если верно понимаю, Вы не правильно записываете команду
          Получается так, что Вы говорите программе, чтобы она описала строчное значение, указанное в “”
          В данным случае, Вам нужно применить оператор if и написать:
          if name == “0”:
          print (“False”)

          Таким образом вы даете программе условие, что:

          если переменная равна значению “0” (строчному значению)
          то выводи False

  2. Иван

    Подскажите пожалуйста как добавить список в условный оператор.
    Например мне нужно написать область допустимых имён
    name=[“Иван”, “ваня”, “ванюша”]- и нужно чтобы при введении одного из этих имён срабатовала одно из действий например:
    if(name==”Иван”):
    g=1+h
    print(g)

    1. writer

      Можно вот так:
      >>> name=[“Иван”, “ваня”, “ванюша”]
      >>> if “Иван” in name:
      print(“hello!”)

      hello!

  3. Никита

    Подскажите, пожалуйста, как сделать программу которая будет находить НОК 2-х натуральных чисел. Ввыденного числа ?

    1. Илья

      def find_NOK(number1, number2):
      if number1 < number2:
      number1, number2 = number2, number1
      for x in range(number2):
      if number1*(x+1)%number2 == 0:
      return number1*(x+1)
      return number1*number2

      a, b = map (int, input().split(', '))
      print(find_NOK(a, b))

  4. Andrey

    В последнем примере:

    word_str = “Hello, world!”
    for l in word_str:
    print(l)

    это i (ай с точкой) такое после for и в скобках в print?

    1. writer

      Это l – от слова letter – буква. Хотя сейчас бы я поставил символ ‘c’ вместо нее.

  5. Pavel

    Доброго времени.
    подскажите как можно реализовать такой код?

    Если “А” имеет значение то выполнить следующее условие если “А”не имеет значение выход.
    Следующие условие, “B” имеет значение записать в таблицу 1, если нет то в таблицу 2.
    получается условие в условии.

  6. Айдар

    Помогите это простая задача из ОГЭ, но я только начал изучать Питон, пише что ошибка(SyntaxError: invalid syntax) в 5ой строке
    s=int(input())
    i=0
    b=0
    while s!=0:
    if s % 2 = 0: #ошибка тут
    i+=1
    s=int(input())
    elif s%10=3:
    b+=1
    s=int(input())
    if i>b:
    i=i-b
    print(“Четных больше, на”+str(i))
    elif b<i:
    i=b-i
    print("Оканчивающихся на 3 больше, на"+str(i))
    else:
    print("Их одинакое кол-во – "+str(i))

  7. Алекс

    Друзья, подскажите почему в этой задаче не выводится последнее четное число то бишь “26”, и как добиться того чтобы оно выводилось?
    ”’Дан диапазон чисел вывести четные”’

    a=[1,5,18,26,10]
    for i in range(1,max(a)):
    if i not in a:
    continue
    if i % 2==0:
    print(i)

    1. Jam

      Функция range генерирует все числа указанные в диапазоне не включая последнее.
      Поэтому:
      range(1, max(a) + 1)

  8. ALEKS

    Что будет выведено в результате данного сравнения: if (1>0 ? false : true) print “true” else print “false”

  9. Надыр

    Здравствуйте! Подскажите что неправильно в моем коде?
    p.s только начинаю не судите строго)))
    a=int(input(“введите число: “)
    b=int(input(“введите число: “)
    c=a%2
    f=b%2
    if c==5:
    print(“Нечетное число”)
    elif f==2:
    print(“Нечетное число”)
    else:
    print(“Bad”)

    1. Богдан

      a=int(input(“ENTER YOUR WRONG NUMBER” ))
      if a%2==0:
      print(” ЧЁТНОЕ ЧИСЛО”)
      elif a%2==1:
      print(“НЕ ЧЁТНОЕ ЧИСЛО”)
      Такой вариант по лучше

      1. Jkorty

        тоесть для тебя пробел между переменными шутка какая то

  10. Светлана

    Оператор continue запускает цикл заново, при этом код, расположенный после данного оператора, не выполняется.

    Но ведь оператор continue переходит на следующий шаг цикла, и при этом цикл продолжается, а не выполняется заново

  11. г

    Помогите, пожалуйста, решить:

    Напишите программу, которая получает три числа – рост трёх спортсменов, и выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту.

    1. Мастер

      a = int(input())
      b = int(input())
      c = int(input())

      if a < b and a < c and b < c:
      print("По росту")
      else:
      print('Не по росту')

  12. шурик

    my_list = [1, 5, 2, 7, 100, 9, 5]

    def quick_sort(arr):
    if len(arr) <= 1:
    return arr
    stand = arr[0]
    left = list(filter(lambda x:x stand , arr))
    return quick_sort(left) + center + quick_sort(right)

    print(quick_sort(my_list)) надо сделать на ооп помогите пожалуйста. Заранее большое спасибо!!!)

  13. Bukintoshka

    Здравствуйте! Выполнится ли следующее условие? Что выведется на экран?
    a = 8
    if a:
    print(a)

    1. Аноним

      Если в третье строчке есть отступ, то программа выведет 8, так как условие истинно.

    2. Гаухар

      Если в третьей строчке есть отступ, то программа напечатает 8, так как условие истинно. Иначе выдаст ошибку.

  14. Андрей

    g = int(input(2))
    while g ==2:
    if 2==2:
    print(“1”)
    continue
    elif g<0:
    print("1")
    continue
    else:
    print("2")
    что делать код не работает, мне надо чтобы мне постоянно задавало вопрос пока я не впишу 2

    1. Мастер

      Какой вопрос?
      while True:
      a = int(input())
      if a == 2:
      print(“Конец”)
      break
      else:
      print(“Какой вопрос?”)
      continue

  15. Александр

    a=input()
    if a==O:
    print(“BIR”)
    else:
    print(“JOK”)

    почему у меня код не работает?

    1. Xusen

      a = int(input(‘\n\nВведите: ‘))
      if a == 0: #Введите True: 0 | Введите Folse: 1 , 2 ….
      print(‘BIR’)
      else:
      print(‘JOK’)

  16. Наталья

    Здравствуйте, помогите решить! Сеня и Витя играют в школу магии и распределяют друзей по факультетам. В их игре факультета всего два. Для каждого из друзей они сравнивают показатель ума (x) и показатель храбрости (y). Если первый больше, друг отправляется на факультет с кодовым номером A, а если второй – на факультет с номером В.
    Даны четыре числа: x, y, A и B. Выведи А, если x больше y, или В, если y больше x.

    1. Jabrail

      Если совсем уж просто то вот так:
      x = int(input(“Введи показатель ума: “))
      y = int(input(“Введи показатель храбрости: “))

      if x > y:
      print(“A”)
      else:
      print(“B”)

      Если позволить себе чуточку пофантазировать, то я нафантазировал следующее:

      user_vvod = None
      names_A = []
      names_B = []
      x = 0
      y = 0

      print(“Сеня и Витя набирают друзей на свои факультеты”)
      print(“Заполни правильно предлагаемые поля и попади на факультет…\n”)

      while user_vvod != ‘N’:
      user_vvod = input(“Продолжим? Y/N: “)
      user_vvod = user_vvod.upper()

      if user_vvod == ‘N’:
      break
      else:
      name = input(“Введи имя: “)

      while x == 0:
      try:
      x = int(input(“Введи показатель ума: “))
      except:
      print(“Это не показатель ума…”)

      while y == 0:
      try:
      y = int(input(“Введи показатель храбрости: “))
      except:
      print(“Это не показатель храбрости…”)

      if x > y:
      names_A.append(name)
      else:
      names_B.append(name)
      user_vvod = None
      x = 0
      y = 0

      print(“\nСеня набрал следующих студентов:”)
      for i in names_A:
      print(i, end=’ ‘)
      print()
      print(“\nВитя набрал следующих студентов:\n”)
      for j in names_B:
      print(j, end=’ ‘)

  17. Jabrail

    Уважаемые администраторы! Сделайте пожалуйста так, чтобы пробелы не удалялись…

  18. svift

    Подскажите, пожалуйста как решить?
    while True:
    a = int(input(‘Зайдёте? Да/Нет: ‘))
    a =[‘Да’]
    if a ==’Да’:
    print(‘Привет!’)
    print(‘Добро пожаловать!’)
    print(‘Следующий.\n’)
    else:
    print(‘Следующий.\n’)

  19. Xusen

    ВОТ ДЕРЖИ :
    name = [‘Иван’, ‘ваня’, ‘ванюша’]
    name_= input(‘\nВведите имя: ‘)

    if name_ == name[0]:
    print(‘Добропожаловать: ‘, name_)
    elif name_ == name[1]:
    print(‘Добропожаловать: ‘, name_)
    elif name_ == name[2]:
    print(‘Добропожаловать: ‘, name_)
    else:
    print(‘Извините ‘, name_ , ‘но я вас незнаю’)

  20. Julia

    Помогите решить пожалуйста
    Определите, что выведет данная программа.
    a=0
    while a!=7
    a=a+1
    if a==5:
    continue
    print (a)

Добавить комментарий

Ваш адрес email не будет опубликован.