Как в idle python сделать нумерацию строк
Перейти к содержимому

Как в idle python сделать нумерацию строк

  • автор:

Как включить номера строк в IDLE?

В основной оболочке IDLE ошибки всегда возвращают номер строки, но среда разработки даже не имеет номеров строк. Нужно ли включать номера строк?

User 14 сен. 2013, в 21:43
Поделиться
Ух ты, IDE без номеров строк? Кто-нибудь еще находит это таким же странным, как я?
Paul Feakins 23 март 2019, в 12:54
Поделиться:
python-idle

3 ответа

Лучший ответ

К сожалению, нет опции отображать номера строк в IDLE, хотя для этого открывается запрос расширения.

Однако есть несколько способов обойти это:

  • В меню редактирования есть опция go to line (для этого есть ярлык Alt + G по умолчанию).
  • В правом нижнем углу экрана отображается текущий номер строки/позиции линии:

Изображение 116213

ChrisProsser 14 сен. 2013, в 20:47
Поделиться
На Mac ярлык для навигации между строками — cmd + j.
tommy.carstensen 25 апр. 2014, в 11:01

Хотя этот обходной путь работает, почему нумерованные строки не были включены в первый выпуск. Это кажется очевидной особенностью. Очень разочаровывает, что это не входит.

JayRugMan 28 дек. 2017, в 01:29

Если использование скобок для определения области применения сбивает с толку, то номера строк — ракетостроение.

aj.toulan 30 май 2018, в 17:33
Показать ещё 1 комментарий

Есть набор полезных расширений для IDLE, называемых IDLEX, который работает с MacOS и Windows http://idlex.sourceforge.net/

Он включает нумерацию строк, и я нахожу ее довольно удобной и бесплатной.

В противном случае существует множество других IDE, некоторые из которых являются бесплатными: https://wiki.python.org/moin/IntegratedDevelopmentEnvironments

Davos 28 апр. 2014, в 09:46
Поделиться
с открытым исходным кодом: pyscripter (работа в python 3.4)
JinSnow 30 нояб. 2016, в 13:06

Хотите верьте, хотите нет, но сейчас мне действительно нравится VS Code от Microsoft. Это отличный легкий IDE с действительно хорошими плагинами Python. Это также работает через Mac / Linux / Windows. Какой странный (хороший) мир, в котором мы живем, где Microsoft собирается с открытым исходным кодом.

Davos 01 янв. 2017, в 21:31

Если вы пытаетесь отследить, какая строка вызвала ошибку, если вы щелкнете правой кнопкой мыши в оболочке Python, где отображается ошибка строки, она выберет «Перейти к файлу/строке», которая приведет вас непосредственно к линия в вопросе.

Martin Ghecea 20 июль 2017, в 06:23
Поделиться

Ещё вопросы

  • 0 Ссылка на элемент id со смещением
  • 0 Как вызвать функцию печати после загрузки страницы?
  • 0 некоторые персонажи ведут себя необычно в функции htmlentities
  • 0 Логика при включении классов cpp в целевой проект c
  • 0 cPanel PHP 5.1 до 5.4 изменить, заголовок (расположение: index.php)
  • 1 Исключение с 64-битным модульным тестом в Visual Studio 2008 Professional
  • 0 как установить кнопку положения внизу?
  • 0 Макет Dojo, абсолютная позиция
  • 0 Angularjs: элементы массива Sum для диаграмм
  • 0 Angular UI-Router вложенные представления
  • 0 Директива в шаблоне другой директивы
  • 1 Создать текстовую область и кнопку анализа
  • 1 Как получить значения объекта, используя свойство идентификатора объекта в C #
  • 1 Как вы создаете объект массивов в Javascript
  • 0 Форма с несколькими действиями
  • 0 Сортировка массива в зависимости от разных значений
  • 1 Неизвестная опция командной строки ‘—recompile-scripts’. После обновления gradle до 5.1.1
  • 0 Рисование wxBitmapButton поверх wxStaticBitmap
  • 1 Панды фильтруют или удаляют строки в нескольких условиях
  • 0 Как настроить несколько классов в моем случае
  • 1 Батик — поместите SVG поверх изображения
  • 0 Как установить объект файла как ngModel, используя $ setViewValue (file)
  • 0 регулярное выражение не соответствует, что я делаю не так?
  • 0 MySQL, используя сумму для столбца, чтобы получить общую сумму для каждой группы
  • 0 Зависание обоих элементов гнезда
  • 1 Создайте файл jar, используя скомпилированные файлы классов и существующий файл MANIFEST.MF
  • 0 Почему последний список в слайдере не fadeIn / FadeOut / show / hide?
  • 1 HTML5: воспроизведение потокового HTTP в домене HTTPS
  • 1 Слияние и добавление данных с помощью Python Pandas [duplicate]
  • 0 Система входа в систему: проблемы с запуском сессии
  • 0 Процедура MSSQL не завершается из PHP
  • 0 WinDivert 1.0.5 DivertRecv () Метод Получить последнюю ошибку 998
  • 1 Не удалось создать сборку. Ссылочная сборка «Google.Apis» не имеет строгого имени.
  • 1 Как поделиться чем-то, используя приложение Twitter на Windows Phone 8?
  • 0 C ++ Статическая Декларация
  • 0 возмущение сигнала с нормальным шумом в C ++
  • 0 Каковы отношения веб-фреймворков и других
  • 1 Сортировка списка наблюдаемых в нокауте
  • 0 Дизайн базы данных — много таблиц с уникальными тегами или одна таблица со всеми из них?
  • 1 Как изменить xaml AppBar на изменение PivotItem в Windows Phone 8.1
  • 0 Бинарный столбец SQL, если пользователь играл
  • 1 Я не могу перестать получать трансляции
  • 1 NAudio Asio Запись и воспроизведение
  • 1 Как создать персонализированный токен пользователя музыки в Apple Music?
  • 0 Я что-то пропустил с этим $ http.jsonp в angularjs?
  • 0 как удалить кнопки «одна страница», «две страницы»… «шесть страниц» в printpreviewdialog?
  • 0 Ionic $ scope.function срабатывает только один раз, затем выдает ошибку при новых кликах
  • 0 калькулятор месяца JavaScript не работает
  • 1 Добавление тега метаданных google_analytics_adid_collection_enabled в Cordova AndroidManifest.xml

