Python – Количество слов в текстовом файле
Вы можете подсчитать количество слов в текстовом файле в Python, следуя последовательности шагов, которые мы обсудим в этом руководстве.
В этом руководстве мы узнаем, как сосчитать количество слов в текстовом файле, используя Python пример программы.
Шаги, чтобы подсчитать количество слов в текстовом файле
Чтобы подсчитать количество слов в текстовом файле, выполните следующие действия.
- Откройте файл в режиме чтения и обрабатывайте его в текстовом режиме.
- Прочитайте текст, используя функцию READ ().
- Разделите текст, используя пространственный сепаратор. Мы предполагаем, что слова в предложении разделены пространственным характером.
- Длина списка разделения должна равняться количеству слов в текстовом файле.
- Вы можете уточнить количество, очищая строку до расщепления или проверки слов после расщепления.
Пример 1: подсчитывать количество слов
В этом примере Python мы будем читать текстовый файл и подсчитать количество слов в нем. Рассмотрим следующий текстовый файл.
Welcome to pythonexamples.org. Here, you will find python programs for all general use cases.
file = open("C:\data.txt", "rt") data = file.read() words = data.split() print('Number of words in text file :', len(words))
Number of words in text file : 14
Пример 2: Подсчитывать количество слов в текстовом файле с несколькими строками
В этом примере Python мы прочитаем текстовый файл с несколькими строками и подсчитаете количество слов в нем. Рассмотрим следующий текстовый файл.
Новый символ линии разделяет строки в текстовом файле. Новая строка – это символ белого пространства, и когда мы разделяем все данные в текстовом файле с использованием метода Split (), все слова во всех предложениях разделены и возвращаются в виде одного списка.
Текстовый файл – data.txt
Welcome to www.pythonexamples.org. Here, you will find python programs for all general use cases. This is another line with some words.
file = open("C:\data.txt", "rt") data = file.read() words = data.split() print('Number of words in text file :', len(words))
Number of words in text file : 21
Резюме
В этом руководстве примеров Python мы узнали, как подсчитать количество слов в текстовом файле, с помощью примеров программ.
Читайте ещё по теме:
- Python – количество символов в текстовом файле
- Преобразование текстового файла в PDF С помощью Python | PDF
- Python для НЛП: Работа с текстовыми и PDF-файлами
- Как читать большие текстовые файлы в Python
- Python – читайте текстовый файл
- Как добавить текст в файл в Python?
- Python – количество вхождений слова в текстовом файле
Задание «Количество слов в тексте» (Python) — код занимается «приписками»
Нужно определить, сколько различных слов содержится в тексте. При этом словом считается последовательность символов идущих подряд (за исключением пробелов), слова разделены одним или большим числом пробелов или символами конца строки. Например, «Share» и «Share,» — это 2 разных слова. Мой вариант:
inFile = open('input.txt', 'r', encoding='utf8') a = str(inFile.readlines()) print(len(set(a.split())))
Тестовый текст:
She sells sea shells on the sea shore; The shells that she sells are sea shells I'm sure. So if she sells sea shells on the sea shore, I'm sure that the shells are sea shore shells.
должно получиться 19 слов, а у меня зачем-то 20 . где ошибка? Спасибо!
Отслеживать
задан 13 авг 2018 в 14:49
459 2 2 золотых знака 8 8 серебряных знаков 19 19 бронзовых знаков
Так посмотрите, что в set лежит
13 авг 2018 в 14:53
А посмотреть под отладкой? Вообще я не думаю что данный вопрос будет полезен будущим посетителям..
– user218976
13 авг 2018 в 14:53
Просто выведите полученный сет на экран и посмотрите, что там за лишнее слово.
13 авг 2018 в 14:59
@Anamnian ну, это не вам решать, а будущим посетителям.
13 авг 2018 в 15:02
@MBo спасибо за подсказку! символ переноса строки нужно было убрать
13 авг 2018 в 15:04
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Прхожий вариант, но немного короче:
In [250]: len(set(open(r'C:\Temp\a.txt').read().split())) Out[250]: 19
еще лучше будет воспользоваться pathlib :
from pathlib import Path In [251]: len(set(Path(r'C:\Temp\a.txt').read_text(encoding='utf-8').split())) Out[251]: 19
Отслеживать
ответ дан 13 авг 2018 в 15:19
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
Варианты ошибок: в конце файла перенос строки, пробелы, табуляция, смотреть надо исходники. Мой вариант задачки, когда нужно отобрать слова как набор символов с хотя бы одной буквой (если надо, досыпьте в скобки русских буков, только Ёё не забудьте, ее нужно отдельно добавлять):
def word_conter(file_name: str) -> int: import re """ Returns the number of words in a text file or None in case of an error. Provided that the word is a sequence of characters in which there is at least one letter """ try: with open(file_name, 'rt') as f: s = (re.findall( r"\b(\w*[A-Za-z]+[!#$%&'\"*+-.^_`|~:\w]*)\b", f.read())) return len(s) except: return None if __name__ == "__main__": import sys # Pulls a file from the command line as a script run option. fname = sys.argv[1] print(word_conter(fname))
Count Words in String in Python
- Use the split() and len() Methods to Count Words in Python String
- Use RegEx Module to Count Words in Python String
- Use sum() , strip() and split() Methods to Count Words in Python String
- Use the count() Method to Count Words in Python String Python
This tutorial will introduce how to count words in string Python.
Use the split() and len() Methods to Count Words in Python String
split() is a built-in method in Python that separates the words inside a string by using a specific separator and returns an array of strings. This method accepts at most two parameters as an argument:
- separator (optional) — It acts as a delimiter (e.g. commas, semicolon, quotes, or slashes). Specifies the boundary on which to separate in the string. The default separator is any whitespace (space, newline, tab, etc.) if the separator is not specified.
- maxsplit (optional) — It defines the maximum number of splits. The default value of maxsplit if not defined is -1 , which means that it has no limits and will split the string into multiple chunks.
Syntax of split() :
str.split(separator, maxsplit)
len() is also a Python built-in method, which returns the number of strings in an array or counts the length of items in an object. This method only accepts one parameter: a string, bytes, list, object, set, or a collection. It will raise a TypeError exception if the argument is missing or invalid.
len(s)
Let’s see how the split() and len() methods counts the words in a string.
Example 1: No Parameters
# initialize string text = "The quick brown fox jumps over the lazy dog" # default separator: space result = len(text.split()) print("There are " + str(result) + " words.")
There are 9 words.
Example 2: With the separator Parameter
# initialize string bucket_list = "Japan, Singapore, Maldives, Europe, Italy, Korea" # comma delimiter result = len(bucket_list.split(",")) # Prints an array of strings print(bucket_list.split(",")) print("There are " + str(result) + " words.")
['Japan', ' Singapore', ' Maldives', ' Europe', ' Italy', ' Korea'] There are 6 words.
The split() method will return a new list of strings, and the len() counts the string inside the list.
Example 3: With the separator and maxsplit Parameters
# initialize string bucket_list = "Japan, Singapore, Maldives, Europe, Italy, Korea" # comma delimiter result = len(bucket_list.split(",", 3)) # Prints an array of strings print(bucket_list.split(",", 3)) print("There are " + str(result) + " words.")
['Japan', ' Singapore', ' Maldives', ' Europe, Italy, Korea'] There are 4 words.
maxsplit splits only the first three commas in the bucket_list . If you set the maxsplit , the list will have a maxsplit+1 item.
['Japan', ' Singapore', ' Maldives, Europe, Italy, Korea'] There are 3 words.
The split() method breaks down large strings into smaller ones. Therefore, the counting of words in the array of strings will be based not exactly on the words but on how the split separator is defined.
Use RegEx Module to Count Words in Python String
Regular Expression, regex or regexp for short, is a very powerful tool in searching and manipulating text strings; this can be used for data preprocessing, validation purposes, finding a pattern in a text string, and so on. Regex can also help count words in a text string in scenarios where it has punctuation marks or special characters that are not needed. Regex is a Python built-in package, so we just need to import the package re to start using it.
# import regex module import re # initialize string text = "Python !! is the be1st $$ programming language @" # using regex findall() result = len(re.findall(r"\w+", text)) print("There are " + str(result) + " words.")
There are 6 words.
Use sum() , strip() and split() Methods to Count Words in Python String
This approach counts the words without using regex. The sum() , strip() , and split() are all built-in methods in Python. We’ll briefly discuss each method and its functionalities.
The sum() method adds the items up from left to right and returns the sum. The method takes two parameters:
- iterable (required) — a string, list, tuple, etc., to add up. These should be numbers.
- start (optional) — A number added to the sum or the return value of the method.
sum(iterable, start)
The next one is the strip() method, which returns a copy of the string stripped both the leading and the trailing whitespaces if no argument; otherwise, this removes the string defined in the argument.
- chars (optional) — specifies the string to be removed from the left and right parts of the text.
Syntax of string.strip() :
string.strip(chars)
Finally, the split() method, was already discussed before this approach.
Now, let’s use these methods together to count words in a string. First, we need to import the string , a Python built-in module, before using its functionalities.
import string # initialize string text = "Python !! is the be1st $$ programming language @" # using the sum(), strip(), split() methods result = sum([i.strip(string.punctuation).isalpha() for i in text.split()]) print("There are " + str(result) + " words.")
There are 5 words.
Use the count() Method to Count Words in Python String Python
The count() method is a Python built-in method. It takes three parameters and returns the number of occurrences based on the given substring.
- substring (required) — a keyword to be searched in the string
- start (option) — index as to where the search starts
- end (option) — index as to where the search ends
The index starts from 0 in Python.
Syntax of count() :
string.count(substring, start, end)
This method is different from the previous method since it does not return the total words found in the string but the number of occurrences found given the substring. Let’s see how this method works from the example below:
# initialize string text = "Python: How to count words in string Python" substring = "Python" total_occurrences = text.count(substring) print("There are " + str(total_occurrences) + " occurrences.")
There are 2 occurrences.
In this method, it doesn’t matter if the substring is a whole word, phrase, letter, or any combination of characters or numbers.
In summary, you can choose any of these approaches depends on your use case. For space-separated words, we can use the straightforward approach: the functions split() or len() . For filtering text strings to count words without special characters, use the regex module. Create a pattern that counts the words that do not include certain characters. Without using regex , use the alternative which is the combination of sum() + strip() + split() methods. Lastly, the count() method can also be used for counting the specific word found in the string.
Related Article — Python String
- Remove Commas From String in Python
- Check a String Is Empty in a Pythonic Way
- Convert a String to Variable Name in Python
- Remove Whitespace From a String in Python
- Extract Numbers From a String in Python
- Convert String to Datetime in Python
Copyright © 2023. All right reserved
Питон для начинающих с нуля: изучаем Python дома

