• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Учим Python. Часть 2. (Типы данных, операции с переменными)

Приветствую всех во второй части! Сегодня мы вспомним и разберем до конца то что начали в прошлой части и приступим к изучению новых тем.

Типы данных.
Сегодня мы рассмотрим по подробней такие типы как:
  • строки
  • целые числа
  • числа с плавающей точкой
Строки.
Мы разобрались со строками в прошлой части. А в этой уже поработаем совместно с переменными. Как известно переменным можно постоянно изменять значения. Так например переменная str была со значением text потом мы модем задать ей другое значение
Код:
>>> str = "text"
>>> print(str)
text
>>> str = "Codeby"
>>> print(str)
Codeby

Как видим значение переменной - это строковый тип. По этому мы пишем его в кавычках. Сложение некоторых слов можно проводить опять же используя переменные
Код:
>>> oneText = "Hello"
>>> twoText = " Codeby!"
>>> print(oneText + "," + twoText)
Hello, Codeby!
Если вам сложно понять как это происходит то представьте себе когда пишете переменную то значение которое вы ей задали. При написании того кода я у себя в голове представляю примерно такое
Код:
>>> print("Hello" + "," + "Codeby")
             |                 |    
          oneText          twoText
Еще переменным можно задавать значение другой переменной или какое-либо выражение.
Код:
>>> oneText = "Text"
>>> twoText = oneText
>>> allText = oneText + " + " + twoText
>>> print(allText)
Text + Text

Теперь же давайте напишем простую программу. Она будет спрашивать пользователя его имя, фамилию, возраст и прочее. Потом красиво выведет ее в каком - либо тексте. Т.е. мы получим данные которые введет пользователь и будем передавать их в нашей "программе".

А сейчас начнем наш проект.
В IDLE Python в верхней панели переходим в File --> New file. Или же зажмите CTRL+N.
SSddw234.png

И открывается новая вкладка с IDE.

SSddw234.png

Чтобы сохранить зажмите CTRL+S. Помните что расширение *.py

Теперь я познакомлю вас с input()
Вся наша конструкция для получения вводимых пользователем данных будет выглядеть так
Код:
my_text = input(u"Введите текст:")
Текст написанный в скобках выведется на экран как бы предупреждая пользователя о том что он должен ввести какие-либо данные. И все это записывается в качестве значения переменной my_text
Начнем писать нашу простенькую программу. Чтобы постоянно не писать u перед скобками, зададим кодировку. Для этого в нашем файле первым делом пишем
Код:
# -*- code: utf- 8 -*-
И первым делом сделаем так, чтоб наша программа спрашивала у пользователя его Ф.И, возраст, пол.
Код:
# -*- code: urf- 8 -*-

name = input("Введите имя:")
fname = input("Введите фамилию:")
age = input("Введите возраст:")

Теперь красиво выведем это на экран. В дальнейшем мы будем дополнять наш код вкусняшками)

Код:
line = "~~~~~~~~~~~~~~~~~~~"
print(line)
print("[+] Имя --> " + name)
print("[+] Фамилия --> " + fname)
print("[+] Возраст --> " + age)
print(line)
print("Пока, " + name)

Также в самый конец программы добавим
Код:
input("Для закрытия программы нажми Enter")

Без этой строчки ваш код(если не открывать в idle) будет закрываться сразу же после выполнения)

И в общем получаем не большую программку
Код:
# -*- code: urf- 8 -*-

name = input("Введите имя:")
fname = input("Введите фамилию:")
age = input("Введите возраст:")

line = "~~~~~~~~~~~~~~~~~~~"
print(line)
print("[+] Имя --> " + name)
print("[+] Фамилия --> " + fname)
print("[+] Возраст --> " + age)
print(line)
print("Пока, " + name)

input("Для закрытия программы нажми Enter")
SSddw234.png

Теперь сохраним и запустим. Запустить код можно нажав на Run --> Run module. Или просто нажмите F5. После запуска получим
2345657.png

В добавок хотел сказать что в питоне можно упростить задание нескольким переменным одного значения.
Код:
>>> oneText, twoText = "This is text"
>>> print(oneText)
This is text
>>> print(twoText)
This is text

Целые числа.

С целыми числами, да и вообще с числами сейчас получится на много интересней. Так же как и строки, числа можно задать в качестве значения переменных.
Код:
>>> x = 666
print(x)
Но с ними намного интересней, так как используя переменные мы сегодня научимся упрощать математические операции. Давайте создадим новый проект и используя переменные выполним все изученные нами математические операции. Но теперь давайте спросим у пользователя числа. Перед этим я расскажу вам про операторы которые переводят из одного типа в другой.

