Просим прощения за огромную паузу между уроками, теперь уроки будут намного чаще, до 2-3 раз в неделю 🔥
УРОК №8 -
Если переменных в памяти потребуется слишком большое количество, которое не сможет вместить в себя сама аппаратная часть, произойдет перегрузка системы или её зависание.
Если мы объявляем переменные статично, так как мы делали в предыдущих уроках, они остаются в памяти до того момента, как программа завершит свою работу, а после чего уничтожаются.
Такой подход может быть приемлем в простых примерах и несложных программах, которые не требуют большого количества ресурсов. Если же наш проект является огромным программным комплексом с высоким функционалом, объявлять таким образом переменные, естественно, было бы довольно не умно.
Можете себе представить, если бы небезызвестная Battlefield 3 использовала такой метод работы с данными? В таком случае, самым заядлым геймерам пришлось бы перезагружать свои высоконагруженные системы кнопкой reset после нескольких секунд работы игры.
Дело в том, что играя в тот же Battlefield, геймер в каждый новый момент времени видит различные объекты на экране монитора, например сейчас я стреляю во врага, а через долю секунды он уже падает убитым, создавая вокруг себя множество спецэффектов, таких как пыль, тени, и т.п.
Естественно, все это занимает какое-то место в оперативной памяти компьютера. Если не уничтожать неиспользуемые объекты, очень скоро они заполнят весь объем ресурсов ПК.
По этим причинам, в большинстве языков, в том числе и
Мы можем обращаться, например к массиву данных через указатель, который будет содержать адрес начала диапазона ячеек памяти, хранящих этот массив.
После того, как этот массив станет не нужен для выполнения остальной части программы, мы просто освободим память по адресу этого указателя, и она вновь станет доступно для других переменных.
Ниже приведен конкретный пример обращения к переменным через указатель и напрямую.
Пример использования статических переменных
Выделение памяти осуществляется с помощью оператора new и имеет вид: тип_данных *имя_указателя = new тип_данных;, например
Логично предположить, что для разных типов данных выделяется разное количество памяти. Следует быть особенно осторожным при работе с памятью, потому что именно ошибки программы, вызванные утечкой памяти, являются одними из самых трудно находимых. На отладку программы в поисках одной ничтожной ошибки, может уйти час, день, неделя, в зависимости от упорности разработчика и объема кода.
Инициализация значения, находящегося по адресу указателя выполняется схожим образом, только в конце ставятся круглые скобки с нужным значением: тип данных *имя_указателя = new тип_данных(значение). В нашем примере это
Для того, чтобы получить адрес в памяти, на который ссылается указатель, используется имя переменной-указателя с префиксом
УРОК №8 -
Указатели
При выполнении любой программы, все необходимые для ее работы данные должныбыть загружены в оперативную память компьютера. Для обращения к переменным, находящимся в памяти, используются специальные адреса, которые записываются в шестнадцатеричном виде, например 0x100
или 0x200
.Если переменных в памяти потребуется слишком большое количество, которое не сможет вместить в себя сама аппаратная часть, произойдет перегрузка системы или её зависание.
Если мы объявляем переменные статично, так как мы делали в предыдущих уроках, они остаются в памяти до того момента, как программа завершит свою работу, а после чего уничтожаются.
Такой подход может быть приемлем в простых примерах и несложных программах, которые не требуют большого количества ресурсов. Если же наш проект является огромным программным комплексом с высоким функционалом, объявлять таким образом переменные, естественно, было бы довольно не умно.
Можете себе представить, если бы небезызвестная Battlefield 3 использовала такой метод работы с данными? В таком случае, самым заядлым геймерам пришлось бы перезагружать свои высоконагруженные системы кнопкой reset после нескольких секунд работы игры.
Дело в том, что играя в тот же Battlefield, геймер в каждый новый момент времени видит различные объекты на экране монитора, например сейчас я стреляю во врага, а через долю секунды он уже падает убитым, создавая вокруг себя множество спецэффектов, таких как пыль, тени, и т.п.
Естественно, все это занимает какое-то место в оперативной памяти компьютера. Если не уничтожать неиспользуемые объекты, очень скоро они заполнят весь объем ресурсов ПК.
По этим причинам, в большинстве языков, в том числе и
C/C++
, имеется понятие указателя. Указатель — это переменная, хранящая в себе адрес ячейки оперативной памяти, например 0x100
.Мы можем обращаться, например к массиву данных через указатель, который будет содержать адрес начала диапазона ячеек памяти, хранящих этот массив.
После того, как этот массив станет не нужен для выполнения остальной части программы, мы просто освободим память по адресу этого указателя, и она вновь станет доступно для других переменных.
Ниже приведен конкретный пример обращения к переменным через указатель и напрямую.
Пример использования статических переменных
int a; // Объявление статической переменнойПример использования динамических переменных
int b = 5; // Инициализация статической переменной b
a = 10;
b = a + b;
cout << "b is " << b << endl;
int *a = new int; // Объявление указателя для переменной типа int
int *b = new int(5); // Инициализация указателя
*a = 10;
*b = *a + *b;
cout << "b is " << *b << endl;
delete b;
delete a;
Рассмотрим общий синтаксис указателей в C++.Выделение памяти осуществляется с помощью оператора new и имеет вид: тип_данных *имя_указателя = new тип_данных;, например
int *a = new int;
. После удачного выполнения такой операции, в оперативной памяти компьютера происходит выделение диапазона ячеек, необходимого для хранения переменной типа int.Логично предположить, что для разных типов данных выделяется разное количество памяти. Следует быть особенно осторожным при работе с памятью, потому что именно ошибки программы, вызванные утечкой памяти, являются одними из самых трудно находимых. На отладку программы в поисках одной ничтожной ошибки, может уйти час, день, неделя, в зависимости от упорности разработчика и объема кода.
Инициализация значения, находящегося по адресу указателя выполняется схожим образом, только в конце ставятся круглые скобки с нужным значением: тип данных *имя_указателя = new тип_данных(значение). В нашем примере это
int *b = new int(5)
.Для того, чтобы получить адрес в памяти, на который ссылается указатель, используется имя переменной-указателя с префиксом
&
. перед ним (не путать со знаком ссылки в C++).ProgrammingFA via @like
Например, чтобы вывести на экран адрес ячейки памяти, на который ссылается указатель b во втором примере, мы пишем
Для того, чтобы получить значение, которое находится по адресу, на который ссылается указатель, используется префикс
Во втором примере мы выводим на экран значение, которое находится в ячейке памяти (у меня это
Чтобы изменить значение, находящееся по адресу, на который ссылается указатель, нужно также использовать звездочку, например, как во втором примере —
- Когда мы оперируем данными, то используем знак
Для того, чтобы освободить память, выделенную оператором
При использовании оператора delete для указателя, знак
cout << "Address of b is " << &b << endl;
. В моей системе, я получил значение 0x1aba030
. У вас оно может быть другим, потому что адреса в оперативной памяти распределяются таким образом, чтобы максимально уменьшить фрагментацию. Поскольку, в любой системе список запущенных процессов, а также объем и разрядность памяти могут отличаться, система сама распределяет данные для обеспечения минимальной фрагментации.Для того, чтобы получить значение, которое находится по адресу, на который ссылается указатель, используется префикс
*
. Данная операция называется разыменованием указателя.Во втором примере мы выводим на экран значение, которое находится в ячейке памяти (у меня это
0x1aba030
): cout << "b is " << *b << endl;
. В этом случае необходимо использовать знак *
.Чтобы изменить значение, находящееся по адресу, на который ссылается указатель, нужно также использовать звездочку, например, как во втором примере —
*b = *a + *b;
.- Когда мы оперируем данными, то используем знак
*
- Когда мы оперируем адресами, то используем знак &
В этих вещах очень часто возникают недопонимания, и кстати, не только у новичков. Многие из тех, кто начинал программировать с того же php, также часто испытывают подобную путаницу при работе с памятью.Для того, чтобы освободить память, выделенную оператором
new
, используется оператор delete
.При использовании оператора delete для указателя, знак
*
не используется.Домашняя работа
1) Реализовать функцию которая выводит строку в обрятном порядке, пример "hello" -> "olleh". Oбъявление функции которую нужно реализовать:
3) Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50. Показать его на экран. Для заполнения и показа на экран написать отдельные функции. (подсказка: функции должны принимать три параметра – указатель на динамический массив, количество строк, количество столбцов). Количество строк и столбцов выбирает пользователь.
Присылайте домашнее задание в наш чат @ProgrammingFAchat
1) Реализовать функцию которая выводит строку в обрятном порядке, пример "hello" -> "olleh". Oбъявление функции которую нужно реализовать:
void str_rev(char* str);
2) Объявите указатель на массив типа double и предложите пользователю выбрать его размер. Далее напишите четыре функции: первая должна выделить память для массива, вторая – заполнить ячейки данными, третья – показать данные на экран, четвертая – освободить занимаемую память. Программа должна предлагать пользователю продолжать работу (создавать новые динамические массивы ) или выйти из программы.3) Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50. Показать его на экран. Для заполнения и показа на экран написать отдельные функции. (подсказка: функции должны принимать три параметра – указатель на динамический массив, количество строк, количество столбцов). Количество строк и столбцов выбирает пользователь.
Присылайте домашнее задание в наш чат @ProgrammingFAchat
Грядет перезагрузка!
Мы, долго думая, решили перезапустить канал с новым контентом. Исходя из того, что очень много людей писали с просьбой сделать контент про Python, именно он и станет главной темой этого канала. Также мы планируем добавить новые интересные рубрики, которые будут покрывать самые различные темы в сфере программирования и не только.
Мы, долго думая, решили перезапустить канал с новым контентом. Исходя из того, что очень много людей писали с просьбой сделать контент про Python, именно он и станет главной темой этого канала. Также мы планируем добавить новые интересные рубрики, которые будут покрывать самые различные темы в сфере программирования и не только.
Оставайтесь с нами!
Какой из данных методик уроков вы предпочитаете?
Anonymous Poll
79%
Детальные последовательные уроки с азов языка Python
20%
Освещение главных тем и наиболее интересных моментов в изучении языка
2%
Предлагаю свой вариант
Python!
Язык Python является, пожалуй, самым простым в изучении и самым приятным в использовании из языков программирования, получивших широкое распространение. Программный код на языке Python легко читать и писать, и, будучи лаконичным, он не выглядит загадочным.
Python - очень выразительный язык, позволяющий уместить приложение в меньшее количество строк, чем на это потребовалось бы в других языках, таких как C++ или Java.
Python является кросс-платформенным языком: обычно одна и та же программа на языке Python может запускаться и в Windows, и в UNIX-подобных системах, таких как Linux, BSD и Mac OS, для чего достаточно просто скопировать файл или файлы, составляющие программу, на нужный компьютер; при этом даже не потребуется выполнять «сборку», или компилирование программы. Конечно, можно написать на языке Python программу, которая будет использовать некоторые характерные особенности конкретной операционной системы, но такая необходимость возникает крайне редко, т. к. практически вся стандартная библиотека языка Python и большинство библиотек сторонних производителей обеспечивают полную кросс-платформенность.
Одним из основных преимуществ языка Python является наличие полной стандартной библиотеки, позволяющей обеспечить загрузку файла из Интернета, распаковку архива или создание веб-сервера посредством написания нескольких строк программного кода. В дополнение к ней существуют тысячи дополнительных библиотек сторонних производителей, среди которых одни обеспечивают более сложные и более мощные возможности, чем стандартная - например, библиотека для организации сетевых взаимодействий
Python может использоваться для программирования в процедурном, в объектно-ориентированном и, в меньшей степени, в функциональном стиле программирования, хотя в глубине души Python - объектно-ориентированный язык программирования.
Применение Python
Существует множество областей применения Python, но в некоторых он особенно хорош. Таким образом, можно выделить 4 самых популярных направления применения Python:
- веб-разработка;
- data science: анализ данных и визуализация;
- машинное обучение;
- автоматизация процессов.
Кому интересно, подробнее о применении Python читайте здесь:
https://proglib.io/p/python-applications/
Обсуждаем пройденное в чате:
@ProgrammingFAchat
Язык Python является, пожалуй, самым простым в изучении и самым приятным в использовании из языков программирования, получивших широкое распространение. Программный код на языке Python легко читать и писать, и, будучи лаконичным, он не выглядит загадочным.
Python - очень выразительный язык, позволяющий уместить приложение в меньшее количество строк, чем на это потребовалось бы в других языках, таких как C++ или Java.
Python является кросс-платформенным языком: обычно одна и та же программа на языке Python может запускаться и в Windows, и в UNIX-подобных системах, таких как Linux, BSD и Mac OS, для чего достаточно просто скопировать файл или файлы, составляющие программу, на нужный компьютер; при этом даже не потребуется выполнять «сборку», или компилирование программы. Конечно, можно написать на языке Python программу, которая будет использовать некоторые характерные особенности конкретной операционной системы, но такая необходимость возникает крайне редко, т. к. практически вся стандартная библиотека языка Python и большинство библиотек сторонних производителей обеспечивают полную кросс-платформенность.
Одним из основных преимуществ языка Python является наличие полной стандартной библиотеки, позволяющей обеспечить загрузку файла из Интернета, распаковку архива или создание веб-сервера посредством написания нескольких строк программного кода. В дополнение к ней существуют тысячи дополнительных библиотек сторонних производителей, среди которых одни обеспечивают более сложные и более мощные возможности, чем стандартная - например, библиотека для организации сетевых взаимодействий
Twisted
и библиотека для решения вычислительных задач NumPy
; а другие предоставляют функциональность, которая слишком узконаправленно специализирована, чтобы ее можно было включить в стандартную библиотеку - например, пакет моделирования SimPy
.Python может использоваться для программирования в процедурном, в объектно-ориентированном и, в меньшей степени, в функциональном стиле программирования, хотя в глубине души Python - объектно-ориентированный язык программирования.
Применение Python
Существует множество областей применения Python, но в некоторых он особенно хорош. Таким образом, можно выделить 4 самых популярных направления применения Python:
- веб-разработка;
- data science: анализ данных и визуализация;
- машинное обучение;
- автоматизация процессов.
Кому интересно, подробнее о применении Python читайте здесь:
https://proglib.io/p/python-applications/
Обсуждаем пройденное в чате:
@ProgrammingFAchat
Библиотека программиста
3 самых важных сферы применения Python: возможности языка
Существует множество областей применения Python, но в некоторых он особенно хорош. Разбираемся, что же можно делать на этом ЯП.
А сегодня мы установим интерпретатор Python и попробуем написать нашу первую программу.
Windows:
Скачивать Python для Windows будем с официального сайта:
https://www.python.org/downloads/windows/
Под заголовком страницы следуют 2 ссылки - последний стабильный релиз для python2 и python3. Этот курс включает в себя изучение python3, именно третьей версии, не второй. Следовательно, мы и выбираем её.
После перехода по ссылке скачайте:
- Windows x86-64 executable installer (если у вас 64-разрядная система);
- Windows x86 executable installer (если система 32-разрядная).
После скачивания файла, запустите его и следуйте инструкциям установщика.
IDLE Python3 доступно теперь из пуска windows!
* IDLE (Integrated Development and Learning Environment) — это интегрированная среда разработки и обучения на языке Python.
Linux:
Для пользователей linux вся установка сводится к установке пакета python3.
Для ubuntu/debian:
Как и для linux, установка одной командой:
Пользователи Windows открывают Python3 IDLE из меню Пуск, а пользователи linux и macOS вводят в терминале
😱🎉🎊
Поздравляю! Только что Вы написали свою первую программу на Python3!
Поделитесь первой программой в чате:
@ProgrammingFAchat
Windows:
Скачивать Python для Windows будем с официального сайта:
https://www.python.org/downloads/windows/
Под заголовком страницы следуют 2 ссылки - последний стабильный релиз для python2 и python3. Этот курс включает в себя изучение python3, именно третьей версии, не второй. Следовательно, мы и выбираем её.
После перехода по ссылке скачайте:
- Windows x86-64 executable installer (если у вас 64-разрядная система);
- Windows x86 executable installer (если система 32-разрядная).
После скачивания файла, запустите его и следуйте инструкциям установщика.
IDLE Python3 доступно теперь из пуска windows!
* IDLE (Integrated Development and Learning Environment) — это интегрированная среда разработки и обучения на языке Python.
Linux:
Для пользователей linux вся установка сводится к установке пакета python3.
Для ubuntu/debian:
apt install python3Для arch:
pacman -S python3Для centOS:
yum install epel-release python36MacOS:
Как и для linux, установка одной командой:
brew install python3Написание первой программы
Пользователи Windows открывают Python3 IDLE из меню Пуск, а пользователи linux и macOS вводят в терминале
python3И после приглашения к вводу:
>>>Введите следующий текст и нажмите Enter:
print("Hello, world!")Hello, world!
😱🎉🎊
Поздравляю! Только что Вы написали свою первую программу на Python3!
Поделитесь первой программой в чате:
@ProgrammingFAchat
Python.org
Python Releases for Windows
The official home of the Python Programming Language
Мы хотели бы оценить средний уровень знаний нашей аудитории. Это поможет нам создавать более качественный контент для Вас
Anonymous Poll
65%
Я начинающий
29%
Я любитель
6%
Я продвинутый
0%
Свой вариант в чате
Так что же такое интерпретация?
Интерпретация — построчный анализ, обработка и выполнение исходного кода программы или запроса (в отличие от компиляции, где весь текст программы, перед запуском, анализируется и транслируется в машинный или байт-код, без её выполнения).
Хорошо, поняли. Что дальше?
Дальше есть два способа запуска своих програм и первый из них - писать в самом IDLE, либо использую команду:
Windows:
Как мы поняли из предыдущего урока,
Функция - это определнный фрагмент кода, который имеет идентификатор или имя и к которому можно обратиться из другого места программы.
Аргумент - это то, что мы передаем в функцию для выполнения определенных операций. И в следующей строке:
По умолчанию
Аргументом функции
Вывод: 10
И так далее. Таким образом, у вас есть возможность выполнять любые математические операции.
Интерпретация — построчный анализ, обработка и выполнение исходного кода программы или запроса (в отличие от компиляции, где весь текст программы, перед запуском, анализируется и транслируется в машинный или байт-код, без её выполнения).
Хорошо, поняли. Что дальше?
Дальше есть два способа запуска своих програм и первый из них - писать в самом IDLE, либо использую команду:
Windows:
py <путь к файлу с кодом>
Например, ваша программа находится в диске D:py
D:\my_code.py
Linux:python3 <путь к файлу с кодом>
Mac:python <путь к файлу с кодом>
Мы разобрались с запуском программы, теперь изучим простейшие математические операции, которые возможно применять в Python.Как мы поняли из предыдущего урока,
print()
это функция Python, которая отвечает за вывод заданного аргумента на консоль. Функция - это определнный фрагмент кода, который имеет идентификатор или имя и к которому можно обратиться из другого места программы.
Аргумент - это то, что мы передаем в функцию для выполнения определенных операций. И в следующей строке:
print("I love Python")
Строка "I love Python" является аргументом, переданным в функцию print()
.По умолчанию
print()
переносит каждый раз курсор консоли на новую строку и чтобы избежать этого вы можете определить аргумент end
, как пустой. print("I love Python", end='')
print(", but I hate PHP")
Результат: I love Python, but I hate PHPАргументом функции
print()
может быть не только строка. print(5+5)
Вывод: 10
print(6*7)
Вывод: 42print(30-2)Вывод: 28
print(10/2)Вывод: 5
print(2**4)Вывод: 16
И так далее. Таким образом, у вас есть возможность выполнять любые математические операции.
#sammelsurium
По итогам голосования ~40% аудитории этого канала уже не новички, а потому, чтобы скрасить ваше ожидание нового и полезного материала по основной тематике канала, вводится рубрика #sammelsurium, где будет выкладываться всякая интересная и полезная всячина
А сегодня мы познакомися с бесподобной Джулией Эванс. Ее книжки видел каждый из вас хоть раз в жизни. Автор комиксов, пособий, мемов, а так же специалист высшего класса. Под постом я опубликую одну из ее книженций, а перейдя по ссылке (https://firstvds.ru/blog/julia_evans), можно ознакомиться со всем переведенным на русский язык творчеством
По итогам голосования ~40% аудитории этого канала уже не новички, а потому, чтобы скрасить ваше ожидание нового и полезного материала по основной тематике канала, вводится рубрика #sammelsurium, где будет выкладываться всякая интересная и полезная всячина
А сегодня мы познакомися с бесподобной Джулией Эванс. Ее книжки видел каждый из вас хоть раз в жизни. Автор комиксов, пособий, мемов, а так же специалист высшего класса. Под постом я опубликую одну из ее книженций, а перейдя по ссылке (https://firstvds.ru/blog/julia_evans), можно ознакомиться со всем переведенным на русский язык творчеством
FirstVDS
Комиксы про администрирование от Джулии Эванс | FirstVDS
Комиксы Джулии Эванс — это как занимательное администрирование в картинках. Ведь Джулия — крутой программист и не менее крутой художник (со своим стилем, конечно). Мы Джулией восхищаемся — поэтому переводим её журналы и подборки слайдов. Создали отдельную…
В этом уроке мы ознакомимся с типами данных, переменнами и функцией ввода данных.
Что такое переменная?
Переменная - поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной.
Допустим, у нас есть код:
Целочисленное значение 5 в рамках языка Python по сути своей является объектом. Объект, в данном случае – это абстракция для представления данных, данные – это числа, строки и т.п. Каждый объект имеет три атрибута – это идентификатор, значение и тип. Идентификатор – это уникальный признак объекта, позволяющий отличать объекты друг от друга, а значение – непосредственно информация, хранящаяся в памяти, которой управляет интерпретатор.
Таким образом, переменные могут быть разных типов, в зависимости от типа её значения, например:
- Логические переменные (Boolean Type)
Принимает значение True (истина) или False (ложь).
- Числовой тип (Numeric Type)
Числовой тип, в свою очередь также делится на следующие типы:
int (integer) – целое число
float – число с плавающей точкой
complex – комплексное число
- Строки (Text Sequence Type) - str (string)
Это основные типы данных, которые мы будем использовать на первых уроках, остальные же будем осваивать по ходу материала.
Имя переменной не должно совпадать с ключевыми словами интерпретатора Python. Список ключевых слов можно найти здесь.
Тип переменной можно определить с помощью функции
Вывод:
>>> Write your name:
>>> abinba
>>> Hello, abinba!
Однако, при попытке ввести число и проводить с ней арифметические действия, мы получаем ошибку
И мы получим:
>>> 5
>>> 8
>>> Sum = 13
Что такое переменная?
Переменная - поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной.
Допустим, у нас есть код:
number = 5
Для того, чтобы объявить и сразу инициализировать переменную необходимо написать её имя, потом поставить знак равенства и значение, с которым эта переменная будет создана, что мы и сделали. Мы объявили переменную с именем number
и присвили ей значение целого числа 5.Целочисленное значение 5 в рамках языка Python по сути своей является объектом. Объект, в данном случае – это абстракция для представления данных, данные – это числа, строки и т.п. Каждый объект имеет три атрибута – это идентификатор, значение и тип. Идентификатор – это уникальный признак объекта, позволяющий отличать объекты друг от друга, а значение – непосредственно информация, хранящаяся в памяти, которой управляет интерпретатор.
Таким образом, переменные могут быть разных типов, в зависимости от типа её значения, например:
- Логические переменные (Boolean Type)
Принимает значение True (истина) или False (ложь).
- Числовой тип (Numeric Type)
Числовой тип, в свою очередь также делится на следующие типы:
int (integer) – целое число
float – число с плавающей точкой
complex – комплексное число
- Строки (Text Sequence Type) - str (string)
Это основные типы данных, которые мы будем использовать на первых уроках, остальные же будем осваивать по ходу материала.
Имя переменной не должно совпадать с ключевыми словами интерпретатора Python. Список ключевых слов можно найти здесь.
Тип переменной можно определить с помощью функции
type()
. Например:>>> a = 10
>>> b = "hello"
>>> type(a)
<class 'int'>
>>> type(b)
<class 'str'>
Мы уже знаем, что для вывода данных в Python используется функция print()
. А для ввода данных в программу используется функция input()
. Функция input()
передает введенные данные в программу. Их можно присвоить переменной. Например:print("Write your name:")
a = input()
print("Hello, " + a + "!")
Тут знаками "+" мы объединяем строки. Функции со строками мы также пройдем на следующих уроках. Вывод:
>>> Write your name:
>>> abinba
>>> Hello, abinba!
Однако, при попытке ввести число и проводить с ней арифметические действия, мы получаем ошибку
TypeError
. Дело в том, что по умолчания функция input()
присваивает значение типа str
(то есть, строки). Если мы хотим, чтобы функция input()
присваивало целочисленное значение мы должны использовать функцию int()
(чтобы получить число с плавающей точкой - float()
). Она конвертирует переменную в целочисленный тип. Тогда наш код будет выглядеть так:a = int(input())
b = int(input())
sum = a + b
print("Sum = " + str(sum))
Мы конвертируем переменную sum
в тип str
, потому что переменная sum
- типа int
и не может быть добавлена к концу нашей строки в функции print()
.И мы получим:
>>> 5
>>> 8
>>> Sum = 13
pythonworld.ru
Ключевые слова, модуль keyword | Python 3 для начинающих и чайников
Краткий обзор ключевых слов в Python 3, модуль keyword для работы с ключевыми словами.
Домашняя работа
Создайте программы, которые:
- Будет вычислять квадрат введеного вами числа
- Будет запрашивать у вас ФИО, телефон, адрес и суммировать это в конце.
- Дайте свободу своей фантазии и сделайте произольную программу по пройденным темам.
С результатом поделитесь в нашем чате. Код в чат не отправлять, только админам!
Создайте программы, которые:
- Будет вычислять квадрат введеного вами числа
- Будет запрашивать у вас ФИО, телефон, адрес и суммировать это в конце.
- Дайте свободу своей фантазии и сделайте произольную программу по пройденным темам.
С результатом поделитесь в нашем чате. Код в чат не отправлять, только админам!
#sammelsurium
Компьютер размером с мяч для тенниса? Для Клингера Пауля нет ничего невозможного! Основа системы - микроконтроллер ATtiny1614 с подключенным к нему OLED дисплеем с разрешением 128 × 64 пикселя. Все это спрятано в корпус, напечатанный на 3D-принтере. Уже не терпится взглянуть? Ниже привожу ссылку на репозиторий Пауля, где имеется весь исходный код проекта на С и ассемблере. Интересно, кто-нибудь решится повторить?
https://github.com/PaulKlinger/tinypc
Компьютер размером с мяч для тенниса? Для Клингера Пауля нет ничего невозможного! Основа системы - микроконтроллер ATtiny1614 с подключенным к нему OLED дисплеем с разрешением 128 × 64 пикселя. Все это спрятано в корпус, напечатанный на 3D-принтере. Уже не терпится взглянуть? Ниже привожу ссылку на репозиторий Пауля, где имеется весь исходный код проекта на С и ассемблере. Интересно, кто-нибудь решится повторить?
https://github.com/PaulKlinger/tinypc
GitHub
GitHub - PaulKlinger/tinypc: A miniature gaming PC / laptop
A miniature gaming PC / laptop. Contribute to PaulKlinger/tinypc development by creating an account on GitHub.
Этот урок будет посвящен операциям со строками и логическим выражениям и сравнениям.
Базовые операции со строками:
- Конкатенация (сложение)
В программировании False обычно приравнивают к нулю, а True – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:
Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком "равно", и операцию сравнения (два знака "равно"). Присваивание и сравнение – разные операции.
В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора – так называемые логические И (and) и ИЛИ (or).
Чтобы получить True при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет ложным.
Чтобы получить True при использовании оператора or, необходимо, чтобы результат хотя бы одного простого выражения, входящего в состав сложного, был истинным. В случае оператора or сложное выражение становится ложным лишь тогда, когда ложны оба составляющие его простые выражения.
Допустим, переменной x было присвоено значение 8 (x = 8), переменной y присвоили 13 (y = 13). Логическое выражение y < 15 and x > 8 будет выполняться следующим образом. Сначала выполнится выражение y < 15. Его результатом будет True. Затем выполнится выражение x > 8. Его результатом будет False. Далее выражение сведется к True and False, что вернет False.
Базовые операции со строками:
- Конкатенация (сложение)
>>> S1 = 'spam'
>>> S2 = 'eggs'
>>> print(S1 + S2)
spameggs
- Дублирование строки>>> print('spam' * 3)
spamspamspam
- Длина строки (функция len)>>> len('spam')
4
- Доступ по индексу>>> S = 'spam'
>>> S[0]
's'
>>> S[2]
'a'
- Извлечение среза>>> s = 'spameggs'
>>> s[3:5]
'me'
>>> s[:6]
'spameg'
>>> s[1:]
'pameggs'
>>> s[:]
'spameggs'
Логические выражения и сравненияВ программировании False обычно приравнивают к нулю, а True – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:
>>> int(True)
1
>>> int(False)
0
Говоря на естественном языке (например, русском) мы обозначаем сравнения словами "равно", "больше", "меньше". В языках программирования используются специальные знаки, подобные тем, которые используются в математике: > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), == (равно), != (не равно).Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком "равно", и операцию сравнения (два знака "равно"). Присваивание и сравнение – разные операции.
>>> a = 10
>>> b = 5
>>> a + b > 14
True
>>> a < 14 - b
False
>>> a <= b + 5
True
>>> a != b
True
>>> a == b
False
На практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответа "Да" или "Нет" в зависимости от результата выполнения двух простых выражений. Например, "на улице идет снег или дождь", "переменная news больше 12 и меньше 20".В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора – так называемые логические И (and) и ИЛИ (or).
Чтобы получить True при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет ложным.
Чтобы получить True при использовании оператора or, необходимо, чтобы результат хотя бы одного простого выражения, входящего в состав сложного, был истинным. В случае оператора or сложное выражение становится ложным лишь тогда, когда ложны оба составляющие его простые выражения.
Допустим, переменной x было присвоено значение 8 (x = 8), переменной y присвоили 13 (y = 13). Логическое выражение y < 15 and x > 8 будет выполняться следующим образом. Сначала выполнится выражение y < 15. Его результатом будет True. Затем выполнится выражение x > 8. Его результатом будет False. Далее выражение сведется к True and False, что вернет False.
>>> x = 8
>>> y = 13
>>> y < 15 and x > 8
False
В языке Python есть еще унарный логический оператор not, т. е. отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and и or.>>> not y < 15
False
Также можно построить сравнение таким образом:>>> 5 < y <= 6
False
Домашняя работа
1) Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы True или False в зависимости от того, больше первое число второго или нет.
2) Есть два слова: "Spy", "Telethon". Используя только эти две строки и операции со строками, составьте слово "python".
3) Составьте программу, которая будет запрашивать любое слово и число n - количество повторений этого слова. Программа должна вывести это слово n раз.
4) Даны параметры квадратного уравнения (a, b, c) и координаты точки (x, y). Принадлежит ли точка параболе?
5) Даны координаты точки (x, y) и координаты точек пересечения трех прямых, образующих треугольник. Входит ли точка в область получившегося треугольника?
1) Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы True или False в зависимости от того, больше первое число второго или нет.
2) Есть два слова: "Spy", "Telethon". Используя только эти две строки и операции со строками, составьте слово "python".
3) Составьте программу, которая будет запрашивать любое слово и число n - количество повторений этого слова. Программа должна вывести это слово n раз.
4) Даны параметры квадратного уравнения (a, b, c) и координаты точки (x, y). Принадлежит ли точка параболе?
5) Даны координаты точки (x, y) и координаты точек пересечения трех прямых, образующих треугольник. Входит ли точка в область получившегося треугольника?
#sammelsurium
На днях меня очень заинтересовала статья на хабре о хренении вещественных чисел в памяти компьютера и их о работке, где был подробно рассмотрен метод Unum, разработанный математиком Джоном Густавсоном. По некоторым данным, метод превосходит по производительности классический IEEE 754, а так же поддерживает дополненный набор операций. Подробней ознакомиться с материалом можно по ссылкам:
https://habr.com/ru/post/462385
https://en.wikipedia.org/wiki/Unum_%28number_format%29
На днях меня очень заинтересовала статья на хабре о хренении вещественных чисел в памяти компьютера и их о работке, где был подробно рассмотрен метод Unum, разработанный математиком Джоном Густавсоном. По некоторым данным, метод превосходит по производительности классический IEEE 754, а так же поддерживает дополненный набор операций. Подробней ознакомиться с материалом можно по ссылкам:
https://habr.com/ru/post/462385
https://en.wikipedia.org/wiki/Unum_%28number_format%29
Хабр
Новый подход может помочь нам избавиться от вычислений с плавающей запятой
В 1985 году Институт инженеров электротехники и электроники (IEEE) установил стандарт IEEE 754, отвечающий за форматы чисел с плавающей запятой и арифметики, к...