Как выучить самому Python или любой другой язык программирования? Такой вопрос возникает у тех, кто впервые решил погрузиться в сферу IT.
Говорят, лучше всего покупать курсы, получать соответствующее образование. Конечно, погружаться в мир Python куда удобнее с помощью опытных учителей, но это не догма.
В нашем бесплатном гайде будет рассмотрен Питон для начинающих с нуля. Данный язык лучше всего подходит новичкам, так как прост в изучении и имеет огромную сферу применения. Вы можете стать как веб-разработчиком, так и инженером в области машинного обучения, софт-девелопером или игростроителем. Ограничений практически нет — все зависит лишь от предпочтений.
Где используется Python и почему
В последние 5 лет Питон непрерывно находится в тройке самых популярных языков программирования. У него есть ряд сильных сторон, которые привлекают разработчиков со всего мира.

К типичным областям использования Python относят:
- Веб-разработка (сайты любой сложности и функциональности без проблем создаются при помощи данного языка);
- Работа с базами данных (можно работать как с «встроенной» sqlite3, так и любыми другими – реляционными и нереляционными);
- Графические приложения (реально не просто писать исполняемые скрипты, но и разрабатывать полноценные графические интерфейсы под свои нужды);
- Научные задачи (сложные вычисления, машинное обучение, нейронные сети);
- Сетевое программирование (включает не только взаимодействие с сайтами, но и почтовыми сервисами, JSON-объектами, Интернет-протоколами);
- Бизнес-приложения и игровая индустрия (ERP-системы, непрерывная разработка и тестирование, простые игры).
Озвученный спектр направлений показывает, что Питон имеет определенные преимущества по сравнению с другими языками, раз он пригоден для такого широкого класса задач.
Основные показаны ниже (рис. 1).

