• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Учим Python. Часть 4(Подробно про if)

И снова всех приветствую уже в 4-ой части! Сегодня мы подробно изучим инструкции if и убъемся о кучу практики)
Не будем тратить время и приступим.

Начало с малости теории.
Давайте вспомним зачем же нужен if. Если вы читали прошлую часть, то вы помните что
Инструкция if выполняет действия при определенном условии.

И вспоминаем следующую конструкцию
Код:
if условие:
     действие 1
     действие 2
     ...

Что бы понять эту конструкцию лучше переведу ее на русский)
Код:
ЕСЛИ условие верно ТО
     Выполнить действие 1
     Выполнить еще действие

Куда понятней обьяснить не возможно. Рассмотрим на примере.

Код:
output1 = input("Завершить работу?(y/n): ")
if output1 == "y":
     exit("Пока!")
print("Программа еще работает")

Мы получаем от пользователя ответ(либо
y либо n) и сравниваем используя if.
Код:
ЕСЛИ ответ пользователя равен "y" ТО выполни
     закончить работу программы и вывести сообщение "Пока!"
Вывести сообщение "Программа еще работает"

Вот так это на русском. С простыми условиями мы разобрались. Теперь разберемся что же делать если условие ложно?
Для этого у нас есть инструкция
else. Else - выполняет действие, если условие в if - ложно. Пишется после if и выглядит сие дело так
Код:
if условие:
     действие 1
     действие 2
else:
     действие 3

Рассмотрим на простом примере фрагмента который писали ранее
Код:
output1 = input("Выйти из программы(y/n): ")
if output1 == "y":
     exit("Пока)
else:
     print("Программа еще работает")

Т.е. если пользователь вводит n, то выполнится else и мы получим такое
Код:
Выйти из программы(y/n): n
Программа еще работает

А теперь к практике использования полученых сейчас знаний)

Первая нормальная программа.
Сейчас мы напишем наконец первую нормальную программу. Данная программа будет решать квадратные уравнения.
Перед написанием программы советею вспомнить школьную информатику и составить алгоритм для программы.
Теперь вспомним и всеми любимую если не ошибаюсь алгебру
ax^2+bx+c=0

a,b,c - коэффициенты
D - дискриминант.
D = b^2(в квадрате) - 4 × a × c

x1 = (-b + корень из D) / 2 × a
x2 = (-b - корень из D) / 2 × a

Помним что, если
  • D > 0 , 2 корня
  • D = 0 , 1 корень (x = -b/(2 × a))
  • D < 0 , нет корней

А теперь к алгоритму

Код:
1. Получаем значения a, b, c
2. Находим D
3. Создаем инструкцию if
Если D > 0 то ..
Если D < 0 то ..
Если D = 0 то ..

4. Красиво выводим всю информацию.

А теперь непосредственно к написанию. Первым делом получаем данные от пользователя

Код:
import math
voln = "*"*50
print(voln)

a = input("[+] Введите a => ")
b = input("[+] Введите b => ")
с = input("[+] Введите c => ")

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

print(voln)


Тем самым получаем коэффициенты. Также в начале кода я прописал
Код:
import math
Это означает, что я добавил библиотеку с дополнительными функциями. В нашем случем математическими. Это нужно для подсчета корня. В дальнейшем мы будем создавать свои библиотеки.


Теперь посчитаем дискриминант
Код:
D = b**2 - (4*a*c)
Тут ничего сложного, а теперь перейдем к самой главной части нашего кода - инструкции if.

Код:
if D > 0:
    x1 = (-b + math.sqrt(D))/(2*a)
    x2 = (-b - math.sqrt(D))/(2*a)
    print("[!] Первый корень: ", x1)
    print("[!] Второй корень: ", x2)
else:
    if D == 0:
        x = (-b)/(2*a)
        print("[!] Корень: ", x)
    else:
        print("[!] Корней нет!")

Тут у нас получилась модель с инструкцией if вложенной в else. Как это упростить, обсудим дальше.

math.sqrt(D) - считает корень значения переменной D.

