Дробные числа

Числа бывают целыми и дробными. Для десятичных дробей, или чисел с плавающей запятой, в Python есть специальный тип данных — float (от англ. floating point, «плавающая точка»).

first = 87.2
second = 50.2
third = 50.242
print(first + second + third)   # 187.642
1
2
3
4

Дробные числа, как и целые, преобразуют к строкам вызовом функции str():

first = 87.2
second = 50.2
third = 50.242
print(str(first) + str(second) + str(third))    # 87.250.250.242
1
2
3
4

Такой похожий код — и такой разный результат! Превратив числа в строки, мы получили один из IP-адресов серверов.

Можно и наоборот. Преобразуем строки в числа функцией float():

first = '87.2'   # строка
second = '50.2'  # тоже строка
third = '50.242' # и это строка
print(float(first) + float(second) + float(third)) # 187.642 - будет числом
1
2
3
4

Дробные числа приводят к целым функцией int(). Обратите внимание, что она не округляет числа по правилам арифметики, а лишь отбрасывает дробную часть.

# округление вниз, как вы привыкли
print(int(3.14))        # 3

# а здесь всё равно округление вниз, хотя вроде бы так быть не должно
print(int(2.72))        # 2
print(int(-3.14))       # -3
print(int(-2.72))       # -2
1
2
3
4
5
6
7

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

fraction = 1.5  # дробь
print("Целая часть = " + str(int(fraction)))
# вернётся строка, представляющая собой целочисленную часть дроби
1
2
3
Целая часть = 1
1

ИНТЕРЕСНО

Что значит «плавающая запятая» и куда она плывет? Грубо говоря, дробные числа называются «числами с плавающей запятой», потому что запятая «плавает» по числу, когда его представляют в виде произведения значащей части и степени.

Например, число 3,14159 можно записать следующим образом:

314,15910^(-2)
0,0314159
10^(2)
314159,0*10^(-5)

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

Упражнения

  1. Научим Виту вести беседы о погоде. Температура хранится в переменной temperature, а описание погоды — в переменной weather. Соберите из строк и переменных сообщение так, чтобы на экране вывелись все возможные четыре фразы:
    Сегодня солнечно, температура воздуха -25 градусов Цельсия
    Сегодня облачно, температура воздуха -25 градусов Цельсия
    и т.д.

    temperature_1 = -25
    temperature_2 = 25
    weather_sun = 'солнечно'
    weather_cloudy = 'облачно'
    
    # напишите ваш код ниже
    
    1
    2
    3
    4
    5
    6
  2. Очеловечим Виту. Пусть она округляет точные значения так, как это делают люди. Точное значение — дробь — хранится в переменной temperature_exact (англ. exact, «точный»). Выведите на экран строку вида За окном 39.3 градусов Цельсия. Это почти 40 Вита должна взять точное значение, отбросить знаки после запятой, добавить единицу и сообщить примерное значение, округлённое «вверх» — до ближайшего большего целого числа. Его Вита сохраняет в переменной temperature_approx(от англ. approximate, «примерный»). При другом значении temperature_exact должна изменяться и возвращаемая строка.

temperature_exact = '39.3' # (жара)
temperature_approx = int(float(temperature_exact)) + 1      # преобразуйте значение в целое и прибавьте 1
1
2

Упражнения tkinter

  1. Создайте оконное приложение "Вита", в которое выводятся данные о погоде: утро, день, вечер, ночь. Температура хранится в переменной temperature, а описание погоды — в переменной weather. Сегодня утром солнечно, температура воздуха -25 градусов Цельсия
    Сегодня днем облачно, температура воздуха -25 градусов Цельсия
    и т.д.

  2. Создайте оконное приложение "Вита", в которое выводятся данные о температуре. Пусть она округляет точные значения так, как это делают люди. Точное значение — дробь — хранится в переменной temperature_exact (англ. exact, «точный»). Выведите на экран строку вида За окном 17.3 градусов Цельсия. Это почти 18 Вита должна взять точное значение, отбросить знаки после запятой, добавить единицу и сообщить примерное значение, округлённое «вверх» — до ближайшего большего целого числа. Его Вита сохраняет в переменной temperature_approx (от англ. approximate, «примерный»). При другом значении temperature_exact должна изменяться и возвращаемая строка.

    temperature_exact = '17.3' # (жара)
    # преобразуйте значение в целое и прибавьте 1
    temperature_approx = int(float(temperature_exact)) + 1
    
    1
    2
    3