int ()- оператор который переводит в целочисленный тип.
Код:
>>> var = "22878"
>>> var = int(var)
Как вы видите я перезаписал значение переменной используя ее в операторе и задал ей новое значение.

str() - оператор переводящий в строчный тип.
Код:
>>> var = 10101
>>> var = str(var)

float() - в основном переводит в число с плавающей точкой.
Код:
>>> var = input("Enter --> ")
Enter --> 234
>>> var = float(var)
>>> print(var)
234.0
Теперь непосредственно к написанию. Надеюсь вам понятно то, что для использования оператора, в скобках записываем своеобразный аргумент. У print это могут быть переменные, различные типы данных.

Так вот, с использованием переменных наш прошлый код получается таким
Код:
# -*- code: urf- 8 -*-

varA = input("[+] Введите первое число --> ")
varB = input("[+] Введите второе число --> ")
varA, varB = int(varA), int(varB)

a = varA + varB
b = varA - varB
c = varA * varB
d = varA / varB
e = varA ** varB
f = varA // varB
g = varA % varB

line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print(line)
print("Сложение --> ",a)
print("Вычитание --> ",b)
print("Умножение --> ",c)
print("Деление --> ",d)
print("Степень --> ",e)
print("Целая часть при делении --> ",f)
print("Остаток при делении --> ",g)
print(line)
input()
И получаем красивый вывод. Я задал значения 2 и 4.
2345657.png


В этой части мы в основном уделяли время переменным. В следующей же части темы будут уже чуть сложней. Такие темы как эта у нас будут частенько, т.к. практика! практика! и еще немного теории)

А вот и Д/З

Задание 1.
Решите задание 3 из прошлой части используя переменные.

Задание 2.
Измените последний код из этой части под тип float.

Задание 3.
Напишите программу которая решает задачи по типу данной:
У сани было 2 ботнета с 15-ю зомбированными машинами. А у лехи в сумме меньше чем у сани на x зомбированных машин. Когда они дудосили сайт дом2 выяснилось, что у них вместе 53 зомбированные машины в ботнете. Сколько машин у лехи?

Задание 4.
Напишите программу по данному скриншоту.
2345657.png

А на сегодня все!
 
Последнее редактирование:

CyberX88

Green Team
05.02.2017
122
43
BIT
0
Спасибо за отличную статью!Уроки хорошие,познавательныети занимают совсеи немного времени!
 
  • Нравится
Реакции: vag4b0nd

moeimya

Green Team
02.04.2017
36
7
BIT
0
а можно ведь было line = "~" * n (n - кол-во символов. вроде правильно написал). Или вроде line = "~"; print line * 8
 
  • Нравится
Реакции: Hadg

1984

Grey Team
08.03.2018
137
488
BIT
0
Очень поучительный цикл! Спасибо, взялся за изучение Python по Вашим урокам, мозги приятно зашевелились )))
Предложение на будущие уроки - в спойлере следующего урока давать ответ на домашнее задание предыдущего урока, я конечно всё выполнил, но было бы интересно посмотреть, если у учителя вдруг оказалось другое решение, на которое я не обратил внимания ))

Моё решение последней части ДЗ из 1 урока:
Код:
>>> x=345
>>> print x-342, x-341, x-340
3 4 5
>>> print((x-342)+(x-341)+(x-340))
12
 
  • Нравится
Реакции: unknown845 и vag4b0nd

1984

Grey Team
08.03.2018
137
488
BIT
0
Я запутался. Это для Windows?
В IDLE Python в верхней панели переходим в File --> New file. Или же зажмите CTRL+N.

Я сохранил файл с кодом 1.py
Открываю терминал, ввожу команду, мне выдаёт ошибку. Как быть?
Код:
$sudo 1.py
sudo: 1.py: command not found

P.S. решил задачу установкой IDLE
 
Последнее редактирование:

1984

Grey Team
08.03.2018
137
488
BIT
0
В терминале сначала нужно перейти в директорию с программой
cd /путь до файла/
Это я сделал
Запустить пытался так - python 1.py, не вышло.
Оказывается лишь троечку нужно было добавить) Спасибо)
 

unknown845

Green Team
26.05.2019
18
4
BIT
0
Задание 1.
Решите задание 3 из прошлой части используя переменные.
Вроде верно же :)
Python:
a = 1
slovo = 2
nu_chto = 12
d= ( a + slovo +  nu_chto)
print(a,slovo,nu_chto)
print('общяя сумма',d)

Задание 2.
Измените последний код из этой части под тип float.

Нужно просто же заменить int на float
Python:
# -*- code: urf- 8 -*-