Собственно на этом программа и закончина. В итоге весь код

Код:
import math
voln = "*"*50
print(voln)

a = input("[+] Введите a => ")
b = input("[+] Введите b => ")
с = input("[+] Введите c => ")

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

print(voln)

D = b**2 - (4*a*c)

if D > 0:
    x1 = (-b + math.sqrt(D))/(2*a)
    x2 = (-b - math.sqrt(D))/(2*a)
    print("[!] Первый корень: ", x1)
    print("[!] Второй корень: ", x2)
else:
    if D == 0:
        x = (-b)/(2*a)
        print("[!] Корень: ", x)
    else:
        print("[!] Корней нет!")

В итоге получаем

Код:
**************************************************
[+] Введите a => 1
[+] Введите b => 1
[+] Введите c => -2
**************************************************
[!] Первый корень:  1.0
[!] Второй корень:  -2.0

Теперь поговорим про еще одну интереснейшую инструкцию - elif. Он выполняет действие при опрелеленном условии если if получил ложное. Сейчас все поймете
Код:
if 2 > 3:
    print(" 2 > 3")
elif 3 > 2:
    print("3 > 2")

В переводе на русский
Код:
ЕСЛИ 2 > 3 ТО
    ВЫВЕСТИ "2 > 3"
(ЕСЛИ 2 не больше 3 то выполнить следующее)
ЕСЛИ 3 > 2 ТО
    ВЫВЕСТИ "3 > 2"

И мы получаем вывод
Код:
3 > 2

А теперь друзья мои домашнее заданее)

Задание 1
Перепишите программу для решения квадратных уравнений с использованием elif.

Задание 2 *
Напишите мини бота используя знания полученые на этом уроке.

Входные данные -> любое сообщение
Output -> ответ бота на сообщение)

Задание 3
Напишите программу которая будет определять месяц по его номеру.

Код:
--------------------------------------------------------
Введите номер месяца --> 2
--------------------------------------------------------
[Месяц] -- Февраль
--------------------------------------------------------

Задание 4
Напишите программу которая будет требовать пароля от пользователя.
Будет интересней такой расклад
Код:
Введите пароль --> 228666

Пароль введен не верно!
Экстренный выход!

Задание 5
Совсем легко!
Напишите код который будет споашивать 3 возраста и определять самый большой, маленький и средний.

Хотел бы вас порадовать, в скором времени выпущю цикл статей по теме "питон для хакера".

[1] -- Часть 1
[2] -- Часть 2
[3] -- Часть 3
 

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
1
На +1 такие обзоры идут только так.Вообще,повторюсь (при выдаче репутации оговаривал это),спасибо автору,что занялся данным направлением на форуме.Этого ждали.
С другими ветками по программированию и языкам авторы тоже присутствуют.Ниша полноценно заполняется.По питону для хакера -тема также долгожданная,буду искренне рад таким обзорам.Вот она-мощь Codeby.!За задания также признателен.Это лучше,чем сканворды))
 

Xulinam

Grey Team
02.03.2017
1 015
240
BIT
69
А это небольшая памятка по Python) может кому пригодиться!
 

Вложения

  • mementopython3-russian.pdf
    172,9 КБ · Просмотры: 773
  • Нравится
Реакции: Vertigo
V

Valkiria

Первая нормальная программа.
Сейчас мы напишем наконец первую нормальную программу. Данная программа будет решать квадратные уравнения.
Что такое "квадратное уравнение" ?
[doublepost=1511739083,1511738760][/doublepost]Это шутка такая))
Возникло желание добавить в тему немного юмора )
 

Citizen0