Как сделать нумерацию строк для текстового поля в tkinter?

результат

Вот результат: И я хотел слева от текстового поля сделать поле для нумерации строк в текстовом поле. Я пробовал и Label и canvas , но ничего не работает. Можете подсказать как сделать нумерацию строк?

Отслеживать
задан 11 июн 2020 в 6:41
Вадим Платонов Вадим Платонов
152 12 12 бронзовых знаков

Для организации подобной фишки потребуется ОЧЕНЬ много строк кода. Далеко не все продвинутые текстовые редакторы имеют нумерацию строк текста.

11 июн 2020 в 7:02

Само по себе это можно реализовать, единственная проблема — метки могут не совпадать по положению со строками текста в текстовом поле. Как вариант можно сделать два текстовых поля, второе (нередактируемое) для номеров строк, тогда номера будут совпадать по положению со строками текста (при условии что шрифт будет одинаковый по высоте).

11 июн 2020 в 7:12

@Assur я оцениваю объем кода для данной задачи в 100-200 строк (ну, максимум до 500). Это не очень много. И это не сверхсложная задача.

11 июн 2020 в 7:13
Тогда можете изложить ход задачи. Как именно можно реализовать нумерацию?
11 июн 2020 в 7:15
@Assur, 63 строки в итоге
11 июн 2020 в 16:46

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Сделал немного не так как планировал: просто два текстовых поля и скролбар в гриде.

import tkinter as tk from tkinter import ttk root = tk.Tk() # Перенос строк отключен, иначе нумерация будет работать некорректно numbers = tk.Text(root, width=4, bg='lightgray', state=tk.DISABLED, relief=tk.FLAT) numbers.grid(row=0, column=0, sticky='NS') scroll = ttk.Scrollbar(root) scroll.grid(row=0, column=2, sticky='NS') def on_yscrollcommand(*args): scroll.set(*args) # Синхронизация скролбара с текстовым полем numbers.yview_moveto(args[0]) # Синхронизация поля с номерами с текстовым полем text = tk.Text(root, yscrollcommand=on_yscrollcommand, wrap=tk.NONE) text.grid(row=0, column=1, sticky='NSWE') def scroll_command(*args): # Движение скролбара управляет отображением текста в обоих текстовых полях text.yview(*args) numbers.yview(*args) scroll.config(command=scroll_command) def insert_numbers(): count_of_lines = text.get(1.0, tk.END).count('\n') + 1 numbers.config(state=tk.NORMAL) numbers.delete(1.0, tk.END) numbers.insert(1.0, '\n'.join(map(str, range(1, count_of_lines)))) numbers.config(state=tk.DISABLED) insert_numbers() def on_edit(event): # Срабатывает при изменениях в текстовом поле insert_numbers() text.edit_modified(0) # Сбрасываем флаг изменения текстового поля text.bind('>', on_edit) # Нужно чтобы текстовое поле автоматически меняло размер при изменении размера окна root.grid_columnconfigure(1, weight=1) root.grid_rowconfigure(0, weight=1) # Для примера загружаем саму программу в редактор import sys with open(sys.argv[0]) as file: text.insert(1.0, file.read()) root.mainloop() 

Скриншот

Отслеживать
ответ дан 11 июн 2020 в 16:33
48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
11 июн 2020 в 16:51

import tkinter as tk class TextLineNumbers(tk.Canvas): def __init__(self, *args, **kwargs): tk.Canvas.__init__(self, *args, **kwargs) self.textwidget = None def attach(self, text_widget): self.textwidget = text_widget def redraw(self, *args): '''redraw line numbers''' self.delete("all") i = self.textwidget.index("@0,0") while True : dline= self.textwidget.dlineinfo(i) if dline is None: break y = dline[1] linenum = str(i).split(".")[0] self.create_text(2,y,anchor="nw", text=linenum) i = self.textwidget.index("%s+1line" % i) class CustomText(tk.Text): def __init__(self, *args, **kwargs): tk.Text.__init__(self, *args, **kwargs) # create a proxy for the underlying widget self._orig = self._w + "_orig" self.tk.call("rename", self._w, self._orig) self.tk.createcommand(self._w, self._proxy) def _proxy(self, *args): # let the actual widget perform the requested action cmd = (self._orig,) + args result = self.tk.call(cmd) # generate an event if something was added or deleted, # or the cursor position changed if (args[0] in ("insert", "replace", "delete") or args[0:3] == ("mark", "set", "insert") or args[0:2] == ("xview", "moveto") or args[0:2] == ("xview", "scroll") or args[0:2] == ("yview", "moveto") or args[0:2] == ("yview", "scroll") ): self.event_generate(">", when="tail") # return what the actual widget returned return result class Example(tk.Frame): def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) self.text = CustomText(self) self.vsb = tk.Scrollbar(orient="vertical", command=self.text.yview) self.text.configure(yscrollcommand=self.vsb.set) self.text.tag_configure("bigfont", font=("Helvetica", "24", "bold")) self.linenumbers = TextLineNumbers(self, width=30) self.linenumbers.attach(self.text) self.vsb.pack(side="right", fill="y") self.linenumbers.pack(side="left", fill="y") self.text.pack(side="right", fill="both", expand=True) self.text.bind(">", self._on_change) self.text.bind("", self._on_change) self.text.insert("end", "one\ntwo\nthree\n") self.text.insert("end", "four\n",("bigfont",)) self.text.insert("end", "five\n") def _on_change(self, event): self.linenumbers.redraw() if __name__ == "__main__": root = tk.Tk() Example(root).pack(side="top", fill="both", expand=True) root.mainloop() 

