Ввод-вывод, оператор присваивания, арифметические операции
Данный курс будет посвящен изучению программирования с использованием языка Python. Это — современный язык программирования, работающий на всех распространных операционных системах.
В настоящее время существует две версии языка Python: более старая, но пока ещё более распространненая версия 2 и современная версия 3. Они не вполне совместимы друг с другом: программа, написанная для одной версии языка может оказаться невыполнимой для другой версии. Но в основном обе версии очень похожи.
Мы будем использовать версию 3 данного языка, некоторые из используемых примеров не будут работать с версией 2. Последняя версия языка, доступная в сентябре 2010 года — 3.1.2, именно её необходимо установить дома, скачав данную версию с сайта www.python.org.
Запустить интерпретатор python можно из командной строки:
$ python3
Будьте внимательны — команда python запустит интерпретатор версии 2, с которым мы работать не будем. В системе Windows можно использовать пункт меню “Python (command line)”
Вы увидите примерно следующее приглашение командной строки:
Python 3.1.2 (r312:79147, Jun 12 2010, 15:29:06)
[GCC 4.4.3 20100316 (ALT Linux 4.4.3-alt2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Смело вводите команды и наслаждайтесь результатом. А что можно вводить? Несколько примеров:
>>> 2 + 2
4
>>> 2 ** 100
1267650600228229401496703205376
>>> 'Hello' + 'World'
'HelloWorld'
>>> 'ABC' * 100
'ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC'
Первая команда вычисляет сумму двух чисел, вторая команда вычисляет 2 в степени 100, третья команда выполняет операцию конкатенации для строк, а четвертая команда печатает строку ‘ABC’, повторенную 100 раз.
Хотите закончить работу с питоном? Введите команду exit() (именно так, со скобочками, так как это — функция), или нажмите Ctrl+D.
Функция print#
Функция print уже не раз использовалась в книге, но до сих пор не рассматривался ее полный синтаксис:
print(*items, sep=' ', end='\n', file=sys.stdout, flush=False)
Функция print выводит все элементы, разделяя их значением sep, и завершает вывод значением end.
Все элементы, которые передаются как аргументы, конвертируются в строки:
In [4]: def f(a): . : return a . : In [5]: print(1, 2, f, range(10)) 1 2 function f at 0xb4de926c> range(0, 10)
Для функций f и range результат равнозначен применению str():
In [6]: str(f) Out[6]: '' In [7]: str(range(10)) Out[7]: 'range(0, 10)'
sep#
Параметр sep контролирует то, какой разделитель будет использоваться между элементами.
По умолчанию используется пробел:
In [8]: print(1, 2, 3) 1 2 3
Можно изменить значение sep на любую другую строку:
In [9]: print(1, 2, 3, sep='|') 1|2|3 In [10]: print(1, 2, 3, sep='\n') 1 2 3 In [11]: print(1, 2, 3, sep=f"\n'-' * 10>\n") 1 ---------- 2 ---------- 3
Обратите внимание на то, что все аргументы, которые управляют поведением функции print, надо передавать как ключевые, а не позиционные.
В некоторых ситуациях функция print может заменить метод join:
In [12]: items = [1, 2, 3, 4, 5] In [13]: print(*items, sep=', ') 1, 2, 3, 4, 5
end#
Параметр end контролирует то, какое значение выведется после вывода всех элементов. По умолчанию используется перевод строки:
In [19]: print(1, 2, 3) 1 2 3
Можно изменить значение end на любую другую строку:
In [20]: print(1, 2, 3, end='\n'+'-'*10) 1 2 3 ----------
file#
Параметр file контролирует то, куда выводятся значения функции print. По умолчанию все выводится на стандартный поток вывода — sys.stdout.
Python позволяет передавать file как аргумент любой объект с методом write(string). За счет этого с помощью print можно записывать строки в файл:
In [1]: f = open('result.txt', 'w') In [2]: for num in range(10): . : print(f'Item num>', file=f) . : In [3]: f.close() In [4]: cat result.txt Item 0 Item 1 Item 2 Item 3 Item 4 Item 5 Item 6 Item 7 Item 8 Item 9
flush#
По умолчанию при записи в файл или выводе на стандартный поток вывода вывод буферизируется. Параметр flush позволяет отключать буферизацию.
Пример скрипта, который выводит число от 0 до 10 каждую секунду (файл print_nums.py):
import time for num in range(10): print(num) time.sleep(1)
Попробуйте запустить скрипт и убедиться, что числа выводятся раз в секунду.
Теперь, аналогичный скрипт, но числа будут выводиться в одной строке (файл print_nums_oneline.py):
import time for num in range(10): print(num, end=' ') time.sleep(1)
Попробуйте запустить функцию. Числа не выводятся по одному в секунду, а выводятся все через 10 секунд.
Это связано с тем, что при выводе на стандартный поток вывода flush выполняется после перевода строки.
Чтобы скрипт отрабатывал как нужно, необходимо установить flush равным True (файл print_nums_oneline_fixed.py):
import time for num in range(10): print(num, end=' ', flush=True) time.sleep(1)
Строки и функция print в Python
Строка представляет собой простую последовательность символов. С ней можно работать разными способами. Любая последовательность символов, заключенная в кавычки, в Python считается строкой. Кавычки могут быть одинарные и двойные.
«Строка Python.»
‘Строка Python.’
Это позволяет использовать внутренние кавычки в строках. «Язык программирования ‘Python’ «. Рассмотрим операции со строками.
Содержание страницы: |
---|
1. Функция print() |
2. Табуляция и разрыв строк |
3. Изменение регистра символов в строках |
4. F-строки. Форматирование строк |
5. Удаление пропусков |
6. Комментарии |
1. Функция print() в Python .
Встроенная функция print() выводит свой аргумент в строке текста.
>>> print( ‘Hello world!’ )
Hello world!
>>> print( «Hello world!» )
Hello world
>>> print( «Hello», ‘world!’ )
Hello world
В каждом случае аргументом является строка Hello world! Кроме того, print() не выводит кавычки, в которые заключена строка. Строка может быть заключена как в одинарные так и в двойные кавычки. В третьем случае, функция print() , получила список аргументов «Hello» и ‘world’, разделенных запятыми. Каждый аргумент выводится, отделяясь от следующего пробелом. В итоге во всех трех случаях получается один и тот же результат.
2. Табуляция и разрыв строк в Python.
В программировании термином пропуск ( whitespace ) называются такие непечатаемые символы, как пробелы, табуляции и символы конца строки. Пропуски структурируют текст, чтобы пользователю было удобнее читать его.
В таблице приведены наиболее часто встречаемые комбинации символов.
Для добавления в текст табуляции используется комбинация символов \t . Разрыв строки добавляется с помощью комбинации символов \n .
>>> print(«Python»)
Python
>>> print(» \t Python»)
Python
>>> print(«Языки программирования: \n Python \n Java \n C»)
Языки программирования:
Python
Java
C
Табуляция и разрыв строк могут сочетаться в тексте. В следующем примере происходит вывод одного сообщения с разбиением на строки с отступами.
>>> print(«Языки программирования: \n\t Python \n\t Java \n\t C»)
Языки программирования:
Python
Java
C
3. Изменение регистра символов в строках в Python.
Одной из частых операций, выполняемых со строками — это изменение регистра символов. Например, у нас есть переменная name, в которой сохранена строка «Hello world!». Для преобразования символов к верхнему или нижнему регистру существует несколько методов.
>>> name = «Hello world!»
>>> print(name. title() )
Hello World!
>>> print(name. upper() )
HELLO WORLD!
>>> print(name. lower() )
hello world!
В первом случае за именем переменной в команде print() следует вызов метода title() . Метод — это действие, которое Python выполняет с данными. Точка после name приказывает Python применить метод title() к переменной name. За именем метода всегда следует пара круглых скобок () . Методам для выполнения их работы часто требуется дополнительные данные, и они указываются в скобках. В данный момент дополнительная информация не нужна, поэтому в скобках ничего нет. Метод title() преобразует первый символ каждого слова к верхнему регистру, остальные символы выводятся, как и были. Во втором случае используется метод upper() , в котором все символы преобразовываются к верхнему регистру. В третьем случае в методе lower() идет преобразование всех символов к нижнему регистру.
Метод lower() очень часто используется для хранения данных. Редко при вводе данных все пользователи вводят данные с точным соблюдением регистра. После ввода все данные преобразуются к нижнему регистру и уже затем выводится информация с использованием регистра, наиболее подходящего.
4. F-строки. Форматирование строк в Python.
Часто требуется использовать значения переменных внутри строки. Предположим, что у вас имя и фамилия хранятся в разных переменных и вы хотите их объединить для вывода полного имени.
Для того чтобы вставить значение переменных в строку, нужно поставить букву f непосредственно перед открывающейся кавычкой. Заключить имя или имена переменных в фигурные скобки <> .
Python заменить каждую переменную на ее значение при выводе строки.
>>> name = «Александр»
>>> surname = «Пушкин»
>>> full_name = f» »
>>> print(full_name)
Александр Пушкин
Буква f происходит от слова format, потому что Python форматирует строку, заменяя имена переменных в фигурных скобках на их значения. В итоге выводится строка имя и фамилия.
Если в переменной имя и фамилия записана с маленькой буквы, то на помощь придет метод title() . Так же с помощью f строк можно строить сообщения, которые затем сохраняются в переменной.
>>> name = «александр»
>>> surname = «пушкин»
>>> full_name = f» »
>>> print( f» Русский поэт ! » )
Русский поэт Александр Пушкин!
>>> message = f» Мой любимый поэт »
>>> print(message)
Мой любимый поэт Александр Пушкин
Важно: F-строки впервые появились в Python3.6. Если вы используете более раннею версию, используйте метод format. Что бы использовать метод format(), перечислите переменные в круглых скобках после format.
full_name = «<> <>«.format(name, surname)
5. Удаление пропусков в Python.
Для пользователя две строки ‘Python’ и ‘ Python ‘ внешне сильно не отличаются, но для программы это совершенно разные строки. Python видит дополнительные пропуски и считает их важными. Обращайте внимание на лишние пропуски, потому что часто в программах приходится сравнивать строки, чтобы проверить совпадения. Один из примеров — это проверка имен пользователей при регистрации или авторизации на сайте. Python позволяет удалять лишние пропуски, введенные пользователем.
метод | описание |
---|---|
rstrip() | удаляет пропуск у правого края |
lstrip() | удаляет пропуск у правого края |
strip() | удаляет пропуски с обоих концов |
Python может искать лишние пропуски у правого и левого края строки, так же может удалить с обоих концов строки.
>>> language. rstrip ()
‘ python’
>>> language. lstrip ()
‘python ‘
>>> language. strip ()
‘python’
>>> language
‘ python ‘
Важно: Python не удаляет навсегда эти пропуски в переменной. Чтобы исключить пропуск из строки, следует ее перезаписать.
>>> language = ‘ python ‘
>>> language
‘ python ‘
>>> language = language. strip ()
>>> language
‘python’
Сначала пропуски удаляются методом strip() и потом записываются в исходную переменную.
6. Комментарии в Python.
В Python признаком комментария является символ «решетка» ( # ). Интерпретатор Python игнорирует все символы, следующие в коде после # до конца строки.
>>> print(‘Hello Python’)
Hello Python
>>> # print(‘Hello Python’)
Основная задача комментария — объяснить, как работает ваш код и что он делает. В процессе работы над проектом вы понимаете, как работают все компоненты, но если вы вернетесь к этому проекту спустя месяц или годы, то придется заново разбираться. Так же при совместной разработке с другими программистами без комментариев вам не обойтись. Рекомендуется сразу писать комментарии в процессе разработки. Удалить комментарии намного проще, чем возвращаться и добавлять комментарии в программу.
Как работает функция print в Python
Рассмотрели функцию print в Python и рассказали о её работе. Описали, что такое аргументы print, зачем они нужны и как их использовать.
Функция print() в Python используется для вывода текстовой информации на экран или в консоль. Эта функция может принимать один или несколько аргументов. Одним из обязательных аргументов является строка или объект, который будет выведен.
Вы наверняка знакомы с этой функцией. С неё начинается любой урок по программированию на Python.
print("Hello, World!")
В данном случае функция выведет в консоль сообщение:
Hello, World!
При этом обязательно использовать скобки, иначе возникнет синтаксическая ошибка. В Python 2 скобки можно было не указывать, но в Python 3 скобки необходимы. Всё потому, что в третьей версии print() — это функция, а не инструкция.
Убедимся, что перед нами действительно функция, и спросим Python:
type(print)
Python ответит нам, что перед нами встроенная функция или метод.
builtin_function_or_method
Аргументы print() в Python
Аргументы функции print() позволяют изменять способ форматирования сообщений и управлять стилем вывода.
Вот полный синтаксис функции, скрытый от наших глаз:
print(value, . sep=' ', end='\n', file=sys.stdout, flush=False)
Аргументы функции здесь — это sep , end , file и flush :
- sep позволяет задать разделитель, который будет выводиться между элементами, переданными в функцию print(). По умолчанию разделителем является пробел, но с помощью sep пробел можно заменить на другой разделитель, к примеру, на запятую.
- end позволяет определять символ, который будет добавлен в конец сообщения после вывода. По умолчанию это символ перевода строки. Поменять его можно, к примеру, на точку с запятой.
- file позволяет перенаправить вывод текста в нужный вам файл. По умолчанию функция выводит текст в консоль, в которой вы и задаёте команды Python. Аргумент file полезен, если нужно сохранить вывод для дальнейшего использования.
- flush позволяет управлять буферизацией вывода. Если этот аргумент установлен в True, то вывод не будет буферизоваться и будет выводиться немедленно.
Рассмотрим эти аргументы чуть подробнее.
Аргумент sep в функции print() на Python
Как мы уже поняли, sep отвечает за то, какой символ будет отделять друг от друга элементы вывода. По умолчанию, если sep не поменять, этот символ будет пробелом.
Машина времени: как отменить изменения в Git
Попросим Python вывести на экран слова, не меняя при этом sep .
print('туториал', 'по', 'функции', 'print()')
Убеждаемся, что sep по умолчанию — это пробел. На экране появится такое сообщение:
туториал по функции print()
Теперь попробуем заменить дефолтный пробел в sep на что-то другое. Используем символы \n в качестве разделителя в аргументе sep . Они должны перенести каждый следующий элемент выдачи на новую строку.
print('туториал', 'по', 'функции', 'print()', sep='\n')
Получается вот такой вывод функции:
туториал по функции print()
Как и ожидалось, после каждого слова в выводе строка переносится, ведь разделителем мы назначили именно перенос строки. ?
Аргумент end в функции print() на Python
Аргумент end — это суть то же самое, что и sep . Разница только в том, что sep — это разделитесь между элементами вывода, а end — это разделитесь самих выводов разных функций print() , если их несколько.
По умолчанию end — это перенос строки. Его тоже можно заменить на любое другое удобное значение.
Вот, как выглядит стандартный вывод функций print() , если не менять аргумент end .
print('Брюки - это') print('одежда, которая надевается на нижнюю часть тела.')
Брюки - это одежда, которая надевается на нижнюю часть тела.
Попробуем заменить перенос строки в аргументе end на обычный пробел.
print('Брюки - это', end=' ') print('одежда, которая надевается на нижнюю часть тела.')
Вывод с обычным пробелом вместо переноса строки:
Брюки - это одежда, которая надевается на нижнюю часть тела.
Аргумент file в функции print() на Python
Аргумент file позволяет записывать данные вывода в файлы с расширением txt или csv.
По умолчанию значение аргумента file указано как sys.stdout . Это — вывод значений непосредственно в консоль Python.
Допустим, нам нужно, чтобы по завершении программа записала вывод в файлик print.txt. Для этого напишем простую программу, которая:
- откроет файл print.txt;
- запишет данные вывода в файл;
- закроет файл print.txt.
file = open('print.txt','a+') #открываем файл def value(items): for item in items: print(item, file=file) #вызываем функцию print, вывод которой должен записаться в файл file.close() # закрываем файл value([1,2,3,4,5,6,7,8,9,10])
Результатом выполнения этого кода станет появление файла print.txt. Внутри него должно оказаться:
1,2,3,4,5,6,7,8,9,10
Аргумент flush в функции print() на Python
Аргумент flush в функции print() в Python позволяет управлять выводом сообщений без задержек.
Дело в том, что по умолчанию программа будет записывать данные вывода из print() сперва в буфер обмена, а уже потом выводить данные в консоль или в файл.
По умолчанию аргумент flush установлен в значении False .
Tevel Aerobotics научили дронов автономно собирать яблоки с помощью ИИ
Когда значение аргумента flush установлено в True , Python выводит сообщение, не дожидаясь буферизации вывода. Это полезно, когда нужно мгновенно показать вывод в консоли или в файле.
with open('output.txt', 'w') as f: print('Hello, world!', file=f, flush=True)
В этом примере мы записали вывод Hello, world! в файл output.txt без буферизации, установив значение аргумента flush как True .
Однако с этим аргументом нужно быть осторожным:
- Если возникнет ошибка в выполнении программы, а аргумент flush установлен как True, результат вывода может быть утерян. Он не сохранится в буфере из-за значения True и не отобразится в консоли или в файле из-за ошибки.
- Использование flush=True при работе с несколькими потоками может привести к тому, что разные потоки будут пытаться выводить данные в поток вывода одновременно. Это приведет к ошибкам.
Использование flush=True без должной осторожности может создать проблемы в работе программы и усложнить отладку. Если нет необходимости в ручной записи данных в поток вывода, лучше не использовать этот параметр.
В общем, аргументы функции print() позволяют управлять тем, как сообщения выводятся на экран и в консоль, и как они форматируются и выводятся. Это делает print() очень универсальной функцией, которую можно использовать во многих различных ситуациях.