Green Team
07.02.2017
203
228
BIT
0
Наверное, только мне интересно разбираться во всем этом. Я не питонист, но мне интересен python.
Рассмотрим на простом примере фрагмента который писали ранее
Код:
output1 = input("Выйти из программы(y/n): ")
if output1 == "y":
     exit("Пока)
else:
     print("Программа еще работает")
Пропущены двойные кавычки после слова "Пока".
ИМХО пример не очень удачный.
Если exit сработает, то весь следующий код не будет выполнен, поэтому можно написать без else
Код:
output1 = input("Выйти из программы(y/n): ")
if output1 == "y":
    exit("Пока")

print("Программа еще работает")

А теперь непосредственно к написанию. Первым делом получаем данные от пользователя
У Вас отсюда и далее по коду используется русская с ("С") вместо английской c ("СИ")
Код:
с = input("[+] Введите c => ")
В результате при запуске выбивается ошибка
Код:
NameError: name 'c' is not defined

П.С. Разбор ДЗ планируется?
 
  • Нравится
Реакции: Xulinam и Valkiria

Xulinam

Grey Team
02.03.2017
1 015
240
BIT
69
хм хотелась бы глянуть ответ на пятое задание)) а то что у меня очень длинный получается)))
 
  • Нравится
Реакции: Vertigo

vag4b0nd

Green Team
24.05.2017
303
1 472
BIT
31
Разбор Д/З!!

Задание 1.

Тут все предельно просто. Заместо конструкции else - if используем elif. Elif это и есть сокращение конструкции
Код:
if условие:
     ...
     ...
else:
     if условие:
          ...
          ...

Поэтому ответ выглядит так

Код:
import math
voln = "*"*50
print(voln)

a = input("[+] Введите a => ")
b = input("[+] Введите b => ")
с = input("[+] Введите c => ")

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

print(voln)

D = b**2 - (4*a*c)

if D > 0:
    x1 = (-b + math.sqrt(D))/(2*a)
    x2 = (-b - math.sqrt(D))/(2*a)
    print("[!] Первый корень: ", x1)
    print("[!] Второй корень: ", x2)
elif D == 0:
    x = (-b)/(2*a)
    print("[!] Корень: ", x)
elif D < 0:
    print("[!] Корней нет!")
else:
    print("[!] Что то не так было введино")

Задание 2.

Здесь, ваша программа должна получить какую-либо информацию от пользователя. Например он напишет "Привет!". Ну и вы посредством ветвления if-elif ищите нужный ответ и выполняетде действие.

Малый фрагмент

Код:
...

text = input("Ваше сообщение боту: ")
if text == "":
    print("Вы ничего не ввели!")
elif text == "Hi":
    print("Пожалуйста, по русски!")
elif text == "Привет!":
    print("Привееет)))")
    name = input("Как тебя звать? -->")

...

Задание 3.

Тут снова используем elif и по введенным данным пользователя ищем необходимый номер и выводим о нем информацию

Фрагмент
Код:
x = input("Введите номер месяца: ")
if x == "1":
    print("[Месяц] -- Январь")
elif x == "2":
    print("[Месяц] -- Февраль")

....

Задание 4.

Оно самое простое, получаем данные от пользователя и используя if сравниваем его эквивалентность с поставленым нами паролем. А дальше по фонтазии))

Задание 5.

А на счет этого задания подумайте сами)
Его решение я скину после завтра.
 
  • Нравится
Реакции: moon13 и Vertigo

Citizen0

Green Team
07.02.2017
203
228
BIT
0
хм хотелась бы глянуть ответ на пятое задание)) а то что у меня очень длинный получается)))
Для начала, если работает правильно, не имеет значения. Со временем сделаете рефакторинг своего кода.
 
  • Нравится
Реакции: Vertigo и IioS

Xulinam

Grey Team
02.03.2017
1 015
240
BIT
69
Задание 5 у меня так вышло))
Код:
Q1 = "+"*60
Q2 = "~"*60
Q3 = "-"*60
print (Q1)

a = int(input("[+] Vozrast ====> "))
b = int(input("[+] Vozrast ====> "))
c = int(input("[+] Vozrast ====> "))

print (Q1)

if a > b > c:
    print (a, b, c)
elif c > b > a:
    print (c, b, a)
elif b > c > a:
    print ( b, c, a)
elif c > a > b:
    print (c,a,b)
elif a > c > b:
    print (a, c, b)
elif b > a > c:
    print (b, a, c)
else:
    a=b=c
    print ("Vse odinakovo")