Введение в Python

Чтобы начать играть с Python, нам нужно открыть командную строку на твоём компьютере. Ты уже должна знать, как это сделать — мы изучали это в главе Введение в интерфейс командной строки.

Когда будешь готова, следуй приведенным ниже инструкциям.

Мы хотим открыть консоль Python, так что набери python , если работаешь в Windows, или python3 для Mac OS/Linux, и нажми enter .

$ python3 Python > (. ) Type "help", "copyright", "credits" or "license" for more information. >>> 

Твоя первая команда Python!

После запуска Python командная строка изменилась на >>> . Для нас это означает, что сейчас мы можем использовать только команды на языке Python. Тебе не нужно вводить >>> — Python будет делать это за нас.

Если ты хочешь выйти из консоли Python, в любой момент — просто введи exit() или используй сочетание клавиш Ctrl + Z для Windows и Ctrl + D для Mac/Linux. Тогда ты больше не будешь видеть >>> .

Пока что мы не хотим выходить из консоли Python. Мы хотим узнать больше о ней. Давай начнём с чего-нибудь совсем простого. Например, попробуй набрать простое математическое выражение, вроде 2 + 3 , и нажми enter .

>>> 2 + 3 5 

Прекрасно! Видишь, как выскочил ответ? Python знает математику! Ты можешь попробовать другие команды, например:

Чтобы вычислить степень числа, например, 2 в кубе, мы вводим:

>>> 2 ** 3 8 

Поиграй с этим немного и затем вернись сюда :).

Как видишь, Python является прекрасным калькулятором. Если тебе интересно, что ещё можно сделать.

Строки

Как насчет твоего имени? Введи своё имя в кавычках, вот так:

>>> "Ola" 'Ola' 

Ты только что создала свою первую строку! Это последовательность символов, которые могут быть обработаны компьютером. Строка должна всегда начинаться и заканчиваться одинаковым символом. Им может быть одинарная ( ‘ ) или двойная ( » ) кавычка (разницы нет!) Кавычки говорят Python’у, что внутри них находится строка.

Строки могут быть слиты воедино. Попробуй так:

>>> "Hi there " + "Ola" 'Hi there Ola' 

Ты также можешь умножать строки на число:

>>> "Ola" * 3 'OlaOlaOla' 

Если тебе нужно поставить апостроф внутри строки, то есть два способа сделать это.

Используй двойные кавычки:

>>> "Runnin' down the hill" "Runnin' down the hill" 

или поставь перед апострофом обратную косую черту ( \ ):

>>> 'Runnin\' down the hill' "Runnin' down the hill" 

Прикольно, да? Чтобы увидеть своё имя прописными буквами, просто набери:

>>> "Ola".upper() 'OLA' 

Ты только что использовала метод upper своей строки! Метод (такой как upper() ) представляет собой набор инструкций, который должен выполнить Python над заданным объектом (в нашем случае: «Ola» ) при его вызове.

Если ты хочешь узнать количество букв в своём имени, то и для этого тоже существует функция!

>>> len("Ola") 3 

Интересно, почему иногда мы вызываем функцию добавлением . к концу строки (как «Ola».upper() ), а иногда сначала пишем имя функции и затем помещаем строку в скобки? Ну, в некоторых случаях функции принадлежат объектам, например, функция upper() , которая может быть применена только к строкам. В этом случае мы называем функцию методом. В другом случае функции не относятся к чему-то конкретному и могут использоваться для различных типов объектов, например, функция len() . Вот почему мы передаем «Ola» в качестве параметра функции len .

Подведём итог

Хорошо, достаточно о строках. Пока ты узнала следующее:

  • командная строка — ввод команд (кода) в интерактивную командную строку Python приводит к ответам на Python;
  • числа и строки — в Python числа используются для вычислений, а строки — для текстовых объектов;
  • операторы, такие как + и *, объединяют значения для получения нового;
  • функции, такие как upper() и len(), выполняют действия над объектами.

Таковы основы каждого языка программирования, который ты можешь выучить. Готова к чему-то посложнее? Мы уверены, что готова!

Ошибки

Давай попробуем кое-что новенькое. Можем ли мы получить длину числа так же, как длину твоего имени? Введи len(304023) и нажми Enter :

>>> len(304023) Traceback (most recent call last): File "", line 1, in TypeError: object of type 'int' has no len() 

Мы получили нашу первую ошибку! Иконкой мы будем обозначать код, который при запуске сработает не так, как ожидается. Совершение ошибок (даже преднамеренных) — важная часть обучения!

Она говорит о том, что у объектов типа «int» (целые числа) нет длины. Так что же мы можем сейчас сделать? Может быть, мы можем написать наше число в виде строки? У строк ведь есть длина, верно?

>>> len(str(304023)) 6 

Сработало! Мы использовали функцию str внутри функции len . str() преобразует всё в строки.

  • Функция str преобразует объекты в строки
  • Функция int преобразует объекты в целые числа

Важно: мы можем преобразовать число в текст, но не всегда удается преобразовать текст в числа — например, каков будет результат int(‘hello’) ?

Переменные

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

Допустим, мы хотим создать новую переменную с именем name :

>>> name = "Ola" 

Видишь? Это очень легко! Просто введи: name равно Ola.

Как ты уже заметила, твоя программа не возвращает ничего, как было ранее. Так откуда мы знаем, что переменная действительно существует? Просто введи name и нажми Enter :

>>> name 'Ola' 

