Python перевод строки в число: Функции chr() и ord() в Python
Функции chr() и ord() в Python
Встроенная функция Python chr() используется для преобразования целого числа в символ, а функция ord() используется для обратного, т. е. преобразования символа в целое число.
Давайте кратко рассмотрим обе эти функции и поймем, как их можно использовать.
Функция chr()
Принимает целое число i
и преобразует его в символ c
, поэтому возвращает строку символов.
Формат:
c = chr(i)
Вот пример, демонстрирующий то же самое:
# Convert integer 65 to ASCII Character ('A') y = chr(65) print(type(y), y) # Print A-Z for i in range(65, 65+25): print(chr(i), end = " , ")
Выход
<class 'str'> A A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z
Допустимый диапазон для аргумента — от 0 до 1,114 111 (0x10FFFF в шестнадцатеричном формате). ValueError
будет ValueError
, если целое число i находится за пределами этого диапазона.
Давайте проверим это на некоторых примерах
print(chr(-1))
Это вызовет ValueError
.
ValueError: chr() arg not in range(0x110000)
start = 0 end = 1114111 try: for i in range(start, end+2): a = chr(i) except ValueError: print("ValueError for i =", i)
Выход
ValueError for i = 1114112
Функция ord()
Функция ord() принимает строковый аргумент из одного символа Юникода и возвращает его целочисленное значение кодовой точки Юникода. Делает наоборот chr()
.
Принимает один символ Юникода (строка длиной 1) и возвращает целое число, поэтому формат следующий:
i = ord(c)
Чтобы убедиться, что он работает наоборот, чем chr()
, давайте протестируем функцию на нескольких примерах.
# Convert ASCII Unicode Character 'A' to 65 y = ord('A') print(type(y), y) alphabet_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # Print 65-90 for i in alphabet_list: print(ord(i), end = " , ")
Выход
<class 'int'> 65 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 ,
Это вызывает TypeError
если длина входной строки не равна единице.
y = ord('Hi')
Выход
TypeError: ord() expected a character, but string of length 2 found
Передача шестнадцатеричных данных
Мы также можем передавать целые числа, представленные в других общих основаниях, таких как шестнадцатеричный формат (основание 16), в chr() и ord().
В Python мы можем использовать шестнадцатеричный код, добавив к целому числу префикс 0x
, если он находится в диапазоне 32/64 бит для целых значений.
>>> print(hex(18)) '0x12' >>> print(chr(0x12)) '\x12' >>> print(ord('\x12')) 18 >>> print(int('\x12')) 18
Мы передаем целое число 18 в шестнадцатеричном формате в chr()
, которая возвращает шестнадцатеричное значение 0x12
. Мы передаем это в chr()
и используем ord()
чтобы вернуть наше целое число.
Обратите внимание, что мы также можем получить целое число с помощью int()
, поскольку односимвольная строка также является строкой, которая может быть допустимым параметром для указанной выше функции.
Перевод списка строк в список чисел
Различные способы выполнить это преобразование:
Изменяя непосредственно элементы массива
for i, elem in enumerate(array): array[i] = int(elem)
Создавая новый массив вместо старого
array = [int(elem) for elem in array]
или
array = list(map(int, array))
Вот более подробное объяснение происходящего:
Для начала вспомним, что все переменные в Python являются ссылками на объекты.
Пусть у нас будет массив array
со следующим содержимым:
array = ['10', '11', '12']
Вот как это будет представляться в памяти в Python (idN
— это адрес объекта в памяти):
Заметьте, что строки не хранятся напрямую в списке, они хранятся снаружи, а в списке есть указатели на них.
Когда вы перебираете значения в цикле, например,
for elem in array: elem = int(elem)
На каждой итерации переменная elem
просто будет указывать на текущее число массива array
.
Например, на первой итерации:
Если мы попробуем присвоить что-то переменной elem
, то мы просто заменим то, на что она будет указывать на текущей итерации цикла:
Заметьте, что в массиве при этом ссылка не меняется, и нулевой элемент как указывал на строку "10"
, так и продолжает на неё указывать:
Т.е. наша задача на самом деле заключается в том, чтобы заменить ссылку, хранящуюся в списке array
на новую, т. е. в нашей визуализации на id5
.
Чтобы это сделать, нам нужно получить доступ на запись в конкретную ячейку списка. Список позволяет сделать это через доступ по индексу. Напишем следующий код (подобный которому как раз используется вами в собственном ответе):
array = ['10', '11', '12'] for i in range(len(array)): old_value = array[i] new_value = int(old_value) array[i] = new_value
Я расписал в несколько строк для наглядности.
Здесь на первой итерации цикла мы получаем переменную i
, хранящую не ссылку на строку, а позицию в списке array
, в которой нам нужно заменить ссылку:
Далее получаем строку, хранящуюся по этому индексу для того, чтобы преобразовать её в число (здесь она сохраняется в отдельной переменной, в вашем коде это будет временный объект):
old_value = array[i]
Имея значение элемента, мы можем выполнить над ним интересующую нас операцию. Снова сохраним его в отдельной переменной.
new_value = int(old_value)
Имея новое значение и индекс, по которому его нужно сохранить в нашем списке, у нас не остаётся проблем, чтобы завершить выполнение итерации, сохранив новое значение в нужном месте:
array[i] = new_value
Таким образом и производится изменение значений массива.
Приведу для сравнения краткую запись этого кода:
for i in range(len(array)): array[i] = int(array[i])
Важно понимать, что на самом деле количество операций в этом варианте и в более полном варианте будет примерно одинаковое (за вычетом создания лишних переменных).
Если скомбинировать оба этих способа, можно получить немного более удобную запись этого же преобразования:
for i, elem in enumerate(array): array[i] = int(elem)
Функция enumerate
для нашего списка вернёт последовательность вида
[(0, '10'), (1, '11'), (2, '12')]
Такой цикл избавляет нас от необходимости писать самостоятельно доступ по индексу массива. Важно понимать, что переменная elem
и здесь не даёт нам доступа на запись в массив, она просто хранит указатель на объект, хранящийся по текущему индексу в списке.
Эти способы имеют смысл, если нам важно изменять именно элементы списка. Например, если у нас есть больше одной переменной, хранящей этот список, и нам нужно сделать так, чтобы во всех переменных при доступе по индексу мы после преобразования получали целые числа вместо строк.
Такие ситуации встречаются, например, когда мы пишем функцию, которая должна изменить значения в переданном списке вместо создания нового.
Если же нам не требуется изменять этот список, а достаточно создания нового, в котором будут храниться целочисленные представления соответствущих элементов, то можно воспользоваться встроенной функцией map
, как предложил @ReinRaus:
array = list(map(int, array))
Только стоит помнить, что в Python 3 функция map
возвращает генератор, поэтому стоит явно преобразовать результат в список.
Ещё один удобный способ получения такого же результата, это использование генератора списков:
array = [int(elem) for elem in array]
Оба этих решения эквивалентны и являются аналогом следующего кода:
result_array = [] for elem in array: result_array.append(int(elem)) array = result_array
Эти решения оставляют исходный список неизменным, создавая новый и только после присваивая его переменной array
.
Продемострирую разницу этих способов на примере:
array = ['10', '11', '12'] link = array
Важно понимать, что здесь обе переменные будут указывать на один и тот же список, а не являться двумя списками с одинаковыми значениями (здесь все ссылки явно отрисованы стрелками):
Выполним преобразование, изменяя элементы списка:
array = ['10', '11', '12'] link = array print(array, link) # ['10', '11', '12'] ['10', '11', '12'] for i, elem in enumerate(array): array[i] = int(elem) print(array, link) # [10, 11, 12] [10, 11, 12]
Как мы видим, массив непосредственно изменился, а вместе с ним изменились данные, которые доступны по переменным, указывающим на этот список:
Если же воспользоваться вторым способом
array = ['10', '11', '12'] link = array print(array, link) # ['10', '11', '12'] ['10', '11', '12'] array = list(map(int, array)) print(array, link) # [10, 11, 12] ['10', '11', '12']
то ещё по выводу программы можно заметить, что содержимое исходного списка не изменилось. Итоговая картина объектов будет выглядеть так:
Мы видим, что был создан новый список, в котором были сохранены числовые представления значений исходного.
Для визуализации использовался сервис pythontutor.com.
Конвертация между байтами и строками — Документация Python для сетевых инженеров 3.0
Избежать работы с байтами нельзя. Например, при работе с сетью или
файловой системой, чаще всего, результат возвращается в байтах.
Соответственно, надо знать, как выполнять преобразование байтов в строку
и наоборот. Для этого и нужна кодировка.
Кодировку можно представлять как ключ шифрования, который указывает:
- как «зашифровать» строку в байты (str -> bytes). Используется метод encode (похож на encrypt)
- как «расшифровать» байты в строку (bytes -> str). Используется метод decode (похож на decrypt)
Эта аналогия позволяет понять, что преобразования строка-байты и
байты-строка должны использовать одинаковую кодировку.
encode, decode
Для преобразования строки в байты используется метод encode:
In [1]: hi = 'привет' In [2]: hi.encode('utf-8') Out[2]: b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' In [3]: hi_bytes = hi.encode('utf-8')
Чтобы получить строку из байт, используется метод decode:
In [4]: hi_bytes Out[4]: b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' In [5]: hi_bytes.decode('utf-8') Out[5]: 'привет'
str.encode, bytes.decode
Метод encode есть также в классе str (как и другие методы работы со
строками):
In [6]: hi Out[6]: 'привет' In [7]: str.encode(hi, encoding='utf-8') Out[7]: b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
А метод decode есть у класса bytes (как и другие методы):
In [8]: hi_bytes Out[8]: b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' In [9]: bytes.decode(hi_bytes, encoding='utf-8') Out[9]: 'привет'
В этих методах кодировка может указываться как ключевой аргумент
(примеры выше) или как позиционный:
In [10]: hi_bytes Out[10]: b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82' In [11]: bytes. decode(hi_bytes, 'utf-8') Out[11]: 'привет'
Как работать с Юникодом и байтами
Есть очень простое правило, придерживаясь которого, можно избежать, как
минимум, части проблем. Оно называется «Юникод-сэндвич»:
- байты, которые программа считывает, надо как можно раньше преобразовать в Юникод (строку)
- внутри программы работать с Юникод
- Юникод надо преобразовать в байты как можно позже, перед передачей
Строки. Функции и методы строк — Документация Python Summary 1
# Литералы строк 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[i] # Извлечение среза S[i:j:step] # Длина строки len(S) # Поиск подстроки в строке. Возвращает номер первого вхождения или -1 S.find(str, [start],[end]) # Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 S.rfind(str, [start],[end]) # Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError S.index(str, [start],[end]) # Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError S.rindex(str, [start],[end]) # Замена шаблона S.replace(шаблон, замена) # Разбиение строки по разделителю S.split(символ) # Состоит ли строка из цифр S.isdigit() # Состоит ли строка из букв S.isalpha() # Состоит ли строка из цифр или букв S.isalnum() # Состоит ли строка из символов в нижнем регистре S.islower() # Состоит ли строка из символов в верхнем регистре S.isupper() # Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('\f'), "новая строка" ('\n'), "перевод каретки" ('\r'), "горизонтальная табуляция" ('\t') и "вертикальная табуляция" ('\v')) S.isspace() # Начинаются ли слова в строке с заглавной буквы S.istitle() # Преобразование строки к верхнему регистру S.upper() # Преобразование строки к нижнему регистру S. lower() # Начинается ли строка S с шаблона str S.startswith(str) # Заканчивается ли строка S шаблоном str S.endswith(str) # Сборка строки из списка с разделителем S S.join(список) # Символ в его код ASCII ord(символ) # Код ASCII в символ chr(число) # Переводит первый символ строки в верхний регистр, а все остальные в нижний S.capitalize() # Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) S.center(width, [fill]) # Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) S.count(str, [start],[end]) # Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам S.expandtabs([tabsize]) # Удаление пробельных символов в начале строки S.lstrip([chars]) # Удаление пробельных символов в конце строки S.rstrip([chars]) # Удаление пробельных символов в начале и в конце строки S. strip([chars]) # Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки S.partition(шаблон) # Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку S.rpartition(sep) # Переводит символы нижнего регистра в верхний, а верхнего – в нижний S.swapcase() # Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний S.title() # Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями S.zfill(width) # Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar S.ljust(width, fillchar=" ") # Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar S.rjust(width, fillchar=" ")
Строковые методы | Кодкамп — онлайн-институт цифровых навыков
Введение
Примеры
Изменение заглавной буквы строки
Тип строки Python предоставляет множество функций, которые влияют на использование заглавных букв в строке. Они включают :
str.casefold
str.upper
str.lower
str.capitalize
str.title
str.swapcase
С юникод строк (по умолчанию в Python 3), эти операции не являются 1: 1 отображения или обратимым. Большинство из этих операций предназначены для отображения, а не нормализации. str.casefold()
str.casefold
создает строчную строку, которая подходит для случая нечувствительных сравнений. Это более агрессивный , чем str.lower
и может изменить строки, которые уже находятся в нижнем регистре или вызывают строки , чтобы расти в длину, и не предназначена для отображения.
"XßΣ".casefold()
# 'xssσ'
"XßΣ".lower()
# 'xßς'
Преобразования, которые происходят в рамках casefolding, определяются Консорциумом Unicode в файле CaseFolding.txt на их веб-сайте. str.upper()
str. upper
принимает каждый символ в строке и преобразует его в верхнем регистре эквивалента, например:
"This is a 'string'.".upper()
# "THIS IS A 'STRING'."
str.lower()
str.lower
делает обратное; он берет каждый символ в строке и преобразует его в строчный эквивалент:
"This IS a 'string'.".lower()
# "this is a 'string'."
str.capitalize()
str.capitalize
возвращает заглавную версию строки, то есть, он делает первый символ имеет верхний регистр , а остальные нижние:
"this Is A 'String'.".capitalize() # Capitalizes the first character and lowercases all others
# "This is a 'string'."
str.title()
str.title
возвращает название обсаженной версии строки, то есть, каждая буква в начале слова производится в верхнем регистре , а все остальные сделаны в нижнем регистре:
"this Is a 'String'". title()
# "This Is A 'String'"
str.swapcase()
str.swapcase
возвращает новый объект строки , в которой все строчные символы поменяны местами в верхний регистр и все символы верхнего регистра в нижний:
"this iS A STRiNG".swapcase() #Swaps case of each character
# "THIS Is a strIng"
Использование в качестве str
методов класса
Следует отметить , что эти методы могут быть названы либо на струнных объектов (как показано выше) или как метод класса от str
класса (с явным вызовом str.upper
и т.д.)
str.upper("This is a 'string'")
# "THIS IS A 'STRING'"
Это особенно полезно при применении одного из этих методов для многих строк сразу, скажем, на map
функции.
map(str.upper,["These","are","some","'strings'"])
# ['THESE', 'ARE', 'SOME', "'STRINGS'"]
Разбить строку на основе разделителя на список строк
str. split(sep=None, maxsplit=-1)
str.split
принимает строку и возвращает список подстрок исходной строки. Поведение отличается в зависимости от того sep
предусмотрен или опущен аргумент.
Если sep
не предусмотрен, или нет None
, то происходит расщепление везде , где есть пробела. Однако начальные и конечные пробелы игнорируются, и несколько последовательных пробельных символов обрабатываются так же, как один пробельный символ:
>>> "This is a sentence.".split()
['This', 'is', 'a', 'sentence.']
>>> " This is a sentence. ".split()
['This', 'is', 'a', 'sentence.']
>>> " ".split()
[]
sep
параметр может быть использован для определения строки разделителей. Исходная строка разделяется там, где встречается строка-разделитель, а сам разделитель отбрасывается. Несколько последовательных разделители не обрабатываются так же , как однократный, а вызвать пустые строки , которые будут созданы.
>>> "This is a sentence.".split(' ')
['This', 'is', 'a', 'sentence.']
>>> "Earth,Stars,Sun,Moon".split(',')
['Earth', 'Stars', 'Sun', 'Moon']
>>> " This is a sentence. ".split(' ')
['', 'This', 'is', '', '', '', 'a', 'sentence.', '', '']
>>> "This is a sentence.".split('e')
['This is a s', 'nt', 'nc', '.']
>>> "This is a sentence.".split('en')
['This is a s', 't', 'ce.']
По умолчанию заключается в разделении на каждом появлении разделителя, однако maxsplit
параметр ограничивает количество расщеплений , которые происходят. Значение по умолчанию -1
означает , что нет предела:
>>> "This is a sentence.".split('e', maxsplit=0)
['This is a sentence.']
>>> "This is a sentence.".split('e', maxsplit=1)
['This is a s', 'ntence.']
>>> "This is a sentence.".split('e', maxsplit=2)
['This is a s', 'nt', 'nce.']
>>> "This is a sentence. ".split('e', maxsplit=-1)
['This is a s', 'nt', 'nc', '.']
str.rsplit(sep=None, maxsplit=-1)
str.rsplit
( «правый раскол») отличается от str.split
( «левый сплит») , когда maxsplit
указано. Расщепление начинается в конце строки, а не в начале:
>>> "This is a sentence.".rsplit('e', maxsplit=1)
['This is a sentenc', '.']
>>> "This is a sentence.".rsplit('e', maxsplit=2)
['This is a sent', 'nc', '.']
Примечание: Python определяет максимальное число разделений , выполняемых, в то время как большинство других языков программирования указать максимальное количество подстрок созданных. Это может создать путаницу при переносе или сравнении кода.
Заменить все вхождения одной подстроки другой подстрокой
Пайтона str
типа также есть метод для замены вхождений одной подстроки с другой подстроки в заданной строке. Для более сложных случаев можно использовать re.sub
. str.replace(old, new[, count])
:
str.replace
принимает два аргумента , old
и new
, содержащий old
подстроку , которая должна быть заменена на new
подстроку. Необязательный аргумент count
определяет число замен , чтобы быть:
Например, для того , чтобы заменить 'foo'
с 'spam'
в сл
Python 3 — преобразование типов номеров
Вступление
В Python типы данных используются для классификации одного конкретного типа данных, определяя значения, которые вы можете назначить типу и операциям, которые вы можете выполнить на нем. При программировании иногда нам нужно преобразовать значения между типами, чтобы манипулировать значениями по-другому. Например, нам может понадобиться конкатенация числовых значений со строками или представление десятичных знаков в числах, которые были инициализированы как целочисленные значения.
Этот учебник поможет вам преобразовать числа, строки, кортежи и списки, а также предоставить примеры, которые помогут вам ознакомиться с различными вариантами использования.
Преобразование типов номеров
В Python существует два типа данных данных : целые числа и числа с плавающей запятой или поплавки. Иногда вы работаете над чьим-то кодом и вам нужно преобразовать целое число в float или наоборот, или вы можете обнаружить, что вы используете целое число, когда то, что вам действительно нужно, — это float. Python имеет встроенные методы, позволяющие легко преобразовывать целые числа в float и float в целые числа.
Преобразование целых чисел в поплавки
Метод Python float()
будет преобразовывать целые числа в float. Чтобы использовать эту функцию, добавьте целое число в круглые скобки:
float(57)
В этом случае 57
будет преобразовано в 57.0
.
Вы также можете использовать это с переменной. Объявим f
как равный 57
, а затем распечатаем новый float:
f = 57 print(float(f))
Output
57.0
Используя эту float()
функцию, мы можем преобразовать целые числа в float.
Преобразование плавающих чисел в целые числа
Python также имеет встроенную функцию для преобразования поплавков целых чисел: int()
.
int()
Функция работает аналогично float()
функции: вы можете добавить число с плавающей точкой внутри скобок , чтобы преобразовать его в целое число:
int(390.8)
В этом случае 390.8
будет преобразовано в 390
.
Вы также можете использовать это с переменными. Объявим b
как равные 125.0
и c
равные 390.8
, а затем распечатаем новые поплавки:
b = 125.0 c = 390.8 print(int(b)) print(int(c))
Output
125
390
При преобразовании float в целые числа с int()
функцией Python отключает десятичные и оставшиеся числа float для создания целого числа. Несмотря на то, что мы, возможно, захотим округлить 390,8 до 391, Python не будет делать этого через int()
функцию.
Цифры, конвертированные под деление
В Python 3 соответствующие коэффициенты преобразуются из целых чисел в float при выполнении разделения, хотя они не находятся в Python 2 . То есть, когда вы разделите 5 на 2, в Python 3 вы получите поплавок для ответа (2.5):
a = 5 / 2 print(a)
Output
2.5
В Python 2, так как вы имели дело с двумя целыми числами, вы получите целое число обратно в качестве ответа, вместо этого: 5 / 2 = 2
. Прочтите « Python 2 vs Python 3: Практические соображения » для получения дополнительной информации о различиях между Python 2 и Python 3.
Преобразование строк
Строка представляет собой последовательность из одного или нескольких символов (буквы, цифры, символы). Строки — это общая форма данных в компьютерных программах, и нам может потребоваться довольно часто преобразовывать строки в числа или числа в строки, особенно когда мы принимаем данные, созданные пользователем.
Преобразование чисел в строки
Мы можем преобразовать числа в строки с помощью str()
метода. Мы передадим либо число, либо переменную в круглые скобки метода, а затем числовое значение будет преобразовано в строковое значение.
Давайте сначала рассмотрим преобразование целых чисел. Чтобы преобразовать целое число 12
в строковое значение, вы можете перейти 12
к str()
методу:
str(12)
При запуске str(12)
в интерактивной оболочке Python с python
командой в окне терминала вы получите следующий вывод:
Output
'12'
Котировки вокруг числа 12 означают, что число больше не является целым числом, а теперь является строковым значением.
С переменными мы можем начать понимать, насколько практично это можно преобразовать целые числа в строки. Предположим, мы хотим отслеживать ежедневный прогресс программирования пользователя и вводить количество строк кода, которые они пишут за раз. Мы хотели бы показать эту обратную связь пользователю и будем печатать строки и целочисленные значения в одно и то же время:
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")
Когда мы запускаем этот код, мы получаем следующую ошибку:
Output
TypeError: Can't convert 'int' object to str implicitly
Мы не можем конкатенировать строки и целые числа в Python, поэтому нам придется преобразовать переменную lines
в строковое значение:
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")
Теперь, когда мы запускаем код, мы получаем следующий результат, который поздравляет нашего пользователя с их прогрессом:
Output
Congratulations, Sammy! You just wrote 50 lines of code.
Если мы хотим преобразовать float в строку, а не в целое число в строку, мы выполняем те же шаги и формат. Когда мы передаем float в str()
метод, будет возвращено строковое значение float. Мы можем использовать либо значение float, либо значение переменной:
print(str(421.034)) f = 5524.53 print(str(f))
Output
421.034
5524.53
Мы можем проверить, чтобы убедиться, что это правильно, объединив строку:
f = 5524.53 print("Sammy has " + str(f) + " points.")
Output
Sammy has 5524.53 points.
Мы можем быть уверены, что наш float был правильно преобразован в строку, потому что конкатенация выполнялась без ошибок.
Преобразование строк в числа
Строки могут быть преобразованы в числа, используя int()
и float()
методы.
Если ваша строка не имеет десятичных знаков, вы, скорее всего, захотите преобразовать ее в целое число с помощью int()
метода.
Давайте используем пример пользователя Sammy, отслеживающего строки кода, написанные каждый день. Мы можем манипулировать этими значениями математикой, чтобы предоставить пользователям более интересные отзывы, но эти значения в настоящее время хранятся в строках:
lines_yesterday = "50" lines_today = "108" lines_more = lines_today - lines_yesterday print(lines_more)
Output
TypeError: unsupported operand type(s) for -: 'str' and 'str'
Поскольку два числовых значения были сохранены в строках, мы получили сообщение об ошибке. Операнд -
для вычитания не является допустимым операндом для двух строковых значений.
Давайте изменим код, чтобы включить int()
метод, который преобразует строки в целые числа, и позволит нам выполнять математику со значениями, которые были первоначально строками.
lines_yesterday = "50" lines_today = "108" lines_more = int(lines_today) - int(lines_yesterday) print(lines_more)
Output
58
Эта переменная lines_more
автоматически является целым числом, и в этом примере она равна числовому значению 58.
Мы также можем преобразовать числа в приведенном выше примере в значения float, используя float()
метод вместо int()
метода. Вместо получения вывода 58
мы получим вывод 58.0
float.
Пользователь Sammy получает точки в десятичных значениях
total_points = "5524.53" new_points = "45.30" new_total_points = total_points + new_points print(new_total_points)
Output
5524.5345.30
В этом случае использование +
операнда с двумя строками является действительной операцией, но она объединяет две строки, а не объединяет два числовых значения. Таким образом, наш вывод выглядит необычным, поскольку он просто помещает два значения рядом друг с другом.
Мы захотим преобразовать эти строки в float до выполнения любой математики с помощью float()
метода:
total_points = "5524.53" new_points = "45. 30" new_total_points = float(total_points) + float(new_points) print(new_total_points)
Output
5569.83
Теперь, когда мы превратили две строки в поплавках, мы получим ожидаемый результат , который добавляет 45.30
к 5524.53
.
Если мы попытаемся преобразовать строковое значение с десятичными знаками в целое число, мы получим ошибку:
f = "54.23" print(int(f))
Output
ValueError: invalid literal for int() with base 10: '54.23'
Если мы передадим десятичное значение в строке int()
методу, мы получим ошибку, потому что она не будет конвертировать в целое число.
Преобразование строк в числа позволяет нам быстро изменять тип данных, с которыми мы работаем, чтобы мы могли выполнять операции с числовыми значениями, которые были первоначально выбраны как строки.
Преобразование в кортежи и списки
Вы можете использовать методы list()
и tuple()
преобразовывать значения, переданные им в список и тип данных кортежа соответственно. В Python:
- список является изменяемой упорядоченной последовательностью элементов , которые содержатся в квадратных скобках
[ ]
. - кортеж является непреложной упорядоченной последовательностью элементов , содержащихся в скобках
( )
.
Преобразование в кортежи
Начнем с преобразования списка в кортеж. Преобразование списка в кортеж, поскольку он является неизменным типом данных, может обеспечить существенную оптимизацию программ, которые мы создаем. Когда мы используем метод, tuple()
он вернет версию кортежа переданного ей значения.
print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output
('pull request', 'open source', 'repository', 'branch')
Мы видим, что на выходе печатается кортеж, поскольку элементы теперь содержатся в скобках, а не в квадратных скобках.
Давайте используем tuple()
переменную, представляющую список:
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures))
Output
('shark', 'cuttlefish', 'squid', 'mantis shrimp')
Опять же, мы видим, что значение списка изменяется на значение кортежа, указанное скобками. Мы можем преобразовать любой итерируемый тип в кортеж, включая строки:
print(tuple('Sammy'))
Output
('S', 'a', 'm', 'm', 'y')
Поскольку мы можем выполнять итерацию по строкам, мы можем преобразовать их в кортежи с помощью tuple()
метода. Однако, если типы данных, которые не являются итерируемыми, как целые числа и поплавки, мы получим ошибку типа:
print(tuple(5000))
Output
TypeError: 'int' object is not iterable
Хотя можно преобразовать целое число в строку и затем преобразовать в кортеж, как и в tuple(str(5000))
, лучше всего выбрать читаемый код для сложных преобразований.
Преобразование в списки
Преобразование значений, особенно кортежей, в списки может быть полезно, когда вам нужно иметь изменяемую версию этого значения.
Мы будем использовать list()
метод для преобразования следующего кортежа в список. Поскольку синтаксис для создания списка использует круглые скобки, обязательно укажите круглые скобки list()
метода, и в этом случае также print()
метод:
print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Output
['blue coral', 'staghorn coral', 'pillar coral']
Квадратные скобки сигнализируют, что список был возвращен из исходного значения кортежа, которое было передано list()
методом.
Чтобы сделать код более читаемым, мы можем удалить одну из пар круглых скобок, используя переменную:
coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)
Если мы напечатаем, list(coral)
мы получим тот же результат, что и выше.
Так же, как кортежи, строки могут быть преобразованы в списки:
print(list('shark'))
Output
['s', 'h', 'a', 'r', 'k']
Здесь строка 'shark'
была преобразована в список, предоставляя изменяемую версию исходного значения.
Заключение
В этом учебнике Python показано, как преобразовать несколько важных типов родных данных в другие типы данных, в первую очередь, с помощью встроенных методов. Возможность конвертировать типы данных в Python обеспечивает дополнительную гибкость при написании ваших программ.
Python-номеров
Числа Python
В Python есть три числовых типа:
Переменные числовых типов создаются при присвоении им значения:
Пример
х = 1
# int
y = 2.8 # float
z = 1j # сложный
Чтобы проверить тип любого объекта в Python, используйте функцию type ()
:
Инт
Int или целое число — это целое число,
положительное или отрицательное, без десятичных знаков, неограниченной длины.
Пример
Целые числа:
x = 1
y = 35656222554887711
z =
-3255522
печать (тип (x))
печать (тип (y))
печать (тип (z))
Попробуй сам »
Поплавок
Float или «число с плавающей запятой» — это число, положительное или отрицательное, содержащее один или несколько десятичных знаков.
Пример
Поплавки:
x = 1,10
y = 1,0
z = -35,59
печать (тип (x))
печать (тип (y))
печать (тип (z))
Попробуй сам »
Float также может быть научным числом с буквой «e» для обозначения степени 10.
Пример
Поплавки:
x = 35e3
y = 12E4
z = -87.7e100
print (type (x))
print (type (y))
print (введите (z))
Попробуй сам »
Комплекс
Комплексные числа записываются с буквой j в качестве мнимой части:
Пример
Комплекс:
x = 3 + 5j
y = 5j
z = -5j
print (type (x))
print (type (y))
print (введите (z))
Попробуй сам »
Преобразование типа
Вы можете преобразовать один тип в другой с помощью int ()
,
float ()
и complex ()
методы:
Пример
Преобразование из одного типа в другой:
х = 1 # int
у = 2.8 # float
z = 1j # complex
# преобразовать из int в float:
a = float (x)
# преобразовать из float в int:
b = int (y)
# преобразовать int в сложный:
c = complex (x)
print (a)
print (b)
print (c)
print (тип (a))
print (тип (b))
print (тип (c))
Попробуй сам »
Примечание: Комплексные числа нельзя преобразовать в числа другого типа.
Случайное число
Python не имеет функции random ()
для
сделать случайное число, но в Python есть встроенный модуль, называемый
случайных
, которые можно использовать для получения случайных чисел:
Пример
Импортировать случайный модуль и отображать случайное число от 1 до 9:
импортировать случайный отпечаток
(random.randrange (1, 10))
Попробуй сам »
Из нашего справочника по произвольному модулю вы узнаете больше о модуле случайного выбора.
Записать длинную строку в несколько строк кода в Python
При использовании средств проверки кода PEP8, таких как flake8 в Python, ошибка E501 line too long
возникает, когда длина одной строки превышает 80 символов.
Здесь я расскажу, как записать длинную строку, не содержащую новой строки, в несколько строк кода.
- Используйте обратную косую черту (
\
) - Используйте круглые скобки
Используйте обратную косую черту ( \
)
В Python обратная косая черта ( \
) является символом продолжения, и если он помещается в конец строки, считается, что строка продолжается, игнорируя последующие символы новой строки.
п = 1 + 2 \ + 3 печать (п) №6
Кроме того, если несколько строковых литералов записываются последовательно, они будут объединены в одну строку следующим образом:
s = 'aaa' bbb ' печать (и) # aaabbb
Объединив эти два свойства, мы можем записать длинную строку в несколько строк кода, как показано ниже:
s = 'https: // ja.wikipedia.org/wiki / '\ '% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83' \ '% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0% E8% A8% 80% E8% AA% 9E' печать (и) # https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3% E3% 82% B0% E8% A8% 80% E8% AA% 9E
Только строковые литералы (строка, окруженная ''
или ""
) объединяются, если они записываются последовательно. Обратите внимание, что в случае переменных возникнут ошибки.
s_var = 'xxx' # s = 'aaa' s_var 'bbb' # SyntaxError: неверный синтаксис
Используйте оператор +
для объединения переменных или переменных и строковых литералов.
s = 'aaa' + s_var + 'bbb' печать (и) # aaaxxxbbb
Оператор +
необходим для объединения переменных, даже если они разделены обратной косой чертой ( \
).
s = 'аааааааааааааааааааааааааааааа' \ + s_var \ + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' печать (и) # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Подробнее о конкатенации строк см. Следующий пост.
Используйте круглые скобки
В Python вы можете свободно разорвать строку в скобках ( ()
, {}
, []
).Используя это правило, вы можете использовать круглые скобки вместо обратной косой черты.
Поскольку {}
используется для набора
и []
используется для списка
, используйте для этой цели ()
.
Это можно записать следующим образом.
s = ('https://ja.wikipedia.org/wiki/' '% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83' '% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0% E8% A8% 80% E8% AA% 9E') печать (и) # https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3% E3% 82% B0% E8% A8% 80% E8% AA% 9E
Если включены переменные, вам понадобится оператор +
.
s = ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + s_var + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb') печать (и) # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Примеры форматирования чисел Python
Все примеры предполагают Python 2.7+
Посмотрите разницу между усечением и округлением числа
Все примеры можно посмотреть на ноутбуке jupyter
Круглый с точностью до 2 десятичных знаков
print ('{:.2f} '. Формат (5.39120))
# >>> '5.40'
Форматировать с плавающей запятой в процентах
Отформатируйте число в процентах с округлением, как указано выше:
'{: .2f}%'. Формат (10.12345)
# >>> '10 .12% '
Обрезать число с плавающей запятой до 2 знаков после запятой
Посмотреть полный код обобщенной версии на этом ноутбуке
Удалите цифры после второго десятичного знака (если есть).
импорт ре
# общую версию см. в блокноте
def truncate (число):
вернуть ре.(\ d + \. \ d {, 2}) \ d * $ ', r' \ 1 ', str (число))
усечь (8,499)
# >>> '8.49'
усечь (8,49)
# >>> '8.49'
усечь (8.4)
# >>> '8.4'
усечь ('8,0')
# >>> '8.0'
усечь (8)
# >>> '8'
Левое заполнение нулями
Пример сделать полный размер равным 9 (все включено), заполнить нулями слева:
# сделать общий размер строки МИНИМУМ 9 (включая цифры и точки), заполнить нулями слева
'{: 0> 9}'.формат (3,499)
# >>> '00003.499'
# сделать общий размер строки КАК МИНИМУМ 2 (все включено), заполнить нулями слева
'{: 0> 2}'. Формат (3)
# >>> '03'
Правое заполнение нулями
Пример сделать полный размер равным 11, заполнить нулями справа:
'{: <011}'. Формат (3,499)
# >>> '3.4900'
Использовать запятые как разделитель тысяч
"{:,}".формат (100000)
# >>> '100,000'
Устранение неполадок: ValueError: имя поля нулевой длины в формате
В некоторых версиях Python, таких как 2.6 и 3.0, вы должны указать позиционных индексов в строке формата:
# ОШИБКА в Python 2.6 и 3.0
а = 1
b = 2
"{} - {}". формат (a, b)
# НЕТ ОШИБКИ в любой версии Python
"{0} - {1}". Формат (a, b)
# >>> "1-2"
Список литературы
Как использовать python if else в одной строке с примерами
Как мне написать простой питон, если еще в одной строке? Что такое тернарный оператор в Python? Можем ли мы использовать один лайнер для сложных операторов if и else?
В этом руководстве я поделюсь различными примерами, которые помогут вам понять и узнать об использовании тернарного оператора в одном условии if и else с Python.Условные выражения (иногда называемые «тернарным оператором ») имеют самый низкий приоритет среди всех операций Python. Программисты, переходящие на Python с C, C ++ или Perl, иногда пропускают так называемый тернарный оператор?:. Чаще всего он используется для того, чтобы избежать нескольких строк кода и временной переменной для простых решений.
Я не буду вдаваться в подробности общего тернарного оператора, поскольку он используется в Python для циклов и операторов потока управления. Здесь мы сосредоточимся на изучении python, если еще в одной строке с использованием тернарного оператора
Python, если еще в одной строке
Синтаксис
Общий синтаксис одного оператора if и else в Python:
если условие: value_when_true еще: value_when_false
Теперь, если мы хотим записать это в одну строку с использованием тернарного оператора, синтаксис будет:
значение_когда_ истинно, если условие иначе значение_когда_ ложь
В этом синтаксисе сначала оценивается условие else
.
- Если условие возвращает
True
, то возвращаетсяvalue_when_true
- Если условие возвращает
False
, то возвращаетсяvalue_when_false
Аналогично, если у вас есть переменная, назначенная в общем , если иначе, блок
на основе условия
если условие: значение = истина-выражение еще: значение = ложное выражение
То же можно записать одной строкой:
значение = истина-выражение, если условие иначе ложное выражение
Здесь также в первую очередь оценивается состояние.
- , если условие возвращает
True
, тогдаtrue-expr
присваивается объекту значения - , если условие возвращает
False
, тогдаfalse-expr
присваивается объекту значения
Для простых случаев, подобных этому, мне очень приятно иметь возможность выразить эту логику в одной строке вместо четырех. Помните, что как программист вы тратите гораздо больше времени на чтение кода, чем на его написание, поэтому лаконичность Python неоценима.
Некоторые важные моменты, о которых следует помнить:
- В Python можно использовать троичное выражение, но только для выражений , не для операторов
- Вы не можете использовать Python
, если..elif..else
блок в одной строке. - Имя « ternary » означает, что оператор состоит всего из 3 частей:
условие
,затем
иеще
. - Хотя есть хаки для преобразования
if..elif..else block
вif..else block
, а затем использовать его в одной строке, но это может быть сложно в зависимости от условий и его следует избегать - В блоках
if-else
будет выполнено только одно из выражений. - Хотя может возникнуть соблазн всегда использовать тернарные выражения для сжатия кода, помните, что вы можете пожертвовать удобочитаемостью, если условие, а также истинное и ложное выражения очень сложны.
Пример сценария Python
Это простой скрипт, в котором мы используем оператор сравнения в нашем условии if
- Сначала соберите пользовательский ввод в виде целого числа и сохраните это значение в
b
- Если
b
больше или равно0
, тогда верните «положительный
», который будетИстинное условие
- Если
b
возвращаетЛожь
i.е. указанное выше условие не было успешным, затем верните «отрицательный
» - Окончательное возвращаемое значение, то есть «
положительный
» или «отрицательный
» сохраняется в объектеa
- Наконец, выведите значение
a
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) a = "положительный", если b> = 0, иначе "отрицательный" печать (а)
Многострочная форма этого кода будет:
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) если b> = 0: а = "положительный" еще: а = "отрицательный" печать (а)
Выход:
# python3 / tmp / if_else_one_line.ру Введите значение для b: 10 положительный # python3 /tmp/if_else_one_line.py Введите значение для b: -10 отрицательный
Python if..elif..else в одной строке
Как я уже говорил ранее, невозможно использовать блок if..elif..else
в одной строке с использованием тернарных выражений. Хотя мы можем взломать на нашем пути к этому, но убедитесь, что максимально допустимая длина строки в Python составляет 79 в соответствии с PEP-8 Guidelines
Синтаксис
У нас это если..elif..else блок
, где мы возвращаем выражение, основанное на проверке условия:
, если условие1: expr1 elif condition2: expr2 еще: expr
Мы можем записать этот if..elif..else блок
в одну строку, используя следующий синтаксис:
выражение1, если условие1 еще выражение2, если условие2 еще выражение
В этом синтаксисе
- Сначала оценивается
condition2
, если returnTrue
, то возвращаетсяexpr2
- Если
condition2
возвращаетFalse
, тогдаcondition1 оценивается
, если returnTrue
, то возвращаетсяexpr1
- Если
condition1
также возвращаетFalse
, то выполняется else и возвращаетсяexpr
Как видите, было проще прочитать это в многострочном if..elif..else block
, в то время как то же самое становится трудно понять новичкам.
Мы можем добавить несколько , если еще блок
в этом синтаксисе, но мы также должны придерживаться рекомендаций PEP-8
выражение1, если условие1 еще выражение2, если условие2, еще выражение-n, если условие-п, еще выражение
Пример сценария Python-1
В этом примере сценария мы получаем целочисленное значение от конечного пользователя и сохраняем его в « b
». Порядок выполнения будет:
- Если значение
b
меньше0
, то возвращается «neg
» - Если значение
b
больше0
, то возвращается «pos
». - Если оба условия возвращают
False
, то возвращается «ноль
»
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) a = "neg", если b <0, else "pos", если b> 0, else "ноль" печать (а)
Многострочная форма кода будет:
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) если b <0: a = "neg" elif b> 0: a = "pos" еще: нуль печать (а)
Выход (когда , если
условие Истина
)
# python3 / tmp / if_else_one_line.ру Введите значение для b: -5 нег
Выход (когда , если
условие False
и elif
условие True
)
# python3 /tmp/if_else_one_line.py Введите значение для b: 5 pos
Вывод (когда и , если
и elif
условие False
)
# python3 /tmp/if_else_one_line.py Введите значение для b: 0 ноль
Пример сценария Python-2
Мы добавим еще несколько блоков в этот пример скрипта, порядок проверки будет в ниже последовательности :
- Соберите введенные пользователем значения
b
, которые будут преобразованы в целочисленный тип - Если значение
b
равно 100, тогда верните «равно 100
». Если это вернетFalse
, то следующий, если еще будет выполнено условие
- Если значение
b
равно 50, то верните «равно 50
». Если это вернетFalse
, то следующий, если еще будет выполнено условие
- Если значение
b
равно 40, то верните «равно 40
». Если это вернетFalse
, то следующий, если еще будет выполнено условие
- Если значение
b
больше 100, то верните «больше 100
». Если это вернетFalse
, затем перейдите к, иначе
блок - Наконец, если все условия возвращают
False
, то возвращают «меньше сотни
»
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) a = "равно 100", если b == 100, иначе "равно 50", если b == 50, иначе "равно 40", если b == 40, иначе "больше 100", если b> 100, иначе "меньше 100" печать (а)
Многострочная форма в этом примере будет:
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) если b == 100: a = "равно 100" elif b == 50: a = "равно 50" elif b == 40: a = "равно 40" elif b> 100: a = "больше 100" еще: a = "менее 100" печать (а)
Выход:
# python3 / tmp / if_else_one_line.ру Введите значение для b: 50 равно 50 # python3 /tmp/if_else_one_line.py Введите значение для b: 110 больше 100 # python3 /tmp/if_else_one_line.py Введите значение для b: -12 менее 100 # python3 /tmp/if_else_one_line.py Введите значение для b: 40 равно 40
Python вложен if..else в одну строку
Мы также можем использовать троичное выражение для определения вложенного блока if..else
в одной строке с Python.
Синтаксис
Если у вас есть многострочный код с использованием вложенного блока if else
, примерно так:
, если условие1: expr1 elif condition-m: expr-m еще: если условие3: expr3 elif condition-n: expr-n еще: expr5
Однострочный синтаксис для использования этого вложенного блока if else
в Python будет:
выражение1, если условие1, еще выражение2, если условие 2, другое (выражение3, если условие3, иначе выражение4, если условие 4, еще выражение, то выражение5)
Здесь мы добавили вложенный if..elif..else
внутри блока else
с использованием троичного выражения . Последовательность проверки в следующем порядке
- Если
condition1
возвращаетTrue
, тогда возвращаетсяexpr1
, если он возвращаетFalse
, то проверяется следующее условие - Если
condition-m
возвращаетTrue
, тогда возвращаетсяexpr-m
, если он возвращаетFalse
, тогдаelse блок
свложенным if..elif..else
проверено - Если
condition3
возвращаетTrue
, тогда возвращаетсяexpr3
, если оно возвращаетFalse
, тогда возвращается следующее условие внутри вложенного блока - Если
condition-n
возвращаетTrue
, тогда возвращаетсяexpr-n
, если оно возвращаетFalse
, тогдаexpr5
возвращается изelse
condition
Пример сценария Python
В этом примере я использую вложенный if else
внутри блока else
нашего единственного лайнера.Порядок исполнения будет в заданной последовательности:
- Сначала соберите целое число
b
от конечного пользователя - Если значение
b
равно 100, то, если условие
возвращаетИстина
и возвращается «равно 100
» - Если значение
b
равно 50, тогда условиеelif
возвращаетИстина
и возвращается «равно 50
» - Если оба условия
if
иelif
возвращаютFalse
, то выполняется блокelse
, где у нас естьвложенных if и else
условие - Внутри блока
else
, еслиb
больше 100, он возвращает «больше 100
», а если он возвращаетFalse
, тогда возвращается «меньше 100
»
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) a = "равно 100", если b == 100, иначе "равно 50", если b == 50, иначе ("больше 100", если b> 100, иначе "меньше 100") печать (а)
Многострочная форма этого кода будет:
#! / Usr / bin / env python3 b = int (input ("Введите значение для b:")) если b == 100: a = "равно 100" elif b == 50: a = "равно 50" еще: если b> 100: a = "больше 100" еще: a = "менее 100" печать (а)
Выход:
# python3 / tmp / if_else_one_line.ру Введите значение для b: 10 менее 100 # python3 /tmp/if_else_one_line.py Введите значение для b: 100 равно 100 # python3 /tmp/if_else_one_line.py Введите значение для b: 50 равно 50 # python3 /tmp/if_else_one_line.py Введите значение для b: 110 более 100
Заключение
В этом руководстве мы узнали об использовании тернарного оператора в операторе if else
, чтобы иметь возможность использовать его в одной строке.Хотя Python не позволяет использовать оператор if..elif..else
в одной строке, но мы все равно можем разбить его на if else
, а затем использовать его в однострочной форме. Точно так же мы можем использовать вложенный if
с тернарным оператором в одной строке. Я поделился несколькими примерами, которые помогут вам понять концепцию тернарного оператора с выражением if и else языка программирования Python
.
Наконец, я надеюсь, что это руководство по python, если еще одна строка была полезна. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.
Python — подсчет количества слов в текстовом файле
Python — подсчет количества слов
Вы можете подсчитать количество слов в текстовом файле в Python, выполнив последовательность шагов, которые мы обсудим в этом руководстве.
В этом руководстве мы научимся подсчитывать количество слов в текстовом файле, используя примеры программ Python.
Шаги для подсчета количества слов в текстовом файле
Чтобы подсчитать количество слов в текстовом файле, выполните следующие действия.
- Откройте файл в режиме чтения и обработайте его в текстовом режиме.
- Прочтите текст с помощью функции read ().
- Разделите текст с помощью пробела. Мы предполагаем, что слова в предложении разделены пробелом.
- Длина разделенного списка должна равняться количеству слов в текстовом файле.
- Вы можете уточнить счет, очистив строку перед разделением или проверив слова после разделения.
Пример 1: Подсчет количества слов
В этом примере Python мы прочитаем текстовый файл и подсчитаем количество слов в нем.Рассмотрим следующий текстовый файл.
Текстовый файл
Добро пожаловать на сайт pythonexamples.org. Здесь вы найдете программы на Python для всех общих случаев использования.
Программа Python
file = open ("C: \ data.txt", "rt")
data = file.read ()
слова = data.split ()
print ('Количество слов в текстовом файле:', len (слова))
Вывод
Количество слов в текстовом файле: 14
Пример 2: Подсчет количества слов в текстовом файле с несколькими строками
В этом примере Python мы прочитаем текстовый файл с несколькими строками и посчитаем количество слов в нем.Рассмотрим следующий текстовый файл.
Символ новой строки разделяет строки в текстовом файле. Новая строка — это пробел, и когда мы разделяем все данные в текстовом файле с помощью метода split (), все слова во всех предложениях разделяются и возвращаются в виде единого списка.
Текстовый файл — data.txt
Добро пожаловать на сайт www.pythonexamples.org. Здесь вы найдете программы на Python для всех общих случаев использования.
Это еще одна строка с несколькими словами.
Программа Python
file = open ("C: \ data.txt "," rt ")
data = file.read ()
слова = data.split ()
print ('Количество слов в текстовом файле:', len (words))
Вывод
Количество слов в текстовом файле: 21
Резюме
В этом учебном пособии примеров Python мы узнали, как для подсчета количества слов в текстовом файле с помощью программ-примеров.
Ввод Python | Как ввести несколько входов в Python в одну строку
Иногда нам может потребоваться принять несколько входных данных от пользователя, и в этом случае мы можем использовать функцию raw_input () или input () несколько раз.Но есть простой способ сделать это с помощью этих встроенных функций.
a) Использование функции split ()
b) Использование функции input ()
c) Использование функции map ()
d) Использование понимания списка
Использование нескольких входных данных от пользователя в Python
a) split ()
Функция split () помогает нам получать несколько входных данных от пользователя и назначать их соответствующим переменным в одной строке. Эта функция обычно используется для разделения заданной строки на несколько подстрок.Однако вы также можете использовать его для ввода нескольких значений. Функция обычно разбивает данный ввод заданным разделителем , и в случае, если разделитель не указан, любой пробел считается разделителем .
Синтаксис использования функции разделения для получения нескольких входных данных:
переменная 1, переменная 2 = вход («Введите здесь то, что должно быть передано пользователю»). Трещина()
переменная 1, переменная 2 = ввод («Введите здесь то, что нужно передать пользователю»).split («,») # для входов, разделенных запятыми
Пример:
a, b = input ("Введите два ваших счастливых числа:") .split () print ("Первое счастливое число:", a) print ("Второе счастливое число:", b) Выход: Введите два ваших счастливых числа: 7 1 Первое счастливое число: 7 Второе счастливое число: 1
b) input ()
Вы можете вводить несколько входов в одной строке, используя функцию raw_input несколько раз, как показано ниже.
x, y = input («Введите имя:»), input («Введите фамилию:») print ("Имя:", x) print ("Второе имя:", y) Выход: Введите имя: FACE Введите фамилию: Prep Имя: ЛИЦО Второе имя: Prep
c) map ()
map () — еще одна функция, которая поможет нам принимать несколько входных данных от пользователя.В общем, синтаксис функции карты — map (fun, iter). Здесь fun — это функция, которой функция карты передает каждую итерацию.
Синтаксис для множественного ввода с использованием map ()
переменная 1, переменная 2, переменная 3 = map (int, input (). Split ())
Пример получения целочисленного ввода от пользователя.
x, y = map (int, input ("Введите два значения:") .split ()) print ("Первое число:", x) print ("Второе число:", y) Выход: Введите два значения: 7 1 Первое число: 7 Второй номер: 1
Пример получения строкового ввода от пользователя.
x, y = map (str, input ("Введите свое имя и фамилию") .split ()) print ("Имя:", x) print ("Второе имя:", y)
d) Понимание списка
Типы даты списка также помогают принимать несколько входных данных от пользователя за раз. Синтаксис для создания списка и сохранения в нем ввода:
x, y = [xforxininput ("Введите два значения:") .split ()]
Список позволяет одновременно принимать несколько входных данных с разными типами данных.Приведенный ниже пример поможет вам лучше понять.
x, y = [x вместо x во входных данных ("Введите свое имя и возраст:") .split (",")] print ("Ваше имя:", x) print ("Ваш возраст:", y) Выход: Введите свое имя и возраст: FACE Prep, 8 Ваше имя: FACE Prep Ваш возраст: 8
питон
Подготовка к интервью
Если у вас есть отзывы об этом
статью и хотите улучшить ее, напишите на запрос @ faceprep.в
.