Прошу не судить строго!!!
 

vag4b0nd

Green Team
24.05.2017
303
1 472
BIT
31
Задание 5 у меня так вышло))
Код:
Q1 = "+"*60
Q2 = "~"*60
Q3 = "-"*60
print (Q1)

a = int(input("[+] Vozrast ====> "))
b = int(input("[+] Vozrast ====> "))
c = int(input("[+] Vozrast ====> "))

print (Q1)

if a > b > c:
    print (a, b, c)
elif c > b > a:
    print (c, b, a)
elif b > c > a:
    print ( b, c, a)
elif c > a > b:
    print (c,a,b)
elif a > c > b:
    print (a, c, b)
elif b > a > c:
    print (b, a, c)
else:
    a=b=c
    print ("Vse odinakovo")
Прошу не судить строго!!!


Твои ошибки:

Возьмем например следующее
Код:
a = 1
b = 2
c = 3
И это возрасты.

Ты написал
Код:
c > a > b

Думаем логически.
3 > 1 > 2

Три больше одного, но один не больше 2)
А дальше думай по аналогии.

И зачем ты присвоил a значение b а следом c?? Тем самым ты просто присвоил переменной a значение 3.

Правильно оформлена if-elif инструкция, и в начале первые несколько строчек верны. А дальше не понять) Будто ты не читал задание.
Думай)
 
  • Нравится
Реакции: Vertigo

Xulinam

Grey Team
02.03.2017
1 015
240
BIT
69
Возьмем например следующее
Код:
a = 1
b = 2
c = 3
И это возрасты.

Ты написал
Код:
c > a > b

Думаем логически.
3 > 1 > 2

Три больше одного, но один не больше 2)
А дальше думай по аналогии.

Вообщето она остановится на c>b>a
и покажет ответ 3 2 1
 
L

LadaKalina

По 5-й задаче набросал следующий код.
Если есть советы, как его можно упростить - буду рад выслушать.
Код:
# -*- code: utf- 8 -*-
Q = "~"*50
x = input("Введите первый возраст: ")
y = input("Введите второй возраст: ")
z = input("Введите третий возраст: ")
x,y,z = int(x), int(y), int(z)
if x==y==z:
    print("Все значения одинаковы: ", x)
else:
    if x > y:
        max = x
        min = y
    else:
        max = y
        min = x
    if z >= max:
        max1 = z
        sred = max
        min1 = min
    elif max >= z:
        max1 = max
        if z > min:
            sred = z
            min1 = min
        else:
            sred = min
            min1 = z
    print(Q)
    print("Максимальное: ", max1)
    if sred == max1:
        print("Среднее = Максимальному:", sred)
    elif sred == min1:
        print("Среднее = Минимальному:",sred)
    else:
        print("Среднее: ", sred)
    print("Минимальное: ", min1)
 
Последнее редактирование модератором:

Tarik

Green Team
15.01.2016
11
6
BIT
0
Вопрос.
в 3 задании я хочу зациклить программу, до того момента пока, не будет введен верний ответ

подскажите как это сделать)
 

Tarik

Green Team
15.01.2016
11
6
BIT
0

если введу любое: "13", "рфало," то цикл "неверно" не остановиться, а я хочу чтоб программа с начала пошла пока не нажмут 1-12

Python:
mesac = input("Введите номер месяца: ")

while True:

    if mesac == "1":
        print("asd")
        break
    elif mesac == "2":
        print("jsj")
        break
    elif mesac == "3":
        print("hfkl")
        break
    elif mesac == "4":
        print("uwoj")
        break
    elif mesac == "5":
        print("ndha")
        break
    elif mesac == "6":
        print("jjjj")
        break
    elif mesac == "7":
        print("jakdh")
        break
    elif mesac == "8":
        print("qyjsl")
        break
    elif mesac == "9":
        print("euejd")
        break
    elif mesac == "10":
        print("djdh")
        break
    elif mesac == "11":
        print("hdjdh")
        break
    elif mesac == "12":
        print("laksj")
        break

    else:
        print("Неверно")
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!