Ура! Твоя первая переменная:)! Ты всегда можешь изменить то, к чему она относится:

>>> name = "Sonja" >>> name 'Sonja' 

Ты также можешь использовать переменные и в функциях:

>>> len(name) 5 

Круто, правда? Переменными, конечно, может быть что угодно, и цифры тоже! Попробуй следующее:

>>> a = 4 >>> b = 6 >>> a * b 24 

Но что делать, если мы использовали неправильное имя? Можешь догадаться, что произойдет? Давай попробуем!

>>> city = "Tokyo" >>> ctiy Traceback (most recent call last): File "", line 1, in NameError: name 'ctiy' is not defined 

Ошибка! Как ты можешь видеть, в Python есть различные типы ошибок, эта называется NameError. Python выдаст эту ошибку при попытке использовать переменную, которая пока не определена. При возникновении этой ошибки проверь свой код, чтобы узнать, не написала ли ты неправильно имя переменной.

Попрактикуйся в этом какое-то время и посмотри, что ты сможешь сделать!

Функция print

>>> name = 'Maria' >>> name 'Maria' >>> print(name) Maria 

Если просто ввести name , интерпретатор Python вернет строковое представление переменной ‘name’, которым, в нашем случае, являются буквы M-a-r-i-a, окруженные одинарными кавычками, ». Когда ты вводишь print(name) , Python «печатает» содержание переменной на экран, без кавычек, что удобнее.

Как мы увидим позднее, print() пригодится, когда нам будет нужно печатать что-то изнутри функций или когда мы захотим напечатать что-то на нескольких строчках.

Списки

Помимо строк и целых чисел Python имеет богатую коллекцию других типов объектов. Сейчас мы собираемся представить тебе один из них — list (список). Списки — это именно то, о чём ты подумала: объекты, которые являются списками других объектов 🙂

Давай начнем с создания списка:

Отлично, это пустой список. Не особенно полезен, да? Давай создадим список лотерейных номеров. Мы не хотим повторять их каждый раз, так что присвоим список переменной:

>>> lottery = [3, 42, 12, 19, 30, 59] 

Замечательно, у нас есть список! Что мы можем с ним сделать? Для начала посмотрим, как много лотерейных номеров в нашем списке. Есть идеи, какую функцию можно использовать для этого? Ты её уже знаешь!

>>> len(lottery) 6 

Точно! len() вернет тебе количество объектов в списке. Удобно, правда? Пожалуй, мы теперь отсортируем его:

>>> lottery.sort() 

Эта команда не возвращает ничего, она просто меняет порядок номеров в списке. Давайте выведем его на экран и посмотрим, что получилось:

>>> print(lottery) [3, 12, 19, 30, 42, 59] 

Как видишь, номера в списке теперь отсортированы от меньшего к большему. Поздравляем!

Может, нам нужно обратить порядок? Давай сделаем это!

>>> lottery.reverse() >>> print(lottery) [59, 42, 30, 19, 12, 3] 

Просто, правда? Если хочешь добавить что-то к своему списку, то можешь воспользоваться этой командой:

>>> lottery.append(199) >>> print(lottery) [59, 42, 30, 19, 12, 3, 199] 

Если ты хочешь получить только первый номер в списке, то можешь воспользоваться индексами. Индекс — это номер позиции в списке, на котором находится нужное нам значение. Программисты предпочитают начать считать с 0, так что первому объекту в списке соответствует индекс 0, следующему —1, и так далее. Попробуй ввести:

>>> print(lottery[0]) 59 >>> print(lottery[1]) 42 

Как видишь, ты можешь обратиться к различным объектам в своем списке, используя имя списка и индекс объекта в квадратных скобках.

Чтобы удалить что-либо из списка, тебе понадобятся индексы, с которыми мы уже разобрались выше, и команда pop() . Давай попробуем закрепить пройденное на примере: мы будем удалять первый элемент из нашего списка.

>>> print(lottery) [59, 42, 30, 19, 12, 3, 199] >>> print(lottery[0]) 59 >>> lottery.pop(0) 59 >>> print(lottery) [42, 30, 19, 12, 3, 199] 

Сработало как по маслу!

В качестве дополнительной тренировки попробуй следующие индексы: 6, 7, 1000, -1, -6 и -1000. Можешь предсказать результат? Видишь логику работы?

Ты можешь найти перечень всех методов, относящихся к списку, в этой главе официальной документации Python: https://docs.python.org/3/tutorial/datastructures.html

Словари

Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Dictionaries.

Словари схожи со списками, но ты обращаешься к значениям словаря по ключу, а не по индексу. Ключом может быть любая строка или число. Давай создадим пустой словарь:

Это показывает, что мы создали пустой словарь. Ура!

Теперь попробуй следующую команду (можешь заменить значения на своё имя, страну и т.д.):

>>> participant = 'name': 'Ola', 'country': 'Poland', 'favorite_numbers': [7, 42, 92]> 

Этой командой ты создала переменную participant с тремя парами ключ/значение:

  • ключ name , указывающий на значение ‘Ola’ (объект типа строка ),
  • ключ country , указывающий на значение ‘Poland’ (еще одна строка ),
  • и ключ favorite_numbers , указывающий на значение [7, 42, 92] (объект типа список с тремя числами внутри).

Значение конкретного ключа можно узнать следующим образом:

>>> print(participant['name']) Ola 

Видишь, синтаксис похож на работу со списком. Но вместо того, чтобы запоминать индекс, тебе нужно помнить ключ.

Что случится, если мы спросим у Python значение несуществующего в словаре ключа? Можешь предположить? Давай попробуем и узнаем наверняка!

>>> participant['age'] Traceback (most recent call last): File "", line 1, in KeyError: 'age' 

Смотри, другая ошибка! Эта называется KeyError. Python услужливо напоминает, что ключа ‘age’ нет в словаре.

