Метод 1: использование hex ()
Мы можем преобразовать строку в шестнадцатеричную с помощью метода hex (). Метод hex () принимает параметр в целочисленной форме, и для этого сначала мы должны преобразовать строку в целое число, а затем передать это значение методу hex (), как показано ниже:
Пример: string_to_hex.py
Выход:
Строка 3: Мы создали строку для демонстрации.
Строка 6: мы передаем эту строку методу int () с базой 16. Теперь этот метод int () преобразует строку в шестнадцатеричное целочисленное значение.
Строка 9: Мы печатаем значение, которое получаем после преобразования строки в целое шестнадцатеричное число.
Строка 10: Мы также печатаем тип значения, чтобы подтвердить, что строка теперь имеет целочисленную форму.
Строка 12: мы знаем, что встроенный метод hex (n) принимает целочисленное значение, преобразуя целое число в шестнадцатеричную строку. Вот почему нам нужно преобразовать строку в целое число, чтобы передать ее в метод hex (). Мы передали это значение base16INT методу hex () и получили шестнадцатеричную строку hex_value.
Строка 13: Мы печатаем это преобразованное шестнадцатеричное значение.
Строка 16: мы печатаем тип преобразованного шестнадцатеричного значения, которое показывает в выводе, что это строковый тип.
Итак, теперь мы преобразовали строку в шестнадцатеричное значение.
Заменить все вхождения одной подстроки другой подстрокой
Пайтона типа также есть метод для замены вхождений одной подстроки с другой подстроки в заданной строке. Для более сложных случаев можно использовать . :
принимает два аргумента , и , содержащий подстроку , которая должна быть заменена на подстроку. Необязательный аргумент определяет число замен , чтобы быть:
Например, для того , чтобы заменить с в следующей строке, мы можем назвать с и :
Если данная строка содержит несколько примеров , которые соответствуют аргументу, все вхождения заменяются значением подаваемого в :
если, конечно, мы не поставляем значение для . В этом случае вхождения собираются заменяются:
Применение replace для замены нескольких значений
С помощью данного метода возможно выполнить поиск и замену нескольких значений, например элементов коллекции:
Копировать
С помощью словаря
Предыдущий пример позволяет заменить несколько элементов, однако все они имеют одно и то же значение «i». Если необходимо заменить несколько разных значений, например «i» на «I» и «a» на «A», то необходимо реализовать чуть более сложную программу с использованием словарей:
Копировать
Здесь replace используется в функции, аргументы которой исходная строка и словарь со значениями для замены.
У этого варианта программы есть один существенный недостаток, программист не может быть уверен в том, какой результат он получит. Дело в том, что словари — это последовательности без определенного порядка, поэтому рассматриваемый пример программы может привести к двум разным результатам в зависимости от того, как интерпретатор расположит элементы словаря:
В Python версии 3.6 и более поздних порядок перебора ключей будет такой же, как и при котором они созданы. В более ранних версиях Python порядок может отличаться.
Для решения этой проблемы можно заменить обычный словарь на упорядоченный словарь OrderedDict, который нужно импортировать следующей командой:
Копировать
Помимо импорта в программе нужно поменять буквально одну строку:
Копировать
Изменить её надо на:
Копировать
Изменение заглавной буквы строки
Тип строки Python предоставляет множество функций, которые влияют на использование заглавных букв в строке. Они включают :
С юникод строк (по умолчанию в Python 3), эти операции не являются 1: 1 отображения или обратимым. Большинство из этих операций предназначены для отображения, а не нормализации.
создает строчную строку, которая подходит для случая нечувствительных сравнений. Это более агрессивный , чем и может изменить строки, которые уже находятся в нижнем регистре или вызывают строки , чтобы расти в длину, и не предназначена для отображения.
Преобразования, которые происходят в рамках casefolding, определяются Консорциумом Unicode в файле CaseFolding.txt на их веб-сайте.
принимает каждый символ в строке и преобразует его в верхнем регистре эквивалента, например:
делает обратное; он берет каждый символ в строке и преобразует его в строчный эквивалент:
возвращает заглавную версию строки, то есть, он делает первый символ имеет верхний регистр , а остальные нижние:
возвращает название обсаженной версии строки, то есть, каждая буква в начале слова производится в верхнем регистре , а все остальные сделаны в нижнем регистре:
возвращает новый объект строки , в которой все строчные символы поменяны местами в верхний регистр и все символы верхнего регистра в нижний:
Использование в качестве методов класса
Следует отметить , что эти методы могут быть названы либо на струнных объектов (как показано выше) или как метод класса от класса (с явным вызовом и т.д.)
Это особенно полезно при применении одного из этих методов для многих строк сразу, скажем, на функции.
О типерроре
Перед отображением возможных решений, сначала мы должны понимать, почему такая ошибка происходит вообще, поэтому мы повторим основы. В Python у нас есть несколько основных типов данных. В этой статье мы сосредоточимся на и
INT представляет целочисленные числа, например: -523, 123, 23232.
Если мы хотим, чтобы наша переменная была из Тип, мы должны записать это таким образом:
integer = 5 print(integer) print(type(integer))
Результатом этого сценария будет следующим образом:
5
Как мы видим, наша переменная – « ‘ тип.
Str (строка) представляет все виды текстов, слов, например: , , Отказ
Итак, как мы это делаем в Python?
string = 'cat' print(string) print(type(string))
Выход:
cat
Как вы можете видеть, для нашей программы написать слово Мы должны использовать цитаты.
После повторения основ, вы все равно можете не заметить, что вы сделали ошибку, поэтому я дам вам возможную причину этой ошибки.
Когда в Python мы хотим сделать некоторые математические операции, мы должны использовать цифры (как вы точно знаете), поэтому наши номера не могут быть в кавычках, а именно, если мы хотим добавлять номера, например, 10 и 5 друг к другу, Тогда в Python это будет выглядеть так:
first_integer = 10 second_integer = 5 print(first_integer + second_integer)
Выход:
15
А будет вызван этим сценарием:
first_integer = '10' second_integer = 5 print(first_integer + second_integer)
Выход:
Traceback (most recent call last): File "location of your python file", line 3, in print(first_integer + second_integer) TypeError: can only concatenate str (not "int") to str
В этом скрипте произошла ошибка с кавычками, потому что сейчас int
Полезные константы строкового модуля
Пайтона модуль предоставляет константы для операций , связанных строк. Для того, чтобы использовать их, импортировать модуля:
Стечение и :
Содержит все символы нижнего регистра ASCII:
Содержит все символы ASCII в верхнем регистре:
Содержит все десятичные цифры:
Содержит все шестнадцатеричные символы:
Содержит все восьмеричные символы:
Содержит все символы , которые считаются знаки препинания в локали:
Содержит все символы ASCII, которые считаются пробелами:
В режиме сценария, напечатает фактические символы, используйте , чтобы получить вернулся выше строка. :
Содержит все символы, которые считаются печатными; сочетание , , и .
Отсутствующие функции определения
Еще одна общая причина NameError Исключение представляет собой недостающее определение функции. Как и переменные определения, читатель должен определить любую функцию, прежде чем использовать его. Рассмотрим следующий код.
>>> some_other_string = 'Hello World' >>> some_function(some_other_string) Traceback (most recent call last): File "", line 1, in NameError: name 'some_function' is not defined >>>
Опять же, функция не определен до его использования. Исправьте эту проблему, как показано ниже. Определить перед использованием этого.
>>> def some_function(some_string): ... print(some_string) ... >>> some_other_string = 'Hello World' >>> some_function(some_other_string) Hello World >>>
Обоснуйте строки
Python предоставляет функции для выравнивания строк, позволяя заполнять текст, чтобы упростить выравнивание различных строк.
Ниже приведен пример и :
40 -> 2555 миль (4112 км.) 19 -> 63 миль. (102 км.) 5 -> 1381 миль. (2222 км.) 93 -> 189 миль. (305 км.)
и очень похожи. Оба имеют параметр и необязательный параметр. Любая строка , создаваемая эти функции, по крайней мере до тех пор , как параметр , который был передан в функцию. Если строка длиннее , чем alread, она не усекается. аргумент, который по умолчанию используется символ пробела должен быть один символ, а не multicharacter строка.
функция подушечки конца строки она называется на с до тех пор, пока длиной символов. функция подушечки начала строки в подобной манере. Таким образом, и в названиях этих функций относятся к стороне , что исходная строка, а не , расположена в выходной строке.
Строковые операторы
Оператор | Описание |
---|---|
+ | Он известен как оператор конкатенации, используемый для соединения строк по обе стороны от оператора. |
* | Известен как оператор повторения. Он объединяет несколько копий одной и той же строки. |
[] | оператор среза. Он используется для доступа к подстрокам определенной строки. |
оператор среза диапазона, используется для доступа к символам из указанного диапазона. | |
in | Оператор членства. Он возвращается, если в указанной строке присутствует определенная подстрока. |
not in | Также является оператором членства и выполняет функцию, обратную in. Он возвращает истину, если в указанной строке отсутствует конкретная подстрока. |
r / R | Используется для указания необработанной строки. Необработанные строки применяются в тех случаях, когда нам нужно вывести фактическое значение escape-символов, таких как «C: // python». Чтобы определить любую строку как необработанную, за символом r или R следует строка. |
% | Необходим для форматирования строк. Применяет спецификаторы формата, используемые в программировании на C, такие как %d или %f, для сопоставления их значений в python. Мы еще обсудим, как выполняется форматирование в Python. |
Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.
str = "Hello" str1 = " world" print(str*3) # prints HelloHelloHello print(str+str1)# prints Hello world print(str) # prints o print(str); # prints ll print('w' in str) # prints false as w is not present in str print('wo' not in str1) # prints false as wo is present in str1. print(r'C://python37') # prints C://python37 as it is written print("The string str : %s"%(str)) # prints The string str : Hello
Выход:
HelloHelloHello Hello world o ll False False C://python37 The string str : Hello
Best practices
Как из строки выделить числа
Для извлечения чисел из строки можно воспользоваться методами строк:
Данный пример извлекает только целые положительные числа. Более универсальный вариант – регулярные выражения:
Как перевернуть строку
Существует несколько способов перевернуть строку, начиная от классического – запустить цикл в обратной последовательности, выбирая каждый символ с конца и вставляя его в новую строку, и заканчивая срезами – вариант только для Питона.
С помощью среза — самый быстрый способ:
Использование и
Как удалить последний символ в строке
Как и в предыдущем случае – чтобы убрать последний символ наиболее простым и быстрым вариантом будет использование среза:
Как убрать пробелы из строки
В случае удаления пробелов со строки может быть два варианта:
1 Обрезать строку так, чтобы удалить с нее первый и последний пробел, такой вариант может пригодиться, когда пользователь случайно поставит пробел в конце введенного текста:
2 Удалить со строки все пробелы:
Работа со строками — неотъемлемая часть создания практически любого приложения, где используется текст, и язык программирования Python предоставляет широкие возможности работы с такими данными.
Учебник по программированию на Java — 81 — Чтение из файлов
Я написал этот простой код и попытался выполнить в Windows 10 CMD … и получил сообщение об ошибке:
код:
Я использую Python 3.7.0 в Windows 10
2 Возможный дубликат Python: TypeError: невозможно объединить объекты ‘str’ и ‘int’
Команда input () в строке 2 вашего кода превратит любой ввод, предоставленный пользователем, в STRING. Поэтому, когда вы пытаетесь добавить эту СТРОКУ к числу (с плавающей точкой или целым числом; в вашем случае у вас есть целое число, то есть коэффициент = 2), это не будет (и не должно!) Работать.
Следовательно, для продолжения операции + значения слева и справа от этого знака + должны быть одного типа (строки или числа).
Большое спасибо !!!! он решил проблему … Я новичок в программировании, и теперь я понимаю, что input () принимает значение как String и сохраняет его в переменной age
В этой ошибке указано, что она может только объединить строку в строку. В своей программе вы пытались объединить жало и целое число
Команда ввода будет получать только строку от пользователя, и возраст, который вводит пользователь, должен приниматься как строка. Примеры: 45, 25, 36 и т. Д.
Эта программа пытается объединить ’45’ + 2. Что вызывает эту ошибку.
Вместо этого вы можете попробовать преобразовать вводимые пользователем данные в int, а затем объединить их.
Вы добавляете строку в int, потому что функция возвращает строку. Использовать .
Преобразуйте возраст в int для математических расчетов:
И в качестве бонуса вы можете использовать опцию .format ():
В python вы не можете объединить два совершенно разных типа данных.
Думаю об этом…
Ну, в других языках программирования, таких как C, целое число будет преобразовано в char (или персонаж) и подвергнется операции 2 …
Итак, в этом случае вам нужно явно указать (или строковый) тип данных, отличный от целое число (или ) с помощью функции .
Синтаксис:
Пример: даст 7
Итак, вам нужно либо принять ввод как целое число или иначе преобразовать строку в целое число при вычислении :
Или
В python вы не можете объединить два совершенно разных типа данных.
Думаю об этом…
Ну, в других языках программирования, например C, целое число будет преобразовано в char (или персонаж) и подвергнется операции 2 …
Итак, в этом случае вам нужно явно указать (или строковый) тип данных, отличный от целое число (или ) с помощью функции .
Синтаксис:
Пример: даст 7
Итак, вам нужно либо принять ввод как целое число или иначе преобразовать строку в целое число при вычислении :
Или
- Добро пожаловать. Отметьте, пожалуйста, ответ, чтобы было понятно, что на вопрос дан ответ.
- @Madushk Я дал небольшое концептуальное объяснение вашей проблемы. Проверить это …
Python 3.7 сделает то, что вы хотите.
Также можно отметить, что я новичок в Python. Я бы пошел дальше и добавил туда некоторую обработку ошибок, чтобы поймать valueEror и typeError. В противном случае вы обнаружите, что люди вводят строки в ваши входы int и нарушают ваш код.
Python строго типизирован, поэтому он не выполняет приведение типов, если вы этого не укажете.
Вы получите эту ошибку, если попытаетесь добавить число в строку, потому что на основе первого операнда он определяет, что вы хотите объединить строки.
Если вы попытаетесь добавить строку к числу, вместо этого вы получите «неподдерживаемые типы операндов», но это та же проблема.
Если вы хотите превратить число в строке в int, которое вы можете добавить, используйте . Если вы хотите преобразовать числовое значение в строку, которую можно объединить, используйте .
У меня была такая же проблема с django, и я решил ее, очистив кеш Chrome
1 Здесь дело обстоит не так.
Я думаю, что это тип ошибки: TypeError: может только объединить str (не «float») в str
Причина в том, что Python использует запятую (,), чтобы склеить все элементы в функции print () вместе. немного отличается от Java тем, что они использовали знак плюса (+) для наклеивания и вывода результата.
Примечание: дважды проверьте все функции print (), чтобы увидеть, поставили ли вы знак +, и его следует заменить на,
Tweet
Share
Link
Plus
Send
Send
Pin
Форматирование строк
Часто возникает ситуация, когда необходимо создать строку, подставив в нее определенные значения, полученные во время выполнения программы. Подстановка данных в таком случае выполняется при помощи форматирования строк, сделать это можно несколькими способами.
Оператор %
Строки в Python обладают встроенной операцией, к которой можно получить доступ оператором %, что дает возможность очень просто делать форматирование. Самый простой пример — когда для подстановки нужен только один аргумент, значением будет он сам:
Если же для подстановки используется несколько аргументов, то значением будет кортеж со строками:
Как видно из предыдущего примера, зависимо от типа данных для подстановки и того, что требуется получить в итоге, пишется разный формат. Наиболее часто используются:
- ‘%d’, ‘%i’, ‘%u — десятичное число;
- ‘%c’ — символ, точнее строка из одного символа или число – код символа;
- ‘%r’ — строка (литерал Python);
- ‘%s’ — строка.
Такой способ форматирования строк называет «старым» стилем, который в Python 3 был заменен на более удобные способы.
str.format()
В Python 3 появился более новый метод форматирования строк, который вскоре перенесли и в Python 2.7. Такой способ избавляет программиста от специального синтаксиса %-оператора. Делается все путем вызова для строковой переменной. С помощью специального символа — фигурных скобок — указывается место для подстановки значения, каждая пара скобок указывает отдельное место для подстановки, значения могут быть разного типа:
В Python 3 форматирование строк с использованием «нового стиля» является более предпочтительным по сравнению с использованием %-стиля, так как предоставляет более широкие возможности, не усложняя простые варианты использования.
f-строки (Python 3.6+)
В Python версии 3.6 появился новый метод форматирования строк — «f-строки», с его помощью можно использовать встроенные выражения внутри строк:
Такой способ форматирования очень мощный, так как дает возможность встраивать выражения:
Таким образом, форматирование с помощью f-строк напоминает использование метода format(), но более гибкое, быстрое и читабельное.
Стандартная библиотека Template Strings
Еще один способ форматирования строк, который появился еще с выходом Python версии 2.4, но так и не стал популярным — использование библиотеки Template Strings. Есть поддержка передачи значения по имени, используется $-синтаксис как в языке PHP:
Unquoted String in Print ()
Забывая цитировать строки в Заявление может вызвать NameError исключение. Это не происходит часто, но хорошо знать, что это может произойти. Читатель, скорее всего, увидит SyntaxError а не NameError Отказ Рассмотрим следующие примеры …
>>> print(Hello) Traceback (most recent call last): File "", line 1, in NameError: name 'Hello' is not defined >>> print(Hello World) File "", line 1 print(Hello World) ^ SyntaxError: invalid syntax >>>
В приведенных выше примерах вышеупомянутые строки вызывают ошибки. NameError в одном случае и SyntaxError в другой.
В этом случае исправление просто. Приложите струны в цитатах.
>>> print('Hello') Hello >>> print('Hello World') Hello World
Fix 2: конверсия строки
Узнайте, в какой строке кода Появились и до того, как переменные вставьте тип данных, которые вас интересуют, когда вы хотите добавить номера для себя, давайте сделаем это:
print(int(first_variable) + int(second_variable))
Тогда вы уверены, что это номера и определенно будут добавлены друг к другу, и когда вы хотите добавить два слова друг другу, то вы делаете это:
print(str(first_variable) + str(second_variable))
Используя этот метод, два субтитра обязательно будут соединены вместе.
Однако этот метод не является оптимальным, когда у вас есть много данных, которые вы хотите объединить друг с другом, потому что вам нужно провести много времени. Итак, давайте перейдем к методу № 3!
Таблица «Функции и методы строк»
Функция или метод | Назначение |
---|---|
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» | Литералы строк |
S = «s\np\ta\nbbb» | Экранированные последовательности |
S = r»C:\temp\new» | Неформатированные строки (подавляют экранирование) |
S = b»byte» | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S | Обращение по индексу |
S | Извлечение среза |
len(S) | Длина строки |
S.find(str, ,) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S.rfind(str, ,) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
S.index(str, ,) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
S.rindex(str, ,) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена) | Замена шаблона на замену. maxcount ограничивает количество замен |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S.isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S.center(width, ) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, ,) | Возвращает количество непересекающихся вхождений подстроки в диапазоне (0 и длина строки по умолчанию) |
S.expandtabs() | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip() | Удаление пробельных символов в начале строки |
S.rstrip() | Удаление пробельных символов в конце строки |
S.strip() | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S.format(*args, **kwargs) | Форматирование строки |
✨ Решение 4: Использование модуля Unicodecsv Python
Если вы имеете дело с данными Unicode и используете CSV-файл Для управления вашими данными, то Модуль может быть действительно полезным. Это расширенный Версия Python 2’s Модуль и помогает пользователю обрабатывать данные Unicode без каких-либо проблем.
Так как Модуль не является частью стандартной библиотеки Python, вы должны установить его перед использованием. Используйте следующую команду для установки этого модуля:
$ pip install unicodecsv
Давайте посмотрим на следующий пример, чтобы получить лучшее сцепление на Модуль:
import unicodecsv as csv with open('example.csv', 'wb') as f: writer = csv.writer(f, encoding='utf-8') writer.writerow(('English', 'Japanese')) writer.writerow((u'Hello', u'こんにちは'))
Выход
Размещение кода
«Красивое лучше уродливого», — Дзен Python.
Расположение строк вашего кода играет огромную роль в его читабельности. В этом разделе вы узнаете, как добавлять отступы, чтобы улучшить читаемость кода. Вы также узнаете, как использовать ограничение в 79 символов в строке, рекомендованное в PEP 8.
Пустые строки
Вертикальные пробелы (т.е. пустые строки) могут значительно улучшить читаемость вашего кода. Код, который сливается в сплошной блок, сложно просматривать. Но слишком много пустых строк делают код очень разреженным, и читателю придется прокручивать его куда чаще, чем хотелось бы. Ниже приведены три основных правила использования вертикальных пробелов.
Окружайте функции и классы верхнего уровня двумя пустыми строками
Функции и классы верхнего уровня должны быть довольно самодостаточными и реализовывать отдельные части функциональности. Имеет смысл обособить их, добавив дополнительное пространство по вертикали, чтобы было ясно, что они разделены:
class MyFirstClass: pass class MySecondClass: pass def top_level_function(): return None
Разделяйте определения методов в классах одной пустой строкой
Внутри класса все функции связаны друг с другом. Рекомендуется оставлять между ними только одну строку:
class MyClass: def first_method(self): return None def second_method(self): return None
Используйте пустые строки внутри функций, чтобы показать четкие шаги
Иногда сложная функция должна выполнить несколько шагов до оператора . Чтобы помочь читателю понять логику внутри функции, бывает полезно оставлять пустую строку перед каждым новым шагом.
В приведенном ниже примере есть функция для вычисления дисперсии списка. Это двухэтапная задача, поэтому я обозначил каждый шаг, оставив между ними пустую строку. Перед оператором возврата также есть пустая строка. Это помогает читателю ясно увидеть, что возвращает функция:
def calculate_variance(number_list): sum_list = 0 for number in number_list: sum_list = sum_list + number mean = sum_list / len(number_list) sum_squares = 0 for number in number_list: sum_squares = sum_squares + number**2 mean_squares = sum_squares / len(number_list) return mean_squares - mean**2
Аккуратное использование вертикальных пробелов может значительно улучшить читаемость вашего кода. Оно помогает читателю с первого взгляда понять, как ваш код разбивается на разделы и как эти разделы соотносятся друг с другом.
Максимальная длина строки и разрыв строки
PEP 8 предлагает ограничение на длину строк в 79 символов. Такая длина позволяет открывать несколько файлов рядом друг с другом, а также избегать переноса строк.
Конечно, не все предложения возможно вместить в 79 или менее символов. В PEP 8 очерчивает способы написать длинное предложение, заняв несколько строк.
Если код заключен в круглые, квадратные или фигурные скобки, Python «поймет», что это одно предложение:
def function(arg_one, arg_two, arg_three, arg_four): return arg_one
Также, если невозможно дописать код в одну строку, вы можете использовать обратную косую черту для разрыва строк:
from mypkg import example1, \ example2, example3
Однако, если вы можете продолжить писать в одну строку, вам следует это сделать.
Если разрыв строки должен произойти около бинарных операторов, таких как и , он должен произойти перед оператором. Это правило происходит из математики. Математики согласны с тем, что прерывание перед бинарными операторами улучшает читаемость. Сравните следующие два примера.
Разрыв перед бинарным оператором:
# Рекомендуется total = (first_variable + second_variable - third_variable)
Вы можете сразу увидеть, какая переменная прибавляется или вычитается, поскольку оператор находится рядом с переменной, над которой выполняется операция.
Теперь давайте посмотрим на пример разрыва после бинарного оператора:
# Не рекомендуется total = (first_variable + second_variable - third_variable)
Здесь сложнее разглядеть, какая переменная добавляется, а какая вычитается.
Прерывание строки перед бинарными операторами дает более читаемый код, поэтому PEP 8 это поощряет.
Если вы переходите на новую строку после бинарного оператора, но делаете так последовательно во всем документе (проекте), это по-прежнему соответствует PEP 8. Но всё же рекомендуется первый вариант.
Форматирование строки Python
Управляющая последовательность
Предположим, нам нужно написать текст – They said, “Hello what’s going on?” – данный оператор может быть записан в одинарные или двойные кавычки, но он вызовет ошибку SyntaxError, поскольку он содержит как одинарные, так и двойные кавычки.
Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.
str = "They said, "Hello what's going on?"" print(str)
Выход:
SyntaxError: invalid syntax
Мы можем использовать тройные кавычки для решения этой проблемы, но Python предоставляет escape-последовательность.
Символ обратной косой черты(/) обозначает escape-последовательность. За обратной косой чертой может следовать специальный символ, который интерпретируется по-разному. Одиночные кавычки внутри строки должны быть экранированы. Мы можем применить то же самое, что и в двойных кавычках.
Пример –
# using triple quotes print('''''They said, "What's there?"''') # escaping single quotes print('They said, "What\'s going on?"') # escaping double quotes print("They said, \"What's going on?\"")
Выход:
They said, "What's there?" They said, "What's going on?" They said, "What's going on?"
Список escape-последовательностей приведен ниже:
Номер | Последовательность | Описание | Пример |
---|---|---|---|
1. | \newline | Игнорирует новую строку |
print("Python1 \ Python2 \ Python3") Output: Python1 Python2 Python3 |
2. | \\ | Косая черта |
print("\\") Output: \ |
3. | \’ | одиночные кавычки |
print('\'') Output: ' |
4. | \\” | Двойные кавычки |
print("\"") Output: " |
5. | \a | ASCII Bell |
print("\a") |
6. | \b | ASCII клавиша Backspace |
print("Hello \b World") Output: Hello World |
7. | \f | ASCII Formfeed |
print("Hello \f World!") Hello World! |
8. | \n | ASCII Linefeed |
print("Hello \n World!") Output: Hello World! |
9. | \r | ASCII Carriege Return(CR) |
print("Hello \r World!") Output: World! |
10. | \t | ASCII горизонтальный tab |
print("Hello \t World!") Output: Hello World! |
11. | \v | ASCII вертикальный Tab |
print("Hello \v World!") Output: Hello World! |
12. | \ooo | Символ с восьмеричным значением |
print("\110\145\154\154\157") Output: Hello |
13 | \xHH | Символ с шестнадцатеричным значением |
print("\x48\x65\x6c\x6c\x6f") Output: Hello |
Вот простой пример escape-последовательности.
print("C:\\Users\\DEVANSH SHARMA\\Python32\\Lib") print("This is the \n multiline quotes") print("This is \x48\x45\x58 representation")
Выход:
C:\Users\DEVANSH SHARMA\Python32\Lib This is the multiline quotes This is HEX representation
Мы можем игнорировать escape-последовательность из данной строки, используя необработанную строку. Мы можем сделать это, написав r или R перед строкой. Рассмотрим следующий пример.
print(r"C:\\Users\\DEVANSH SHARMA\\Python32")
Выход:
C:\\Users\\DEVANSH SHARMA\\Python32
💡 CodePoint
Unicode отображает CodePoint к своим соответствующим персонажам. Итак, что мы подразумеваем под кодом?
- CodePoints являются числовыми значениями или целые числа, используемые для представления символа.
- Кодовая точка Unicode для ES который является целым числом 233. Когда вы кодируете символ и распечатаете его, вы, как правило, получаете его шестнадцатеричное представление в качестве вывода вместо его двоичного эквивалента (как видно в приведенных выше примерах).
- Последовательность байтов кодовой точки отличается в разных схем кодирования. Например: последовательность байтов для É в это в то время как в это \ xff \ xfe \ xe9 \ x00.
Пожалуйста, посмотрите на следующую программу, чтобы получить лучшее сцепление на эту концепцию:
u = 'é' print("INTEGER value for é: ", ord(u)) print("ENCODED Representation of é in UTF-8: ", u.encode('utf-8')) print("ENCODED Representation of é in UTF-16: ", u.encode('utf-16'))
Выход
INTEGER value for é: 233 ENCODED Representation of é in UTF-8: b'\xc3\xa9' ENCODED Representation of é in UTF-16: b'\xff\xfe\xe9\x00'
Теперь, когда у нас есть обзор Unicode и Давайте обсудим, как мы можем справиться с ошибкой и избежать ее в нашей программе.
➥ Проблема: Учитывая строку/текст, который будет написан в текстовом файле; Как избежать UnicodeEcodeError и напишите данный текст в текстовом файле.
Пример:
f = open('demo.txt', 'w') f.write('να έχεις μια όμορφη μέρα') f.close()
Выход :
Traceback (most recent call last): File "uniError.py", line 2, in f.write('να έχεις μια όμορφη μέρα') File "C:\Users\Shubham-PC\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table) UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-1: character maps to
Желаемый вывод :