Текст и числа
У каждого значения в Python есть тип. До сих пор вы использовали три типа:
- целые числа, например
25или-3. Python называет ихint(от англ. integer, «целое»). - десятичные числа, например
1.5или3.0. Python называет ихfloat(от англ. floating point, «плавающая точка»). - текст, например
"Привет". Программисты называют его строкой, как строку символов, а Python называет егоstr.
Вот почему тексту нужны кавычки, а числам нет: 25 — это число, а "25" — текст из символов 2 и 5. В выводе их не отличить: и print(25), и print("25") выводят 25. Но тип определяет, что делает оператор. Например, + складывает два числа, но соединяет две строки:
print(5 + 3)
print("5" + "3")Программа выведет:
8
53А что со строкой и числом? Python не может знать, хотите вы сложить числа или соединить текст, и не гадает. Он останавливается с ошибкой:
age = 25
print("Мне " + age + " лет.")Программа выведет:
Traceback (most recent call last):
File "<exec>", line 2, in <module>
TypeError: can only concatenate str (not "int") to strПоследняя строка говорит, что пошло не так: TypeError, ошибка типов. Python может соединять (конкатенировать) только str с str, а не с int. Строка выше указывает, где это произошло: line 2. Подробнее о сообщениях об ошибках вы узнаете позже в этом уроке.
Чтобы исправить ошибку, преобразуйте значение в нужный тип. Для каждого типа в Python есть своя функция:
str()превращает значение в строку:str(25)— это"25".int()превращает строку в целое число:int("25")— это25.float()превращает строку в десятичное число:float("2.5")— это2.5.
age = 25
print("Мне " + str(age) + " лет.")
print(int("5") + 3)
print(float("2.5") + 1)Программа выведет:
Мне 25 лет.
8
3.5Числа часто приходят в виде текста, например когда их вводят в форму или читают из файла. Прежде чем считать с ними, преобразуйте их с помощью int() или float(). Если забыть, снова получите TypeError, а когда число стоит первым, как в 25 + "5", описание будет другим: unsupported operand type(s) for +: 'int' and 'str'. Оно означает, что + не может работать с int и str.
Когда вы разделяете значения запятыми, str() не нужен: print("Мне", age, "лет.") работает с любым типом. А в следующем упражнении вы узнаете ещё более простой способ вставлять числа в текст.
Задание
- 1
Программа заканчивается ошибкой. Запустите её и прочитайте последнюю строку сообщения об ошибке. Затем исправьте последнюю строку с помощью
str(), чтобы программа выводилаСчёт: 120. - 2
Бонус хранится как текст:
"30"в кавычках. Оставьте его как есть, а на новой строке выведитеНовый счёт:и счёт с добавленным бонусом через запятую. Сначала преобразуйте бонус в число с помощьюint(bonus). Программа должна вывести:Счёт: 120 Новый счёт: 150