Когда стоит использовать словарь, а когда список? Это хороший вопрос для самостоятельного размышления. Сделай предположение перед тем, как читать дальше.

  • Тебе нужна упорядоченная последовательность элементов? Список — наш выбор.
  • Тебе нужны сочетания ключ/значение, чтобы быстро искать значения (по ключу) в дальнейшем? Словарь отлично подойдет.

Словари, как и списки, изменяемы, т. е. они могут быть изменены после того, как были созданы. Ты можешь добавить новые пары ключ/значение в словарь следующим образом:

>>> participant['favorite_language'] = 'Python' 

Так же как в примере со списками, использование функции len() вернёт число пар ключ/значение в словаре. Попробуй сама:

>>> len(participant) 4 

Надеюсь, всё вышеизложенное понятно. 🙂 Готова к новым приключениям со словарями? На следующей строке тебя ждут изумительные вещи.

Ты можешь использовать команду pop() для удаления элементов из словаря. Скажем, ты хочешь удалить элемент с ключом ‘favorite_numbers’ . Просто набери следующую команду:

>>> participant.pop('favorite_numbers') [7, 42, 92] >>> participant 'country': 'Poland', 'favorite_language': 'Python', 'name': 'Ola'> 

Как видишь, пара ключ/значение с ключом ‘favorite_numbers’ была удалена.

Помимо этого, ты можешь заменить значение, связанное с уже существующим ключом. Набери:

>>> participant['country'] = 'Germany' >>> participant 'country': 'Germany', 'favorite_language': 'Python', 'name': 'Ola'> 

Значение, на которое ссылается ключ ‘country’ , изменилось с ‘Poland’ на ‘Germany’ . 🙂 Захватывает? Ещё бы! Ты выучила еще одну потрясающую штуку!

Подведём итог

Шикарно! Теперь ты знаешь немало о программировании. Мы познакомились с:

  • ошибками — теперь ты знаешь как читать и анализировать ошибки, которые возникают, если Python не понимает твоей команды;
  • переменными — именами для объектов, которые упрощают твой код и делают его более читабельным;
  • списками — последовательностями объектов в заданном порядке;
  • словарями — объектами, хранящими пары ключ/значение.

Готова к продолжению? 🙂

Сравнения

Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Comparisons.

В программировании часто надо что-то сравнивать. Что проще всего сравнить друг с другом? Числа, конечно. Давай посмотрим, как это работает:

>>> 5 > 2 True >>> 3 < 1 False >>> 5 > 2 * 2 True >>> 1 == 1 True >>> 5 != 2 True 

Мы передали Python несколько чисел для сравнения. Как ты можешь заметить, Python сравнивает не только числа, но и результаты методов (например, умножения). Неплохо, правда?

Хочешь спросить, почему мы написали двойной символ равенства == , чтобы проверить, одинаковы ли числа? Потому что одинарные символ равенства = уже задействован под присваивание значения переменным. Ты всегда, всегда должна писать два символа равенства == , если хочешь проверить, одинаковы ли объекты. Мы также можем проверить, различаются ли объекты. Для этого мы используем != , как показано в примере выше.

Дадим Python еще два задания:

>>> 6 >= 12 / 2 True >>> 3 2 False 

Супер! Хочешь еще? Тогда попробуй вот это:

>>> 6 > 2 and 2 < 3 True >>> 3 > 2 and 2 < 1 False >>> 3 > 2 or 2 < 1 True 

Ты можешь передать Python столько чисел, сколько захочешь, и он будет возвращать ответ! Хитро, правда?

  • and — если ты используешь оператор and , оба сравнения по обе стороны от него должны быть True (верны), чтобы результат всей команды был равен True.
  • or — если ты используешь оператор or , достаточно одному из сравнений по обе стороны от него быть равным True, чтобы результат всей команды также равнялся True.

Ты когда-нибудь слышала выражение «сравнивать тёплое с мягким»? Попробуем сделать что-то подобное в Python:

>>> 1 > 'django' Traceback (most recent call last): File "", line 1, in TypeError: '>' not supported between instances of 'int' and 'str' 

Как мы видим, Python не знает, как сравнить число ( int ) и строку ( str ) между собой. Поэтому он просто возвращает нам ошибку TypeError и предупреждает, что объекты заданных типов не могут быть сравнены.

Логические значения

Между прочим, ты только что познакомилась с новым типом объектов в Python. Он называется Boolean (логический) — и это, наверное, самый простой тип из всех.

Существует только два логических объекта в Python:

  • True (Истина),
  • False (Ложь).

Чтобы Python понимал тебя, ты всегда должна писать True с заглавной буквы (остальные прописные). true, TRUE, tRUE не будут восприниматься — только True. (Та же логика применима к False, само собой.)

Ты можешь присваивать переменным логические значения! Смотри сюда:

>>> a = True >>> a True 
>>> a = 2 > 5 >>> a False 

Попрактикуйся с логическими значениями на примере этих выражений:

  • True and True
  • False and True
  • True or 1 == 1
  • 1 != 2

Поздравляем! Логические значения — одна из самых классных фишек программирования, и ты только что научилась ими пользоваться!

Сохраняй!

До сих пор мы писали весь код в интерактивной консоли, где Python сразу анализировал, обрабатывал и выполнял наши команды. Мы были ограничены одной строкой. Обычно, программы сохраняются в файлах и выполняются интерпретатором или компилятором нашего языка программирования. Пока мы только просили интерпретатор Python выполнять наши однострочные команды из консоли. Однако нам понадобится больше места для следующих задач, поэтому задача минимум:

  • закрыть интерактивную консоль Python;
  • открыть наш текстовый редактор;
  • сохранить код в новом файле;
  • запустить его!

Чтобы закрыть интерактивную консоль Python, просто набери функцию exit() :

