Python string to int and int to string
Содержание:
- Число с плавающей запятой
- Перечислить строку
- Как получить доступ к элементам кортежа?
- Как создать строку
- Строки нарезки в Python – примеры
- Типы данных кортежей в Python
- Целое число
- Плюсы и минусы подсказок типов
- Python для систем счисления
- Форматирование строк
- Переменные в Python
- Функциональный стиль в Python
- Вывод
Число с плавающей запятой
Число с плавающей запятой содержит десятичные точки. Он может быть положительным или отрицательным.
Мы можем использовать функцию float(), чтобы получить представление объекта с плавающей запятой. В объекте должен быть реализован метод __float __(), который возвращает число с плавающей запятой.
x = 10.50 print(x) print(type(x)) x = float("10.50") print(x) print(type(x)) class Data: id = 0.0 def __init__(self, i): self.id = i def __float__(self): return float(self.id) d = Data(10.50) x = float(d) print(x) print(type(x)) d = Data(10) x = float(d) print(x) print(type(x))
Вывод:
10.5 <class 'float'> 10.5 <class 'float'> 10.5 <class 'float'> 10.0 <class 'float'>
String обеспечивает реализацию метода __float __(). Вот почему мы можем легко преобразовать строку в float.
Если объект не реализует метод __float __(), мы получаем сообщение об ошибке как:
TypeError: float() argument must be a string or a number, not 'Data'
Если метод объекта __float __() не возвращает число с плавающей запятой, мы получаем сообщение об ошибке как:
TypeError: Data.__float__ returned non-float (type int)
Мы также можем определить число с плавающей запятой в экспоненциальной нотации, используя «e» или «E». Здесь число после «E» обозначает степень до 10.
x = 10.5e2 print(x) x = 10.5E2 print(x)
Выход:
1050.0 1050.0
Пояснение: 10,5E2 = 10,5 * pow (10, 2) = 10,5 * 100 = 1050,0
Перечислить строку
Точно так же мы также можем использовать этот метод для преобразования строки в объект перечисления с добавленными индексами.
Посмотрим, как это сделать.
string1 = "AskPython" enumerate_string = enumerate(string1) print("Enumerated list now looks like: ", list(enumerate_string)) #print the index and corresponding character for enumerated string for i, item in enumerate(string1): print("Index = ", i," : ","character = ",item)
Выход:
Enumerated list now looks like: Index = 0 : character = A Index = 1 : character = s Index = 2 : character = k Index = 3 : character = P Index = 4 : character = y Index = 5 : character = t Index = 6 : character = h Index = 7 : character = o Index = 8 : character = n
где,
- Мы инициализируем строку string1 и сохраняем ее вывод в переменной enumerate_string,
- Затем печатается список enumerate_string с приведением типов. Как мы видим, это список кортежей, содержащих отдельные символьные элементы с соответствующими индексами,
- Мы снова проходим через объект enumerate с помощью цикла for и распечатываем элементы с индексами.
Как получить доступ к элементам кортежа?
Мы можем получить доступ к элементам кортежа через их индекс. Значение индекса начинается с 0 до длины кортежа — 1.
tuple_numbers = (1, 2, 3, 4) print(f'First element in tuple is {tuple_numbers}') print(f'Third element in tuple is {tuple_numbers}')
Если размер меньше указанного индекса, выдается «IndexError: индекс кортежа вне допустимого диапазона».
>>> tuple_numbers = (1, 2, 3, 4) >>> tuple_numbers Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: tuple index out of range >>>
Tuple также поддерживает отрицательную индексацию. В этом случае элемент извлекается от конца до начала. Отрицательный индекс начинается с -1 до — (длина кортежа).
tuple_numbers = (1, 2, 3, 4) print(f'Last element in tuple is {tuple_numbers}') print(f'Second Last element in tuple is {tuple_numbers}') print(f'First element in tuple is {tuple_numbers}')
Если у нас есть вложенный кортеж, мы можем получить доступ к его элементам через вложенные индексы.
>>> nested_tuple = (1, 2, (3, 4), (5, 6, 7)) >>> nested_tuple 3 >>> nested_tuple 4 >>> nested_tuple 5 >>> nested_tuple 6 >>> nested_tuple 7 >>>
Мы также можем использовать отрицательные индексы с вложенными кортежами.
>>> nested_tuple = (1, 2, (3, 4), (5, 6, 7)) >>> >>> nested_tuple 7 >>> nested_tuple 4 >>> nested_tuple 4 >>> nested_tuple 6 >>>
На изображении ниже показано, как работают индексы.
Как создать строку
Строки всегда создаются одним из трех способов. Вы можете использовать одинарные, двойные и тройные скобки. Давайте посмотрим
Python
my_string = «Добро пожаловать в Python!»
another_string = ‘Я новый текст тут…’
a_long_string = »’А это у нас
новая строка
в троичных скобках»’
1 2 3 4 5 6 |
my_string=»Добро пожаловать в Python!» another_string=’Я новый текст тут…’ a_long_string=»’А это у нас новая строка |
Строка с тремя скобками может быть создана с использованием трех одинарных скобок или трех двойных скобок. Так или иначе, с их помощью программист может писать строки в нескольких линиях. Если вы впишете это, вы увидите, что выдача сохраняет разрыв строк. Если вам нужно использовать одинарные скобки в вашей строке, то впишите двойные скобки. Давайте посмотрим на пример:
Python
my_string = «I’m a Python programmer!»
otherString = ‘Слово «Python» обычно подразумевает змею’
tripleString = «»»В такой «строке» мы можем ‘использовать’ все.»»»
1 2 3 |
my_string=»I’m a Python programmer!» otherString=’Слово «Python» обычно подразумевает змею’ tripleString=»»»В такой «строке» мы можем ‘использовать’ все.»»» |
Данный код демонстрирует то, как вы можете вписать одинарные или двойные скобки в строку. Существует еще один способ создания строки, при помощи метода str. Как это работает:
Python
my_number = 123
my_string = str(my_number)
1 2 |
my_number=123 my_string=str(my_number) |
Если вы впишете данный код в ваш интерпретатор, вы увидите, что вы изменили значение интегратора на строку и присвоили ее переменной my_string. Это называется кастинг, или конвертирование. Вы можете конвертировать некоторые типы данных в другие, например числа в строки. Но вы также заметите, что вы не всегда можете делать обратное, например, конвертировать строку вроде ‘ABC’ в целое число. Если вы сделаете это, то получите ошибку вроде той, что указана в этом примере:
Python
int(‘ABC’)
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
ValueError: invalid literal for int() with base 10: ‘ABC’
1 2 3 4 5 |
int(‘ABC’) Traceback(most recent call last) File»<string>»,line1,in<fragment> ValueErrorinvalid literal forint()withbase10’ABC’ |
Мы рассмотрели обработку исключений в другой статье, но как вы могли догадаться из сообщения, это значит, что вы не можете конвертировать сроки в цифры. Тем не менее, если вы вписали:
Python
x = int(«123»)
1 | x=int(«123») |
То все должно работать
Обратите внимание на то, что строка – это один из неизменных типов Python. Это значит, что вы не можете менять содержимое строки после ее создания
Давайте попробуем сделать это и посмотрим, что получится:
Python
my_string = «abc»
my_string = «d»
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: ‘str’ object does not support item assignment
1 2 3 4 5 6 |
my_string=»abc» my_string=»d» Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeError’str’objectdoes notsupport item assignment |
Здесь мы пытаемся изменить первую букву с «а» на «d«, в итоге это привело к ошибке TypeError, которая не дает нам сделать это. Теперь вы можете подумать, что присвоение новой строке то же значение и есть изменение строки. Давайте взглянем, правда ли это:
Python
my_string = «abc»
a = id(my_string)
print(a) # 19397208
my_string = «def»
b = id(my_string)
print(b) # 25558288
my_string = my_string + «ghi»
c = id(my_string)
print(c) # 31345312
1 2 3 4 5 6 7 8 9 10 11 |
my_string=»abc» a=id(my_string) print(a)# 19397208 my_string=»def» b=id(my_string) print(b)# 25558288 my_string=my_string+»ghi» c=id(my_string) print(c)# 31345312 |
Проверив id объекта, мы можем определить, что когда мы присваиваем новое значение переменной, то это меняет тождество
Обратите внимание, что в версии Python, начиная с 2.0, строки могут содержать только символы ASCII. Если вам нужен Unicode, тогда вы должны вписывать u перед вашей строкой
Пример:
Python
# -*- coding: utf-8 -*-
my_unicode_string = u»Это юникод!»
1 2 |
# -*- coding: utf-8 -*- my_unicode_string=u»Это юникод!» |
В Python, начиная с версии 3, все строки являются юникодом.
Строки нарезки в Python – примеры
Струны нарезки Python могут быть сделаны по-разному.
Обычно мы получаем доступ к строковым элементам (символам) с помощью простой индексации, которая начинается с до N-1 (n – длина строки). Следовательно, для доступа к 1-й Элемент строки Мы можем просто использовать код ниже.
s1 = String1
Опять же, есть еще один способ получить доступ к этим персонажам, то есть используя Отрицательная индексация Отказ Отрицательная индексация начинается с -1 к -n (n – длина для данной строки). Примечание, отрицательная индексация выполняется с другого конца строки. Следовательно, для доступа к первому символу на этот раз нам нужно следовать указанному ниже коду.
s1 = String1
Теперь давайте рассмотрим некоторые способы, следующие, которые мы можем нарезать строку, используя вышеуказанную концепцию.
1. Строки нарезки в Python с началом и концом
Мы можем легко нарезать данную строку, упомянувая начальные и окончательные индексы для желаемой подковы, которую мы ищем. Посмотрите на приведенный ниже пример, он объясняет нарезку строк, используя начальные и окончательные индексы для обычной, так и для негативного метода индексации.
#string slicing with two parameters s = "Hello World!" res1 = s res2 = s #using negative indexing print("Result1 = ",res1) print("Result2 = ",res2)
Выход :
Result1 = llo Wo Result2 = rld
Здесь,
- Мы инициализируем строку, как “Привет мир!” ,
- Сначала мы нарезаем данную строку с начальным индексом 2 и окончание индекса как 8 Отказ Это означает, что результирующая подконта будет содержать символы из S к S ,
- Аналогично, для следующего, результирующая подкора должна содержать символы из S к S Отказ
Следовательно, наш выход оправдан.
2. Струки срез, используя только начало или конец
Как упоминалось ранее, все три параметра для нарезки строки являются необязательными. Следовательно, мы можем легко выполнить наши задачи с использованием одного параметра. Посмотрите на код ниже, чтобы получить четкое понимание.
#string slicing with one parameter s1= "Charlie" s2="Jordan" res1 = s1 #default value of ending position is set to the length of string res2 = s2 #default value of starting position is set to 0 print("Result1 = ",res1) print("Result2 = ",res2)
Выход :
Result1 = arlie Result2 = Jord
Здесь,
Сначала инициализируем две строки, S1 и S2 , Для нарезки их обоих мы просто упомяну о start_pos Для S1 и End_Pos только для S2, Следовательно, для RES1 , он содержит подконтную строку S1 из индекса 2 (как упоминалось) до последнего (по умолчанию он устанавливается на N-1)
Принимая во внимание, что для RES2 диапазон индексов лежит от 0 до 4 (упомянутых).
3. Строки нарезки в Python со ступенчатым параметром
Значение решает прыжок операции нарезки займет из одного индекса к другому. Посмотрите на пример ниже.
#string slicing with step parameter s= "Python" s1="Kotlin" res = s res1 = s1 #using negative parameters print("Resultant sliced string = ",res) print("Resultant sliced string(negative parameters) = ",res1)
Выход :
Resultant sliced string = Pto Resultant sliced string(negative parameters) = nl
В коде выше,
- Мы инициализируем две строки S и S1 и попытайтесь нарезать их за данные начальные и окончательные индексы, как мы сделали для нашего первого примера,
- Но на этот раз мы упомянули шаг значение, которое было установлено на 1 по умолчанию для предыдущих примеров,
- Для RES, имеющих размер шага 2 означает, что, в то время как прохождение для получения подстроки от индекса от 0 до 4, каждый раз, когда индекс будет увеличен по значению 2. То есть первый символ S («P») следующие символы в подпологе будут S и S до тех пор, пока индекс не будет меньше 5.
- Для следующего я. RES1 Упомянутый шаг (-2). Следовательно, похоже на предыдущий случай, персонажи в подстроке будут S1 Тогда S1 или S1 до тех пор, пока индекс не будет меньше (-4).
4. Реверсируя строку с помощью нарезки в Python
С использованием отрицательной индексной строки нарезки в Python мы также можем поменять строку и хранить ее в другой переменной. Для этого нам просто нужно упомянуть Размер (-1) Отказ
Давайте посмотрим, как это работает в приведенном ниже примере.
#reversing string using string slicing s= "AskPython" rev_s = s #reverse string stored into rev_s print(rev_s)
Выход :
nohtyPksA
Как мы видим, строка S обращается и хранится в Отказ Примечание : Для этого тоже исходная строка остается неповрежденной и нетронутой.
Типы данных кортежей в Python
Кортеж похож на список в Python. В Python тип данных кортежа является неизменяемым. Это означает, что кортежи не могут быть изменены, в отличие от списков. В Python кортежи могут содержать различные значения типов данных. Кортежи заключены в круглые скобки. Давайте рассмотрим код, иллюстрирующий кортежи в Python.
Пример – Код Python для иллюстрации «кортежа» в Python
first = (1, 2, 3) second = (4, 5, 6) print("len(first) : ", len(first)) print("max(first) : ", max(first)) print("min(first) : ", min(first)) print("first + second :", first + second) print("first * 3 : ", first * 3) print("1 in first : ", 1 in first) print("5 not in second : ", 5 not in second)
Выход:
В этом примере показано несколько основных операций с кортежами. Функция len() возвращает количество элементов в первом кортеже. Функция max() возвращает максимальное значение, а функция min() — минимальное. Оператор сложения добавляет два кортежа, оператор умножения умножает кортеж. Оператор in определяет, находится ли значение в кортеже.
Целое число
Целые числа — это целые числа. Они могут быть положительными или отрицательными. Они должны быть без десятичных значений.
Мы можем использовать функцию int(), чтобы получить целочисленное представление объекта. В объекте должен быть реализован метод __int __(), который возвращает целое число.
Давайте рассмотрим несколько примеров.
x = 10 print(type(x)) x = int("10") print(type(x)) class Data: id = 0 def __init__(self, i): self.id = i def __int__(self): return self.id d = Data(10) x = int(d) print(x) print(type(x))
Вывод:
<class 'int'> <class 'int'> 10 <class 'int'>
Класс String предоставляет метод __int __(), поэтому мы можем легко преобразовать строку в int с помощью метода int().
Если объект не реализует метод __int __(), функция int() выдает ошибку TypeError.
Обычно целые числа определяются на основе 10. Но мы также можем определять их в двоичном, восьмеричном и шестнадцатеричном формате.
i = 0b1010 print(i) # 10 i = 0xFF print(i) # 255 i = 0o153 print(i) # 107
Плюсы и минусы подсказок типов
Преимущества использования подсказок типов:
- Это отличный способ документировать код.
- Подсказки типов могут сделать IDE и линтеры более отзывчивыми.
- Повышают качество разрабатываемого кода.
В то же время подсказки типов имеют и недостатки:
- Увеличивается объем кода.
- Подсказки типов увеличивают время, затрачиваемое на разработку.
- Они работают только в Python 3.5+.
- Могут привести к потерям времени при запуске кода. Особенно если вы импортируете модульtyping.
Когда необходимо использовать подсказки типов:
- При написании объемного кода.
- При создании библиотек, предназначенных для использования другими разработчиками.
- При написании модульных тестов.
Встроенные подсказки типов
В Python можно добавить подсказку для следующих типов данных:
- Int.
- Float.
- Bool.
- Str.
- Bytes.
Они могут использоваться как в функциях, так и в аннотациях переменных. Концепция аннотации переменной была добавлена в Python 3.6.
Несколько примеров:
x: int # переменная с именем x без инициализации
y: float = 1.0 # переменная типа float, инициализированная значением 1,0
z: bool = False
a: str = ‘Подсказка типа Hello’
Можно добавить подсказку типа в переменную, не инициализируя ее, как это было сделано в первой строке кода. Другие три строки кода демонстрируют, как аннотировать каждую переменную и правильно их инициализировать.
Подсказки типов для наборов
Коллекция в Python представляет собой группу элементов. Поддерживаемые типы коллекций и последовательностей: list, dict, tuple и set. Но нельзя комментировать переменные, используя эти встроенные типы. Вместо этого вы должны использовать модуль typing.
Рассмотрим несколько примеров:
>>> from typing import List >>> names: List = >>> names
Мы создали list с одной str в нем. Это указывает, что вы создаете list, состоящий из строк. Также можно указать тип каждого элемента в списке:
>>> from typing import List >>> names: List =
Подсказки для кортежей похожи на подсказки списков:
>>> from typing import Tuple >>> s: Tuple = (5, 3.14, 'hello')
Подсказки типов для словарей отличаются тем, что в них не нужно указывать тип ключа и значения:
>>> from typing import Dict >>> d: Dict = {'one': 1}
Если коллекция имеет непостоянный размер, можно использовать кортежи:
>>> from typing import Tuple >>> t: Tuple = (4, 5, 6)
Значение подсказки, которое является None
Иногда значение переменной нужно инициализировать как None. Для этого можно использовать Optional:
>>> from typing import Optional >>> result: Optional = my_function()
Если значение переменной не может быть None, нужно добавить в код assert:
>>> assert result is not None
Подсказки типов для функций
Использование подсказок в функциях аналогично их применению для переменных. Но при этом вы также можете добавить в функцию тип возвращаемого значения:
def adder(x: int, y: int) -> None: print(f'The total of {x} + {y} = {x+y}')
В этом примере adder() принимает два аргумента: x и y. Они оба должны быть целыми числами. Тип возвращаемого значения None указывается с помощью -> после заключительных скобок, но перед двоеточием.
Допустим, что нужно присвоить переменной функцию adder(). Вы можете аннотировать переменную Callable следующим образом:
from typing import Callable def adder(x: int, y: int) -> None: print(f'The total of {x} + {y} = {x+y}') a: Callable, None] = adder
Переменная Callable принимает список аргументов для функции. Это также позволяет указать тип возвращаемого значения.
Рассмотрим еще один пример, в котором мы передаем более сложные аргументы:
from typing import Tuple, Optional def some_func(x: int, y: Tuple, z: Optional: = None): -> Optional: if x > 10: return None return 'You called some_func'
Мы создали функцию some_func(), которая принимает три аргумента:
- int;
- tuple строк из двух элементов;
- необязательный аргумент float, который по умолчанию является
При использовании подсказок типа в функции со значением по умолчанию нужно добавить пробел до и после знака равенства.
Это также возвращает либо None, либо строку.
Python для систем счисления
- bin(y) — целое число преобразовывается в двоичную строку.
- hex(y) — целое число преобразовывается в шестнадцатеричную строку.
- oct(y) — целое число преобразовывается в восьмеричную строку.
Рассмотрим примеры работы с системами счисления:
bin(17) # '0b10001' oct(17) # '0o21' hex(17) # '0x11' |
Задание Python 1_2: Даны две переменные. Запросить их значение. Выполнить основные арифметические действия с переменными, целочисленное деление, возведение в квадрат. Осуществить перевод в системы счисления (в 8-ю и 16-ю). Вывести результат.
Задание Python 1_3: Найти длину окружности L и площадь круга S заданного радиуса R:
L=2*pi*R, S=pi*R2.
В качестве значения использовать 3.14.
* Из задачника М. Э. Абрамян
Задание Python 1_4: Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.
* Из задачника М. Э. Абрамян
Пример: Дано двузначное число. Найти сумму и произведение его цифр.
* Из задачника М. Э. Абрамян
Решение:
import math print('Введите двузначное число: ') A = int(input()) Res = (A // 10) + math.fmod(A, 10) print('Сумма его цифр равна: ', int(Res)) Res = (A // 10) * math.fmod(A, 10) print('Произведение его цифр равно: ', int(Res)) |
Задание Python 1_5: Дано двухзначное целое число. Вывести сначала его правую цифру, а затем левую.
** Сделайте задание повышенной сложности: необходимо поменять местами цифры числа и вывести результирующее число (вывести не отдельные цифры, а именно число). Например, число , а результат — число .
* Из задачника М. Э. Абрамян
Форматирование строк
Форматирование строк (также известно как замещение) – это замещение значений в базовой строке. Большую часть времени вы будете вставлять строки внутри строк, однако, вам также понадобиться вставлять целые числа и числа с запятыми в строки весьма часто. Существует два способа достичь этой цели. Начнем с старого способа, после чего перейдем к новому:
Python
# -*- coding: utf-8 -*-
my_string = «Я люблю %s» % «Python»
print(my_string) # Я люблю Python
var = «яблоки»
newString = «Я ем %s» % var
print(newString) # Я ем яблоки
another_string = «Я люблю %s и %s» % («Python», var)
print(another_string) # Я люблю Python и яблоки
1 2 3 4 5 6 7 8 9 10 11 |
# -*- coding: utf-8 -*- my_string=»Я люблю %s»%»Python» print(my_string)# Я люблю Python var=»яблоки» newString=»Я ем %s»%var print(newString)# Я ем яблоки another_string=»Я люблю %s и %s»%(«Python»,var) print(another_string)# Я люблю Python и яблоки |
Как вы могли догадаться, % — это очень важная часть вышеописанного кода. Этот символ указывает Python, что вы скоро вставите текст на его место. Если вы будете следовать за строкой со знаком процента и другой строкой или переменной, тогда Python попытается вставить ее в строку. Вы можете вставить несколько строк, добавив несколько знаков процента в свою строку. Это видно в последнем примере
Обратите внимание на то, что когда вы добавляете больше одной строки, вам нужно закрыть эти строки в круглые скобки. Теперь взглянем на то, что случится, если мы вставим недостаточное количество строк:
Python
another_string = «Я люблю %s и %s» % «Python»
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: not enough arguments for format string
1 2 3 4 5 |
another_string=»Я люблю %s и %s»%»Python» Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeErrornotenough arguments forformatstring |
О-па. Мы не передали необходимое количество аргументов для форматирования строки. Если вы внимательно взгляните на пример, вы увидите, что у нас есть два экземпляра %, но для того, чтобы вставить строки, вам нужно передать столько же %, сколько у нас строк. Теперь вы готовы к тому, чтобы узнать больше о вставке целых чисел, и чисел с запятыми. Давайте взглянем.
Python
my_string = «%i + %i = %i» % (1,2,3)
print(my_string) # ‘1 + 2 = 3’
float_string = «%f» % (1.23)
print(float_string) # ‘1.230000’
float_string2 = «%.2f» % (1.23)
print(float_string2) # ‘1.23’
float_string3 = «%.2f» % (1.237)
print(float_string3) # ‘1.24’
1 2 3 4 5 6 7 8 9 10 11 |
my_string=»%i + %i = %i»%(1,2,3) print(my_string)# ‘1 + 2 = 3’ float_string=»%f»%(1.23) print(float_string)# ‘1.230000’ float_string2=»%.2f»%(1.23) print(float_string2)# ‘1.23’ float_string3=»%.2f»%(1.237) print(float_string3)# ‘1.24’ |
Первый пример достаточно простой. Мы создали строку, которая принимает три аргумента, и мы передаем их. В случае, если вы еще не поняли, Python не делает никаких дополнений в первом примере. Во втором примере, мы передаем число с запятой
Обратите внимание на то, что результат включает множество дополнительных нулей (1.230000). Нам это не нужно, так что мы указываем Python ограничить выдачу до двух десятичных значений в третьем примере (“%.2f”)
Последний пример показывает, что Python округлит числа для вас, если вы передадите ему дробь, что лучше, чем два десятичных значения. Давайте взглянем на то, что произойдет, если мы передадим неправильные данные:
Python
int_float_err = «%i + %f» % («1», «2.00»)
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: %d format: a number is required, not str
1 2 3 4 |
int_float_err=»%i + %f»%(«1″,»2.00») Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeError%dformatanumber isrequired,notstr |
В данном примере мы передали две строки вместо целого числа и дроби. Это привело к ошибке TypeError, что говорит нам о том, что Python ждал от нас чисел. Это указывает на отсутствие передачи целого числа, так что мы исправим это, по крайней мере, попытаемся:
Python
int_float_err = «%i + %f» % (1, «2.00»)
Traceback (most recent call last):
File «<string>», line 1, in <fragment>
TypeError: float argument required, not str
1 2 3 4 5 |
int_float_err=»%i + %f»%(1,»2.00″) Traceback(most recent call last) File»<string>»,line1,in<fragment> TypeErrorfloatargument required,notstr |
Мы получили ту же ошибку, но под другим предлогом, в котором написано, что мы должны передать дробь. Как мы видим, Python предоставляет нам полезную информацию о том, что же пошло не так и как это исправить. Если вы исправите вложения надлежащим образом, тогда вы сможете запустить этот пример. Давайте перейдем к новому методу форматирования строк.
Переменные в Python
В большинстве языков программирования переменная является именованным местоположением, используемым для хранения данных в памяти. Каждая переменная должна иметь уникальное имя, называемое идентификатором. Принято думать о переменных как о контейнерах, которые содержат данные и эти данные могут быть извлечены или изменены позже, во время программирования.
Вы можете считать переменную сумкой для хранения в ней чего либо, и это что то можно извлечь или заменить в любое время.
Объявление переменных в Python
В отличии от других языков программирования, в Python переменные не нуждаются в объявлении для резервирования места в памяти. «Объявление переменной» или «инициализация переменной» происходит автоматически, когда мы присваиваем значение переменной.
Присвоение значения переменной в Python
Вы можете использовать оператор присваивания =, чтобы присвоить значение переменной.
блок 1
Пример 1: Объявление и присвоение значения переменной
message = 'hello'
В данном примере мы присвоили переменной message значение hello. Чтобы вывести значение переменной на экран нужно вызвать функцию print()
print(message)
Вы увидите следующее:
hello
Вам не нужно указывать тип переменной во время присвоения значения. Python язык с динамической типизацией, поэтому на этапе присвоения интерпретатор «понял» что переменная message имеет тип str (string, строка). При этом, далее вы можете присвоить этой переменной значение 123 и ее тип автоматически сменится на int (integer, число).
Пример 2: изменение значения переменной, изменение типа переменной
message = 'bye' print(message) print(type(message)) message = 123 print(message) print(type(message))
В этом примере мы сначала изменили значение на другую строку, затем присвоили переменной значение типа int. Как видите никаких ошибок это не спровоцировало.
Пример 3: Присвоение нескольких значений нескольким переменным на одной строке
Иногда можно присваивать значения сразу нескольким переменным на одной строке:
a, b, c = 1, 'hello', 12
Эта запись то же самое что и:
a = 1 b = 'hello' c = 12
Не стоит злоупотреблять этим способом, он несколько снижает читабельность кода.
Если мы хотим присвоить одно и то же значение нескольким переменным одновременно, мы можем сделать следующим способом:
a = b = c = 15
В результате, все три переменные будут типа int и содержать в себе значение 15.
Функциональный стиль в Python
В функциональном программировании вычисления выполняются путем объединения функций, которые принимают аргументы и возвращают конкретное значение (или значения). Эти функции не изменяют свои входные аргументы и не изменяют состояние программы. Они просто предоставляют результат данного вычисления. Такие функции обычно называются чистыми функциями (pure functions).
Теоретически программы, построенные с использованием функционального стиля, проще:
- Разрабатывать, потому что вы можете кодировать и использовать каждую функцию изолированно
- Отлаживать и тестировать, потому что вы можете тестировать и отлаживать отдельные функции, не глядя на остальную часть программы
- Понимать, потому что вам не нужно иметь дело с изменениями состояния на протяжении всей программы
Функциональное программирование обычно использует списки, массивы и другие итерационные объекты для представления данных вместе с набором функций, которые работают с этими данными и преобразовывают их. Когда дело доходит до обработки данных в функциональном стиле, обычно используются как минимум три метода:
- Сопоставление (Mapping) заключается в применении функции преобразования к итерируемому объекту для создания нового объекта. Элементы в новой итерации создаются путем вызова функции преобразования для каждого элемента в исходной итерации.
- Фильтрация (Filtering) состоит из применения предиката или булевозначной функции (predicate or Boolean-valued function) к итерируемому объекту для создания нового итерируемого объекта. Элементы в новой итерации создаются путем фильтрации любых элементов в исходной итерации, которые заставляют функцию предиката возвращать false.
- Сокращение (Reducing) состоит из применения функции reduce к итерируемому объекту для получения единственного накопленного значения.
По словам Гвидо ван Россума, на Python в большей степени влияют императивные языки программирования, чем функциональные языки:
Однако еще в 1993 году сообщество Python требовало некоторых функций функционального программирования. Они просили:
- Анонимные функции
- Функцию
- Функцию
- Функцию
Эти функциональные возможности были добавлены в язык благодаря участию многих членов сообщества. В настоящее время , и являются фундаментальными компонентами стиля функционального программирования в Python.
В этом руководстве мы рассмотрим одну из этих функциональных возможностей — встроенную карту функций map(). Вы также узнаете, как использовать составные части списковых включений (comprehensions) и выражения генератора (generator expressions), чтобы получить ту же функциональность, что и map(), в питоническом и удобочитаемом виде.
Вывод
На этом этапе вы должны лучше понять некоторые основные типы данных Python, которые доступны для использования в Python. Каждый из этих типов данных станет важным по мере разработки проектов программирования на языке Python.
Как только у вас будет четкое представление о типах данных, доступных вам в Python, вы сможете научиться преобразовывать эти типы данных Python.
Этот учебник охватывал различные типы данных Python и пытался объяснить каждый из них на примерах. Здесь вы можете найти всю необходимую информацию, которая может быть полезна вам при разработке программ на Python.
Если у вас есть какие-либо сомнения, сообщите нам об этом в разделе комментариев ниже.
Счастливого кодирования!