Простота подразумевает легкость освоения и высокий уровень абстракции (минимум кода при максимальном эффекте).
Выразительность связана с минимальным количеством кода для достижения результата (некоторые особенности Питона сокращают объем кода чуть ли не до одной строки, если сравнивать с другими языками).
Скрипты на Python’e легко читать: нет лишних символов, нагромождения скобок, дополнительных уточнений.
Полнота демонстрирует масштаб встроенных и сторонних библиотек под специфичные нужды (не нужно с нуля создавать функционал, ведь его уже кто-то реализовал).
Немаловажно и то, что исходный код Python свободно распространяется. Любая редакция языка доступна каждому как для личных, так и коммерческих нужд.
Кроссплатформенность в дополнение ко всему гарантирует достижение идентичных результатов что на Windows, Linux, MacOS, так и на мобильных системах.
Python – объектно-ориентированный высокоуровневый интерпретируемый язык с динамической типизацией и автоматическим управлением памятью.
Объектность позволяет представлять сущности реального мира, что упрощает понимание. Высокоуровневость подразумевает наличие абстракций. Интерпретируемость позволяет исполнять программу на лету.
Динамическая типизация задает тип переменной в момент присваивания. Встроенное управление памятью избавляет от проблем с переполнением кеша и зависаний.
Отметим, также, ключевые плюсы и минуса Питона (таблица 1).
| Плюсы | Минусы |
| Легко изучать, писать и читать код | Относительно медленный |
| Интерпретируемый (исполняет код на лету) | Не всегда эффективно расходует память |
| Динамически типизированный | Ограничен в мобильной разработке |
| С открытым исходным кодом | При исполнении могут возникать ошибки, что требует тщательного тестирования |
| Имеет широкую поддержку |
Таблица 1 – Сильные и слабые стороны Python’a
Установка и подготовка среды
Чтобы начать программировать на Питоне, требуется совершить 2 шага:
- Установить последний релиз Python (скачивается с официального сайта https://www.python.org/downloads/);
- Загрузить программу для разработки (для новичков лучше всего подойдет PyCharm версии Community – https://www.jetbrains.com/ru-ru/pycharm/download/).
В нашем бесплатном руководстве по Python мы будем пользоваться только этим функционалом. Его достаточно, чтобы самому дома с нуля разобраться в Питоне.
Чтобы создать свой первый проект запускаем PyCharm и выбираем меню File -> New Project. Проверяем, чтобы в поле Base Interpreter стояла самая новая версия Питона.
Python реализован Гвидо ван Россумом в 1991 году. Несколько раз Питон признавался языком года (даже в 2020 году). Сегодня он применяется не только в среде средних и мелких разработчиков, но и в таких мировых компаниях как Google, Instagram, Facebook. Название языка происходит не от змеи, как часто думают новички, а от британского шоу «Летающий цирк Монти Пайтона».
Теперь в папке проекта можно создать файл с расширением «.py», в котором и будет писаться код. Чтобы запустить скрипт, нажимаем либо зеленую кнопку «Run», либо выбираем ее же через правую кнопку мыши. Внизу PyCharm при этом откроется окно консоли, отражающее итог и ход работы программы.
Таким образом, схема работы достаточно проста: пишем код, запускаем его, смотрим в терминал результат.
Чтобы проверить, что все установлено успешно и вы не напутали ничего в настройках, идем в панель терминала (внизу) и пишем там команду «python -V». Она отобразит версию Python, которая была проинсталлирована на компьютер.
В случае, если операционная система отличается от Windows, то команда будет выглядеть так: «python3 -V» (это связано с тем, что в UNIX-подобных ядрах по умолчанию включена более старая версия языка – 2.7. Так как она больше не поддерживается, рекомендуется работать с третьей – 3.9 или выше).
Начало работы в Питоне
Первое, что делают при изучении любого языка программирования, – вывод в консоль популярного сообщения «Hello world». Немного поменяем вывод, и в пустом файле скрипта напишем следующую команду:
- print('Начинаем программировать') -
Print – встроенная в Python функция, которая выводит на печать переданное в нее сообщение. Запуск скрипта отобразит в терминале соответствующую фразу.
Еще одна полезная команда – input. Она позволяет как бы общаться с пользователем при помощи консоли. Исполним следующий код:
- print('Познакомимся?') input('Как вас зовут, будущий мастер? ') input('А сколько вам лет?') print('Рад знакомству!') -
Функция input приостанавливает исполнение скрипта до тех пор, пока пользователь не введет свой ответ. Сначала в консоли потребуется представиться, а потом передать свой возраст. И лишь потом в терминале отобразится сообщение: «Рад знакомству!».
Пока что все наши операции не имели большого смысла и никак не использовались в других местах программы, но легкость Питона, уважаемые читатели, наверняка ощущается.
Обсудим базовый синтаксис языка Python:
- Любая часть кода отделяется от предыдущей переводом на новую строку (не нужно никаких точек с запятой в конце);
- Отступы внутри блоков кода (о них пойдет речь дальше) задаются 4-мя пробелами;
- Создаваемые функции и объекты отделяются друг от друга двумя пустыми строчками.
Даже если вы и забудете о сказанном, PyCharm вам напомнит: он подчеркнет синтаксические ошибки, даст подсказки по используемым функциям. Это не просто удобно, но и экономит массу времени.
Данная фраза от создателя языка свидетельствует о том, что Питон в своем синтаксисе максимально прозрачен.
Переменные в Python
Любой язык программирования оперирует переменными. Это некие значения, которым мы дали имена. Их можно использовать любое количество раз в коде.
Названия переменных в Python задаются при помощи змеиной нотации, «snake case» (кто бы сомневался). Они пишутся маленькими буквами, а составные (из нескольких слов) отделяются друг от друга нижним подчеркиванием. Важно давать им осмысленные имена (это существенно упростит ориентирование в коде через некоторое время).
Пример плохих или неверных наименований:
- abswqw – не понятно, какой смысл у данной переменной;
- 12Q – имена не могут начинаться с цифры;
- myname – два слова, не отделенные нижним подчеркиванием;
- nomer_telefona – не нужно транслита, следует использовать английские слова, чтобы ваш код понял программист из любой точки планеты.
- name – понятно и отражает суть;
- birth_year – используем змеиную нотацию.
Реализуем простую задачу для новичков на Питоне, которая иногда встречается на собеседованиях!
Получим от пользователя следующие сведения: его имя и страну, в которой бы он хотел побывать. Выведем на печать сообщение: «Доброго дня, . – интересная страна!». А после этого продемонстрируем пользователю еще одну фразу: «Было приятно с вами поболтать, ».
Данный проект показывает не только умение начинающего работать с базовыми возможностями языка, но и демонстрирует его умение пользоваться переменными.
Чтобы передать в функцию print переменную вместе с текстом, удобно пользоваться так называемыми f-строками. Синтаксис следующий: print(f’Вы передали переменную ’).
- user_name = input('Каково ваше имя? ') country_to_visit = input('В какой стране вы бы хотели побывать? ') print(f'Доброго дня, . – интересная страна!') print(f'Было приятно с вами поболтать, ') -
Как видим, переменная может использоваться в разных участках кода после того, как ей присвоено значение.
Числа в Питоне и операции с ними
Далее поговорим о типах данных. Начнем с чисел. В этом курсе мы затронем два их типа: целые и числа с плавающей точкой. Из названия понятно, что они подразумевают. Есть и другие: комплексные, десятичные, дробные (в Питоне они различаются).
Когда мы присваиваем переменной число, то оно пишется без кавычек. Для числового типа данных доступны стандартные математические операции: умножение, сложение, возведение в степень, деление и деление по модулю, целочисленное деление и др.
- x = 8 y = 5 z = 3.56 print(x + y) print(x - y) print(x * y) print(x / y) print(x ** y) print(x // y) print(x % y) print(x + z) -
Результат работы скрипта:
13 3 40 1.6 32768 1 3 11.56
Мы создали 3 переменные: две в виде целых чисел и одну как число с плавающей точкой. При делении любых значений всегда получается число с плавающей точкой (даже если разделить 10 на 5, то получим 2.0).
Целочисленное деление обозначается как «//». Оно отбрасывает остаток. Деление по модулю подразумевает отображение только остатка и обозначается «%». Возведение в степень записывается двумя звездочками.
В Питоне есть функции, позволяющие взаимно преобразовывать числа, а также определять тип переменной.
- float – приводит число к типу с плавающей точкой;
- int – преобразует число в целое (отбрасывает все числа после запятой);
- type – показывает тип переменной.
- x = -14 y = 2.981 print(int(y)) print(float(x)) print(type(x)) print(type(y)) -
Результат работы скрипта:
2 -14.0
При помощи type мы убедились, что первое число – целое, а второе – с плавающей точкой. А две другие функции позволили преобразовать данные к нужному типу.
Строки (тип данных string)
Строка – еще один тип данных в языке Python. Они записываются в одинарных или двойных кавычках. В нашем бесплатном гайде рассмотрим следующие операции с ними:
- Конкатенация (сложение);
- Дублирование (умножение);
- Доступ по индексу;
- Определение длины.
Конкатенация подразумевает объединение строк. При помощи же знака умножения можно строку продублировать несколько раз.
- day = 'Wednesday' weather = 'sunny' print(day + weather) print(day * 3) day += day print(day) -
Результат работы скрипта:
Wednesdaysunny WednesdayWednesdayWednesday WednesdayWednesday
Операция «day += day» делает следующее: берет старую переменную, добавляет к ней некоторое значение (в нашем случае – ее же саму) и записывает полученный результат под тем же именем. Данная операция часто используется с числами (для умножения, сложение, деления и т.п.).
Строка является перебираемым (итерируемым) объектом. К каждому отдельному ее элементу можно получить доступ. Для этого используются индексы. Индекс первого элемента равен нулю (а остальные – по возрастанию). Можно пойти с конца: тогда последний элемент имеет индекс «-1», а оставшиеся – по убыванию.
Более того, с помощью индексов можно делать срезы: брать некоторую часть строки. Также, предусмотрен шаг среза (по умолчанию равен единице).
Например, нам требуется взять строку начиная с 3-го элемента и заканчивая 15-ым с шагом 2. Это значит следующее: делаем срез с 3-го элемента по 16-ый (он не включается), а из этого промежутка берем не каждый символ, а только четные.
- quote = 'Начинаем программировать простые задачи на Питоне для новичков' print(quote[0]) print(quote[5]) print(quote[-3]) print(quote[1:7]) print(quote[:5]) print(quote[3:16:2]) print(quote[::-1]) -
Результат работы скрипта:
Н а к ачинае Начин иампорм вокчивон ялд енотиП ан ичадаз еытсорп ьтавориммаргорп меаничаН
Запись quote[:5] подразумевает срез от начала строки до 5-го элемента (не включая его). Инструкция quote[::-1] говорит о срезе от начала до конца строки, с шагом -1, т.е. в обратном направлении. Это самый простой способ развернуть написанную фразу.
Так как к символам строки можно обращаться по индексу, то у нее есть некоторая длина. Узнать ее просто – применяем функцию len.
- quote = 'Список команд для новичков' print(len(quote)) -
Результат работы скрипта:
Можете проверить сами, что в данной строке 26 символов (с учетом пробелов).
Булевы операции
Булев тип данных и операции сравнения используются в любом языке программирования. Здесь мы работаем с двумя значениями: истина (True) или ложь (False). Сравнение переменных осуществляется следующими операторами:
– «==» - равны ли переменные; – «!=» - не равны ли значения; – «>», «=», «= y) print(z
Результат работы скрипта:
False True False True True
С булевым типом данных тесно связаны логические операторы:
- AND (логическое И) – проверяет верность обеих частей выражения;
- OR (логическое ИЛИ) – проверяет верность одной из частей выражения;
- NOT (логическое НЕ) – обращает значение, возвращает обратную логическую величину.
Проще всего понять их на основании следующей таблицы (табл. 2).
| Первое выражение | Второе выражение | AND | OR |
| True | True | True | True |
| True | False | False | True |
| False | True | False | True |
| False | False | False | False |
Таблица 2 – Логические операторы в Python
Условные выражения
Работа с логическими операторами и операциями напрямую связана с условными выражениями. Бывают ситуации, когда код программы начинает ветвиться в зависимости от предыдущего результата.
Например, на сайт заходит пользователь: если ему больше 18 лет, то ему показываются все темы, а если меньше – то только некоторые. Для таких случаев используется инструкция «if…elif…else». Она может состоять из 1, 2 или более вариантов ветвления.
Рассмотрим на практике.
- # Одиночное условие age = -5 if age < 0 or age >140: print('Такого возраста не бывает') -
Результат работы скрипта:
Такого возраста не бывает
Отметим, что комментарии в Питоне предваряются решеткой (эта часть кода не будет исполняться). В примере нам потребовалось узнать возраст пользователя. Но мы хотим получить реальное число, поэтому ограничили рамки человеческого возраста от 1 до 139 лет.
В нашем случае какой-то шутник сказал, что ему -5 лет, поэтому мы его предупредили, что так делать не стоит. Конечно, в идеале стоит сделать защиту и от дробных чисел, а также от другого неподходящего типа данных.
- # Многоуровневое условие age = 'Tom' if type(age) is not int: if type(age) is float: print('Введите целое число') elif type(age) is str: print('Не нужно строк!') else: print('Требуется только целочисленное единичное значение') elif age < 0 or age >140: print('Рамки допустимого возраста 1-139 лет') -
Результат работы скрипта:
Не нужно строк!
Пользователь по ошибке вместо возраста вписал свое имя, о чем его предупредили. В других случаях мы также постарались перехватить возможные несоответствия.
Списки, кортежи, множества и словари
Списки, кортежи, множества и словари – еще 4 типа данных в Питоне, включающие в себя несколько значений и являющиеся итерируемыми (перебираемыми, как строки).
Особенности показаны в таблице 3.
| Список (list) | Кортеж (tuple) | Множество (set) | Словарь (dict) |
| Изменяемый | Неизменяемый | Изменяемое | Изменяемый |
| Значения могут дублироваться | Значения могут дублироваться | Значения не могут дублироваться | Ключи не могут дублироваться |
| Доступ по индексу возможен | Доступ по индексу возможен | Доступ по индексу невозможен | Есть доступ к ключам и значениям |
Таблица 3 – Коллекции данных в Python
Список – последовательность произвольных элементов, разделенных запятой. Обозначается квадратными скобками. Можно доставать отдельные составляющие через индекс, добавить в начало списка или конец те или иные значения, удалить элементы, узнать длину, отсортировать.
Рассмотрим часть функционала.
numbers = [3, -7, 32, 11.4, 9] # Добавляем элемент в конец списка numbers.append(101) print(numbers) # Добавляем элемент в начало списка numbers.insert(0, -46) print(numbers) # Удаляем последний элемент numbers.pop() print(numbers) # Разворачиваем список numbers.reverse() print(numbers) # Удаляем первый элемент со значением -7 numbers.remove(-7) print(numbers) # Сортируем список по возрастанию numbers.sort() print(numbers) -
Результат работы скрипта:
[3, -7, 32, 11.4, 9, 101] [-46, 3, -7, 32, 11.4, 9, 101] [-46, 3, -7, 32, 11.4, 9] [9, 11.4, 32, -7, 3, -46] [9, 11.4, 32, 3, -46] [-46, 3, 9, 11.4, 32]
Когда необходимо запретить изменение коллекции, ее удобно представлять в виде кортежа. Более того, он занимает меньшее количество в памяти. Записывается в круглых скобках.
На их основании также возможны срезы, доступ по индексу, нахождение максимума или минимума (если элементы представлены числами), поиск количества вхождений значений.
- numbers = (2, 2, 6, -1, 2, 11) # Узнаем длину кортежа print(len(numbers)) # Ищем максимальное число print(max(numbers)) # Подсчитываем сумму всех элементов print(sum(numbers)) # Выясняем, сколько раз в кортеже встречается двойка print(numbers.count(2)) -
Результат работы скрипта:
6 11 22 3
Множества хороши в ситуациях, когда нужна гарантия уникальности всех элементов. Задаются фигурными скобками. При добавлении дубликата размер сета никак не меняется. Важно и то, что порядок объектов внутри множества не гарантирован, что исключает доступ по индексу.
- names = # Добавляем имена в множество names.add('Игорь') names.add('Матвей') names.add('Дмитрий') print(names) # Удаляем имя из множества names.discard('Николай') print(names) # Очищаем множество names.clear() print(names) -
Результат работы скрипта:
Словарь – особый тип коллекций. Все его элементы состоят из пар «ключ: значение». Ключ должен быть уникальным, а значения могут повторяться. Обозначается фигурными скобками.
Рассмотрим некоторые операции со словарями.
- student = < 'name': 'Федор', 'age': 28, 'is_present_today': True, 'hobbies': ['music', 'chess', 'literature'] ># Выясняем хобби студента print(student['hobbies']) # Узнаем все ключи print(student.keys()) # Узнаем все значения print(student.values()) # Добавляем новую характеристику student['avg_mark'] = 4.2 print(student) # Узнаем рост студента, а если нет такого ключа, то возвращаем 0 print(student.get('height', 0)) -
Результат работы скрипта:
['music', 'chess', 'literature'] dict_keys(['name', 'age', 'is_present_today', 'hobbies']) dict_values(['Федор', 28, True, ['music', 'chess', 'literature']]) 0
Таким образом, в зависимости от ситуации применяется тот или иной тип коллекций. Чаще всего это списки и словари.
Циклы for, while в Питоне
Выше упоминалось, что ряд объектов Питона является итерируемым. Это значит, что элементы этой сущности можно перебирать. Для этого в том числе нужны циклы (особенно for).
Конструкция цикла for представлена следующим образом:
for elem in sequence: что-то выполняем…
for index in range(num): что-то выполняем…
Другими словами, мы можем проходиться по каждому элементу последовательности либо напрямую, либо при помощи функции range и индексов.
Для понимания рассмотрим примеры.
- planets = ['Земля', 'Марс', 'Меркурий', 'Венера', 'Юпитер'] for planet in planets: print(planet) -
Результат работы скрипта:
Земля Марс Меркурий Венера Юпитер
При помощи цикла for мы вывели на печать все имеющиеся в списке планеты. Такого же результата можно добиться через индексы (на основании длины списка). Функция range генерирует целые числа в заданном диапазоне. Так как всего у нас 5 планет, то в нее можно передать параметр 5. С другой стороны, для этого также подойдет длина списка.
- planets = ['Земля', 'Марс', 'Меркурий', 'Венера', 'Юпитер'] for index in range(5): print(planets[index]) for index in range(len(planets)): print(planets[index]) -
Результат работы скрипта (нижеследующее выведется 2 раза):
Земля Марс Меркурий Венера Юпитер
Цикл while требует условие выхода, так как в противном случае может выполняться бесконечно. Хоть может и показаться, что эта бесконечность не нужна, в ряде случаев без нее никак: например, показывать окно программы до тех пор, пока пользователь ее не закрыл.
Реализуем следующую задумку: выведем все числа от 50 до 100 включительно, которые делятся на 7, но не делятся на 2.
- start_number = 50 while start_number
Результат работы скрипта:
63 77 91
Всего таких числа 3. Важно не забыть на каждой итерации увеличивать исходное число, иначе оно никогда не станет равным 100.
Функции
Очень часто встречается, что один и тот же кусок кода необходимо использовать в разных местах. Дублирование – плохая практика, ведущая к ошибкам и сложностям изменений. В таких ситуациях на помощь приходят функции.
Чтобы создать функцию, перед ее именем следует написать ключевое слово def, а также обозначить параметры, если таковые есть. Выше мы уже встречали некоторые из них, которые встроены в Python (sum, print, input).
Ничто не мешает создать свои. Важно учесть и то, что функция всегда что-то возвращает (после ключевого слова return), хоть return и не обязателен (тогда вернется None, т.е. «ничто»).
Структура функции следующая:
def foo(param1, param2): что-то делаем… return значение
Создадим функцию, которая в зависимости от возраста пользователя будет выводить его статус. Если ему меньше 10 лет – то вернем сообщение «Ребенок», если от 10 до 16 – «Подросток», если от 16 до 20 – «Юноша», если от 20 до 35 – «Молодой человек», если от 35 до 45 – «Мужчина», если от 45 до 55 – «Солидный мужчина», если от 55 до 70 – «Зрелый ум», если от 70 до 120 – «Познавший смыслы». В любом другом случае предупредим пользователя: «Такого возраста не бывает».
- def status(age): if type(age) is int: if 0 < age < 10: return 'Ребенок' elif 10
Результат работы скрипта:
Ребенок Молодой человек Зрелый ум Такого возраста не бывает Такого возраста не бывает
Теперь в нашей программе можно использовать данную функцию множество раз с разными аргументами.
Модули, библиотеки, import
Язык Python хорош тем, что в него встроено большое количество модулей и библиотек по умолчанию. Более того, их можно дополнительно установить из официального репозитория при помощи команды «pip install название_модуля» в терминале проекта.
Модули (один файл) и библиотеки (несколько файлов с обязательным наличием документа __init__.py) расширяют возможности программистов и упрощают работу. Не нужно создавать велосипед заново, так как его уже кто-то сделал ранее для вас. Нужно лишь им воспользоваться, чтобы добраться из точки А в точку Б.
В нашем коротком курсе мы рассмотрим абсолютный импорт и все его варианты. Имеется и относительный, но он понадобится позже, когда вы начнете разрабатывать сложные проекты.
Итак, в стандартном наборе модулей имеется random, используемый для работы со случайными числами и генерацией оных, выборкой рандомных значений и т.п. Дополнительных установок не потребуется.
Перечислим все способы абсолютного импортирования в Питоне:
Общий импорт
- import random print(random.randint(2, 12)) -
Результат работы скрипта:
Сначала указываем модуль, а потом функцию через точку.
Импорт всех объектов (не рекомендуется, но не запрещен)
- from random import * print(randint(2, 12)) -
Результат работы скрипта:
Модуль указывать не требуется.
Импорт конкретной функции
- from random import randint print(randint(2, 12)) -
Результат работы скрипта:
Модуль указывать не надо, но остальные его функции и переменные недоступны.
Импорт функции с переименованием
- from random import randint as r print(r(2, 12)) -
Результат работы скрипта:
Импорт модуля с переименованием
- import random as rnd print(rnd.randint(2, 12)) -
Результат работы скрипта:
Работа с файлами
После закрытия программы или по окончании работы скрипта все данные, которые мы получили, исчезают. Иногда, впрочем, нам нужно, чтобы они куда-то сохранились. Python предоставляет возможности для работы с файлами, как для их чтения, так и записи.
Попробуем сгенерировать 10 случайных целых чисел от 1 до 100 и записать их в текстовый файл «random.txt», а затем выведем их на печать в консоль из этого документа.
Нам понадобится контекстный менеджер with и функция open, а также знакомая функция print, которая умеет заносить данные в файл.
Познакомимся с двумя режимами работы open: «r» — чтение, «w» – запись.
- from random import randint # Создаем файл со случайными числами with open('random.txt', 'w', encoding='utf-8') as doc: for number in range(10): print(randint(1, 100), file=doc) # Читаем созданный файл и выводим на печать все сгенерированные числа with open('random.txt', 'r', encoding='utf-8') as doc: for line in doc.readlines(): print(line.strip()) -
37 83 96 45 93 12 67 40 41 75
Итак, контекстный менеджер with автоматически закрывает файл после своей работы (чтобы он не оставался в памяти).
В функцию open хорошей практикой считается не только передача названия файла и режима работы, но и кодировки (чтобы при записи букв российского алфавита, например, мы не получили кракозябры).
Функция print может принимать дополнительный аргумент file, в котором указывается файл на запись.
Метод readlines считывает содержимое документа и формирует из его строк список, по которому мы проходимся. Так как в текстовом файле у нас есть переносы (они появились благодаря функции print, которая при каждом вызове начинает вывод с новой строки), их удобнее удалить с помощью метода strip, примененного к каждой строке.
Изучаем Python: куда дальше?
Чтобы быстро усвоить азы Питона, предоставленного в уроке материала достаточно. Конечно, этого мало, дабы стать специалистом. Поэтому придется самостоятельно дома или при помощи дополнительных курсов углублять знания. Выбор за вами, но некоторые рекомендации мы дадим.
Какие темы освоить в первую очередь? Приводим список тем и команд для новичков:
- типы данных в Python;
- необязательные и ключевые аргументы функций (*args, **kwargs), лямбда-выражения (lambda);
- объекты и классы, инициализация;
- основные встроенные модули (functools, math, string, sys, os, collections, time);
- генераторы и итераторы (yield, iter);
- работа с разными файлами (csv, изображения, текст);
- исключения и ошибки (exceptions);
- списковые включения (list comprehension);
- работа с сетью (requests, BeautifulSoup).
В дополнительных источниках ниже приведен перечень книг и сайтов, которые помогут вам в дальнейшем развитии. Если будут трудности, можно вообще начинать с литературы, где в заголовках встречаются фразы «для детей», «для школьников», «для чайников».
Потом стоит переходить к серьезным трудам (типа М. Лутца), ознакомлению с популярными фреймворками и библиотеками (Django, flask, pandas).
Ответы на вопросы читателей
Насколько сложно выучить Python?
Азы Питона изучаются достаточно просто. Чтобы стать экспертом и высококлассным специалистом потребуется практика и решение реальных задач. Быстро выучить можно, было бы желание.
Какие программы можно создавать, овладев Питоном?
Перечень программ органичен лишь фантазией. Разработчики создают порталы и многофункциональные сайты, парсеры, менеджеры баз данных, системы управления ресурсами, чат-боты, программные интерфейсы, сервисы анализа данных, графические оболочки.
Сколько времени потребуется на изучение Питона?
Стандартных временных рамок не существует. Однако уже через 1-2 месяца при интенсивной самостоятельной работе с языком можно создавать простые парсеры, небольшие игры, автоматизаторы рутинных задач. А вообще, есть правило 10 тыс. часов – именно столько времени практики потребуется, чтобы посчитать себя специалистом хорошего уровня.
Есть ли слабые стороны у Питона?
У любого языка программирования они имеются. Во-первых, скорость работы несколько ниже, чем у компилируемых языков (С++, Java), но ее обычно хватает. Во-вторых, работа с 3d-графикой ограничена. В-третьих, отсутствует проверка типа переменной в момент компиляции.
Какая зарплата у Python-разработчика начинающего уровня?
В зависимости от региона она варьируется, но даже Junior-разработчик вполне может рассчитывать на 30-50 тыс. руб. в первые месяцы работы. По мере роста количества навыков лимиты повышаются в разы, а то и десятки раз.
Как лучше учить Python?
В наше время методик обучения бесчисленное количество: видеокурсы, книги, игровые платформы, буткампы и пр. Поэтому можно выбрать тот способ, что подходит именно вам. Главное помнить: постоянная практика закрепляет пройденный материал. Простая зубрежка материала не даст никаких видимых результатов.
Где можно посмотреть задачи для новичков, простые проекты?
Чтобы попрактиковаться в навыках, необходимо решать разные задачи и сравнивать результаты с другими программистами. Для этого подойдут следующие ресурсы: https://www.codingame.com/, https://www.codewars.com/, https://www.hackerrank.com/. Здесь имеются задания для специалистов любого уровня.
Дополнительные источники (книги и сайты)
- A byte of Python («Укус питона»). URL: https://python.swaroopch.com/
- Pycharm – среда разработки. URL: https://www.jetbrains.com/ru-ru/pycharm/
- Гэддис Тони. Начинаем программировать на Python – 2019, 768 c.
- Дауни Аллен Б. Основы Python. Научитесь думать как программист. – 2021, 304 c.
- Мюллер Дж. П. Python для чайников. – 2019, 416 с.
- Официальный сайт Python. URL: https://www.python.org/
- Портал программистов: ответы на любые вопросы. URL: https://ru.stackoverflow.com/