>>> exit() $ 

Это вернёт тебя в командную строку.

В главе Текстовый редактор мы выбрали себе редактор. Нам нужно открыть его сейчас и записать следующий код в новый файл (или, если ты используешь Chromebook, создай новый файл в облачной IDE и открой файл, который будет во встроенном редакторе кода):

print('Hello, Django girls!') 

Очевидно, ты уже искушенный Python разработчик, так что не стесняйся добавить что-нибудь по своему вкусу из ранее изученного.

Теперь нам нужно сохранить файл с кодом и дать ему подходящее имя. Давай назовем его python_intro.py и сохраним на рабочий стол. Мы можем назвать файл как хотим, но важно, чтобы название заканчивалось на .py. Расширение .py говорит операционной системе, что это исполняемый файл python, и Python может его запустить.

Примечание Ты должна уже была заметить одну из крутейших вещей в редакторах кода: цвета! В интерактивной консоли Python весь текст был одного цвета, сейчас же функция print должна отличаться по цвету от текста, который передается в неё в качестве аргумента. Это называется «синтаксическая подсветка», и это действительно удобная штука для программирования. Цвет подсветки может подсказать тебе о незакрытой кавычке или опечатке в ключевом слове (таком как def в определении функции, с которым мы скоро познакомимся). Это одна из причин, по которой мы используем редакторы кода 🙂

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

Для Mac команда будет выглядеть так:

$ cd ~/Desktop 

Основы программирования на языке Python. Часть 1

С чем у вас ассоциируется слово «питон»? Если со змеей, то пора расширить свой круг мышления! В этой статье мы узнаем, в чем особенности программирования на «змеином» языке, выберем себе необходимые инструменты для работы и напишем свою первую программу.

Вводная информация. Инструменты для работы

Python — высокоуровневый язык программирования, отдающий большой приоритет простоте и удобству написания кода, поэтому он является одним из самых простых в освоении.

Файлы кода, написанного на Python, имеют расширение .py. Для их работы на компьютер необходимо установить интерпретатор языка – программу, которая и будет выполнять написанный нами код. Найти его установочный файл можно на официальном сайте python.org во вкладке Downloads.

Важно обращать внимание на то, что некоторые версии этого языка несовместимы с определенными операционными системами. Например, все версии Python выше 3.9 не работают на Windows 7 или ниже.

Помимо интерпретатора, который будет читать наш код, нам необходимо приложение, где мы будем его писать — среда разработки. И здесь появляется большое количество вариантов. Самыми популярными средами разработки являются:

  • IDLE. Эта среда разработки идет в комплекте с интерпретатором и является самой простой из всех. Во всех смыслах слова «простой».

Преимущества:
— малый вес и небольшое количество потребляемой памяти позволят запустить его на любом устройстве;
— максимально простая организация — отдельный файл открывается в отдельной вкладке.

  • PyCharm. Это как танк Т-34, по сравнению с которым IDLE — трехколесный велосипед.

Преимущества:
— мощный функционал, в том числе более удобная подсветка кода, автоматическая помощь при написании кода, удобное выделение ошибок прямо в коде и так далее.

Если ваш компьютер мощнее калькулятора и вы хотите получать небольшие, но полезные подсказки при написании кода — это ваш кандидат.

  • Visual Studio Code (VS Code). Редактор кода, разработанный компанией Microsoft. Он предоставляет среду разработки с расширенными функциональными возможностями для различных языков программирования. Доступен на множестве операционных систем, включая Windows, macOS, Linux.

Преимущества:
— поддержка большого количества языков программирования;
— широкий выбор расширений, которые позволяют адаптировать программу под свои нужды;
— понятный и простой интерфейс.

Несмотря на недостатки, Visual Studio Code является популярным и мощным выбором для разработки!

Вывод и ввод данных. Переменные

Программам почти всегда приходится работать с какой-то информацией — данными. Они ее получают от пользователя, как-то преобразуют и сообщают о результатах своих действий. По своей сути слова «данные» и «информация» являются равнозначными, так что не удивляйтесь, если мы или кто-то другой будут употреблять эти слова в качестве синонимов.

Процесс получения программой информации называется вводом данных в программу. В рамках нашего изучения языка Python мы научимся вводить данные в программу вручную (пользователь вписывает данные с клавиатуры) и из файлов.

Вывод данных — это процесс отображения программой обработанных данных. В качестве способа вывода мы будем использовать консоль, то есть текстовое приложение, которое уже встроено в среды разработки — те самые IDLE, PyCharm и VS Code. С помощью этого приложения программа может отображать текст на экране компьютера.

Давайте научим нашу программу писать сообщения и отображать их на экран! Но для начала научимся создавать файл, в котором мы и будем писать наш код. Рассмотрим на примере PyCharm.

  1. Откройте PyCharm и выберите проект, в котором вы хотите создать файл .py (или создайте новый).
  2. В главном меню выберите «File» (Файл) и затем «New» (Создать).
  3. В раскрывающемся меню выберите «Python File» (Файл Python).
  4. Появится диалоговое окно, где вы можете ввести имя нового файла. Убедитесь, что имя файла заканчивается на «.py», чтобы он был распознан как файл Python. Например, «example.py».
  5. Нажмите «OK» и новый файл .py будет создан в рабочей директории вашего проекта в PyCharm.

Теперь вы можете открыть созданный файл .py и начать писать код на языке Python.
Открываем файл и ищем свою первую программу:

print(“Hello world”)

После ее запуска будет выведено сообщение: Hello world.

Поздравляем, вы стали программистом!

А теперь начнем становиться хорошими программистами и разберемся с тем, что мы написали:

  • print – функция вывода данных на экран.
    После функции в скобках нужно записать текст, который мы хотим вывести. Если вписать в скобках несколько значений через запятую, они будут выведены на экран в одну строку через пробел.
  • “Hello world” – это строка (= просто кусочек текста), которую мы создали и сразу передали в функцию print.