varA = input("[+] Введите первое число --> ")
varB = input("[+] Введите второе число --> ")
varA, varB = float(varA), float(varB)

a = varA + varB
b = varA - varB
c = varA * varB
d = varA / varB
e = varA ** varB
f = varA // varB
g = varA % varB

line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print(line)
print("Сложение --> ",a)
print("Вычитание --> ",b)
print("Умножение --> ",c)
print("Деление --> ",d)
print("Степень --> ",e)
print("Целая часть при делении --> ",f)
print("Остаток при делении --> ",g)
print(line)
input()

Сильно не пинайте :) учусь только вроде верно же сделал :)

Задание 4.
Напишите программу по данному скриншоту.
30463


Python:
# -*- code: urf- 8 -*-

direc = str("/forum/")
domen = str("cobeby.net")
http = str("http")
http1 = str("http://")
url = str("URL ")
text = str("Домен --> "+domen+"\n")
text2 = str("Директория -->"+ direc+ "\n")
protocol = str("Протокол(ftp, http, https...) -->"+http)
line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print (text + text2 + protocol)
print (line)
print (url+"=",http1+domen+direc)

А с 3 заданием что то не как не могу разобратся :(
 
Последнее редактирование:
D

Dd Dd

Задание 4.
Напишите программу по данному скриншоту.
Посмотреть вложение 30463

Python:
# -*- code: urf- 8 -*-

direc = str("/forum/")
domen = str("cobeby.net")
http = str("http")
http1 = str("http://")
url = str("URL ")
text = str("Домен --> "+domen+"\n")
text2 = str("Директория -->"+ direc+ "\n")
protocol = str("Протокол(ftp, http, https...) -->"+http)
line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print (text + text2 + protocol)
print (line)
print (url+"=",http1+domen+direc)

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

Your 2B wify

Green Team
01.06.2018
96
21
BIT
0
Решите задание 3 из прошлой части используя переменные.
Решение до невозможности простое
Python:
number = int(input("Трехзначное число сюды"))
num1 = int (number / 100)
num2 = int (number / 10 - num1 * 10)
num3 = int (number - num1 * 100 - num2 * 10)
print("Первое число {}, второе {}, третье {}".format(num1,num2,num3))

direc = str("/forum/") domen = str("cobeby.net") http = str("http") http1 = str("http://") url = str("URL ")
Необязательно писать все в str(), тк str("string")="string"
 
Последнее редактирование:

AIV99

New member
02.08.2018
1
0
BIT
0
если не тяжело , поясни пожалуйста что происходит в этом коде, я залание понять не могу
Складывает текст...

У меня вот так получилось..

dm = input("Название домена: ")
dp = input("Название директории: ")
pt = input("Протокол: ")
dm, dp, pt = str(dm), str(dp), str(pt)

line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print(line)

print("[!] URL = ", pt+ "://"+ dm+ "/"+ dp+ "/")
 

Your 2B wify

Green Team
01.06.2018
96
21
BIT
0
Складывает текст...

У меня вот так получилось..

dm = input("Название домена: ")
dp = input("Название директории: ")
pt = input("Протокол: ")
dm, dp, pt = str(dm), str(dp), str(pt)

line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print(line)

print("[!] URL = ", pt+ "://"+ dm+ "/"+ dp+ "/")
Используй блоки для кода. Плюс последнюю строку лучше сделать по другому print("[!] Url={}://{}/{}/".format(pt,dm,dp))
 
  • Нравится
Реакции: AIV99

BPOH

Member
26.01.2017
10
0
BIT
0
Моё решение
Python:
line = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
print(line)
a = input("Домен --> ")
b = input("Дериктория -->")
c = input("(ftp,http,https...) -->")
print(line)
print("[!] URL = {}://{}{}/" .format(c,b,a))
 

Mytai

One Level
21.01.2020
2
2
BIT
0
Почему не использовать сепаратор?
Python:
print(line)
print("[+] Имя --> " + name)
print("[+] Фамилия --> " + fname)
print("[+] Возраст --> " + age)
print(line)
Вместо того, чтобы каждый раз писать "[+] имя..."
Хотя в принципе чего я разумничался, это-же только вторая часть.
Ещё кстати.
Числа с плавающей точкой - это не дроби. Это числа! Скорее всего они принадлежат множеству R. Int это множество Z. В чем разница? Ну в Пайтоне...дробь это fraction(a,b).
То есть рациональные числа вида p/q принадлежащие множеству Q.
Это на самом деле ньюансы, которые лучше бы понимать. Потому, что если пренебречь такими тонкостями возможны весьма трудно уловимые ошибки.
 
  • Нравится
Реакции: vag4b0nd
Мы в соцсетях:

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