Сейчас поговорим о том, что такое переменная и что сложного в том, чтобы придумать ей имя.

Когда мы вывели строку на экран, программа сразу ее забыла. Но иногда нам важно, чтобы программа помнила то, что мы в нее ввели. Тогда нужна уже не строка, а переменная.

Переменные используются для долгосрочной работы с данными. Присвоив имя какому-либо значению, то есть какой-то информации, хранимой в памяти: строке, числу и т.д. — в любом месте программы к нему можно обратиться именно по этому имени.

Переменная — это именованная информация, которая хранится в компьютере при работе программы.

Схема создания переменной:

имя_переменной = значение

Давайте сохраним строку “Hello world” как переменную, присвоив ей имя s.

Какое имя дать переменной — извечная проблема программирования. Основные правила и советы по именованию переменных:

    Имя переменной может состоять только из букв латинского алфавита, цифр и символа «_».

  1. Хорошей практикой является давать переменным осмысленные имена.

Последний совет стоит раскрыть. Например, для строки “Hello world” можно было бы выбрать имя string (строка) или подобное, а для переменной, которая что-то считает — count (счет). Главное, чтобы было по названию понятно, что в ней.

Конечно, никто не может запретить вам назвать переменную sdhcjUBbh56. Но, во-первых, написать это же имя во второй раз без опечатки будет тяжело, а, во-вторых, уже к середине программы с большим количеством таких переменных вы забудете, какая за что отвечает.

Ввод данных с клавиатуры — самый простой способ передать значения программе в процессе ее работы. Он происходит с помощью функции input(), после срабатывания которой программа останавливается и ждет, пока мы введем в нее значение. В скобках функции можно указать сообщение, которое будет выведено программой перед тем, как она «перейдет в режим ожидания».

Важно сразу запомнить: любые данные, введенные в программу с помощью команды input, будут переданы в формате строки, поэтому, если ваша программа предполагает ввод чисел для дальнейших математических операций с ними, необходимо преобразовать их из строки в числовой тип данных. О том, как это сделать, мы поговорим чуть позже

Типы данных

Выше мы разобрались, что являет собой переменная s. А что еще можно записать в переменную?

Типы данных — виды значений, которые может принимать переменная.

Большую часть из типов данных мы подробно будем изучать по мере необходимости. Для начала неплохо хотя бы знать о существовании основных и об их обозначениях в Python:

    Целые числа (int) – хранят любые целые числа. Это ноль, а также все положительные и все отрицательные числа, используемые при счете.

Один тип данных может быть приведен к другому по обозначению. Например:

  • Дробное число можно привести к целому, прописав его внутри команды int — тогда его дробная часть просто отбрасывается. Если привести целое число к дробному командой float, оно получит десятичную дробную часть, равную 0.

  • Строки, состоящие только из цифр, можно привести к целочисленному типу командой int (допустим, для корректной работы математических операций), и наоборот — число можно сделать строкой командой str.

  • Логические значения имеют соответствие с целыми числами: значение True соответствует 1, а False – 0. Такие результаты мы и получим при переводе из числа в логическое значение командой bool, или наоборот — командой int.

Итак, мы познакомились с некоторыми основными типами данных. Таблицу ниже вы можете распечатать или сохранить себе как изображение для удобства использования.

Математические операции

Как работать с числами и какие математические действия применимы к строкам?

Python содержит все базовые математические операции для работы с целыми и дробными числами:

Кроме обычного деления в Python есть еще два, основанных на принципе деления с остатком — когда вместо дробной части указывается остаток.

Например: 20 / 6 = 3 (ост. 2) – целой частью от деления будет 3, остатком от деления — 2.

Так, у нас на вооружении есть команды целочисленное деление и остаток от деления. Каждая из этих операций выдаст нам соответствующее значение.

Переменная может записывать саму себя в собственное изменение, то есть у нас есть возможность быстро поменять значение переменной, используя ее текущее значение. Здесь для большего удобства можно применять краткую запись оператора — когда он прописывается перед знаком = (равно), а после него — значение, на которое должна измениться переменная.

Так, следующий код

выведет на экран число 6.

У нас также есть возможность проводить операции между величинами разных типов данных.

Например, в коде

переменная а имеет тип int, переменная b имеет тип float, и их сумма, записанная в переменную с, тоже имеет тип float.

Какой приоритет операций будет соблюдаться в программе? Такой же, как в обычной математике:

  1. Возведение в степень.
  2. Умножение/деление.
  3. Сложение/вычитание.

Для изменения порядка операций также можно использовать скобки.

Сложение и умножение также применимы к строкам:

  • Складывать можно несколько строк — они будут «слипаться», создавая одну большую строку.
  • Возможно умножение строки на целое число. Тогда будет создана новая строка, состоящая из повторяющейся исходной.

Здесь важно помнить, что строка, состоящая только из цифр, — все равно строка, и применение этих операторов к ней будет применено именно как к строке, а не числу:

Практика

Теперь пришло время закрепить полученные навыки «в бою». Так, со временем начнем и собственные игры создавать. Спойлер: в этой статье.

Попробуем написать простую программу.

Пользователь вводит в программу 2 числа, программа возвращает ему их сумму.

Здесь мы в первых двух строках программы считываем строки, введенные пользователем, и превращаем их в числа, затем в 3-ей строке находим сумму чисел и выводим ее.

Вариант 2.

Эту же задачу можно решить другими способами:

В этом решении, в отличие от предыдущего, мы сохранили сумму в отдельную переменную summ и вывели на экран уже ее.

Вариант 3.

Здесь мы в переменные сохранили строки, а преобразовали их в числа уже при подсчете.

Вариант 4. Можно даже так:

В таком решении нет никаких переменных, считанные с консоли данные сразу подставляются в выражение.

Помимо этого Python поддерживает работу с двоичными разрядами чисел. Для этого существуют битовые операторы!

Для начала вспомним про двоичную систему счисления в статье «Системы счисления». Каждое число представляется в виде последовательности двоичных разрядов, которые принимают значение 0 или 1. Над такими числами можно выполнить следующие операции:

  • Побитовое И (&)
    Оператор & возвращает 1 в каждом бите, если оба операнда (в данном случае разряды чисел) содержат 1, иначе возвращает 0.
a = 5 # 0101 в двоичной системе
b = 3 # 0011 в двоичной системе
c = a & b # 0001 в двоичной системе
print(c) # выводит 1
  • Побитовое ИЛИ (|)
    Оператор | возвращает 1 в каждом бите, если хотя бы один операнд содержит 1, иначе возвращает 0.
a = 5 # 0101 в двоичной системе
b = 3 # 0011 в двоичной системе
c = a | b # 0111 в двоичной системе
print(c) # выводит 7
  • Побитовое исключающее ИЛИ (^)
    Оператор ^ возвращает 1 в каждом бите, если только один из операндов содержит 1, иначе возвращает 0.
a = 5 # 0101 в двоичной системе
b = 3 # 0011 в двоичной системе
c = a ^ b # 0110 в двоичной системе
print(c) # выводит 6
  • Побитовый сдвиг вправо (>>)
    Оператор >> сдвигает биты числа вправо на указанное количество позиций.
a = 5 # 0101 в двоичной системе
b = a >> 1 # 0010 в двоичной системе
print(b) # выводит 2

a = 5 # 0101 в двоичной системе
b = a print(b) # выводит 10

Потренируемся применять полученные навыки на примере задачи 15.2 номера ОГЭ.

Задание. Написать программу, которая в последовательности натуральных чисел определяет сумму чисел, кратных 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 4. Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести число — сумму чисел, кратных 4.

Решение. Мы рассмотрим только части решения, которые понадобятся в дальнейшем, чтобы решить эту задачу полностью. Для того, чтобы решить задачу, понадобится материал из второй части статьи!

1. Для того, чтобы посчитать количество чисел, а также сами числа, будем использовать конструкцию:

n = int(input()) # для количества чисел
a = int(input()) # для самих чисел подряд

В данном случае программа считывает числа, которые пользователь вводит с клавиатуры, а затем переводит их в формат int, чтобы в дальнейшем выполнять с ними действия.

2. Далее необходимо задать переменную для хранения суммы всех чисел, которые кратны 4:

sum_chisel = 0 # переменная для хранения суммы

3. В программе нужно будет прописать конструкцию, которая проверит кратность числа, но пока у нас недостаточно знаний. Поэтому напишем часть конструкции.

Число кратно 4 в том случае, если его остаток от деления на 4 равен 0, поэтому записать это можно так:

a % 4 == 0 # проверка на кратность

4. Если наше условие будет выполняться, то к общей сумме нужно будет добавить само число:

sum_chisel = sum_chisel + a # добавление текущего числа к общей сумме

5. Чтобы в конце программы увидеть сумму, которую мы получили:

Для дальнейшего решения мы будем использовать информацию из второй части статьи.

6. Мы точно не знаем, сколько чисел будет изначально вводится, у нас пользователь задает это число. Ранее мы его считали. Тогда какую конструкцию необходимо использовать, чтобы сделать проверку каждого числа? Это range. То есть программа n раз повторит то, что будет находиться в цикле.

for i in range(n): # проверка всех чисел на условие

7. Теперь необходимо сделать проверку чисел на кратность. Выше мы уже написали часть этой проверки. Изучив вторую часть статьи, сразу становится понятно, что использовать нужно if. Если условие кратности выполнилось, то к сумме таких чисел добавляем текущее число:

if a % 4 == 0:
sum_chisel = sum_chisel + a

Тогда получим следующий код:

n = int(input())
sum_chisel = 0

for i in range(n):
a = int(input())
if a % 4 == 0:
sum_chisel = sum_chisel + a
print(sum_chisel)

Таким образом, даже самые простые задачи можно решать множеством способов, и вам предстоит научиться выбирать из них наилучший. Впереди нас ждет знакомство с еще большим количеством особенностей языка и их практическим применением. Приглашаем вас продолжить изучение данной темы в статье «Основы программирования на языке Python. Часть 2», а также потренироваться применять полученные знания на практике.

Фактчек

  • Для работы программ, написанных на языке Python, необходим интерпретатор языка. Написание программы можно производить в любой из удобных сред разработки.
  • Для вывода данных на экран используется функция print(); для ввода данных с клавиатуры используется функция input().
  • Для долгосрочной работы с данными используются переменные, которым могут быть присвоены различные типы данных. Между типами данных возможен перевод, для этого используются их обозначения.
  • Python поддерживает все основные математические операторы для работы с числами.
  • Битовые операторы — это операторы, которые выполняют операции над битами двоичного представления чисел. Они позволяют производить побитовые операции И, ИЛИ, исключающее ИЛИ, а также сдвиги битов влево и вправо.

Проверь себя

Задание 1.
Файл с расширением .py — это…

  1. Ссылка на русскоязычный сайт
  2. Файл программы Python
  3. Установочный файл интерпретатора Python
  4. Такого не бывает

Задание 2.
Выберите допустимое имя переменной:

  1. 123number
  2. constant!
  3. eto_Stroka
  4. count-strings

Задание 3.
Результатом записи выражения “23” * 2 будет:

Задание 4.
Результатом записи int(2.88) ** 4 будет:

Ответы: 1. — 2; 2. — 3; 3. — 2; 4. — 3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *