Языки программирования

Переменные в Python

Переменная – это поименованная область памяти, содержащая какое-то значение. Значения могут быть разных типов, например, строка, целое число, дробное число (float) и т.д. От типа переменной зависит, как именно она будет храниться в памяти.

Если вы программировали на других языках, то знаете, что переменную сначала нужно объявить, а затем инициализировать.

Отличие Python от таких языков как С/С++/С#, Pascal, Java в том, что в нем не требуется объявление переменной. Python поддерживает динамическую типизацию, это означает, что тип переменной будет определяться автоматически — при присваивании значения.

Операция присвоения значения осуществляется с помощью оператора =, как и в других языках программирования. Пример объявления переменной:
n = 10
print(n)
# Выведет: 10

n = "Max"
print(n)
# Выведет: Max
Правила написания имен переменных:

  1. Имя переменной не должно начинаться с цифры.
  2. Имя переменной может состоять только из цифр, букв и знаков подчеркивания.

Имена переменных могут быть написаны на русском языке, например:
имя = "Виктор"
print(имя)
# Выведет: Виктор
Никакой ошибки не будет, но настоятельно рекомендуется имена идентификаторов писать только латинскими буквами.

Использование переменных

Объявлять переменную можно в любом месте программы, но до ее первого использования. После того, как переменной присвоено значение, ее можно использовать. Например:
a = 10
b = 5
c = a + b
print("Результат ", с) 
# Выведет: Результат  15

Локальные переменные

По умолчанию, все переменные объявляются как локальные. Это значит, что переменная будет видна только из той же функции где была объявлена (кроме случаев когда мы объявляем переменные на верхнем уровне, тогда переменная будет видна из всего файла). Пример:
a = 5

def f():
  a = 6
  print(a)

f() # Будет выведено: 6
print(a) # Будет выведено: 5

Глобальные переменные (global)

Переменные, которые объявлены не в рамках функций являются глобальными. Однако в Python есть механизм указать внутри функции, что мы хотим использовать глобальную переменную вместо локальной с помощью ключевого слова global:
a = 4

def f():
  global a
  a = 5
  print(a)

f() # Будет выведено: 5
print(a) # Будет выведено: 5
Данный код выведет две пятерки. Это связано с тем, что функция f обновляет не локальную переменную, а глобальную.

Использование переменной внешней функции (nonlocal)

Также есть возможность указать что должна использоваться переменная из родительского контекста. То есть мы не объявляем новую переменную внутри функции, а используем уже существующею (при этом не обязательно глобальную). Пример:
a = 5
def f1():
  a = 2
  def f2():
    nonlocal a
    a = 1
    print(a) # выводит 1
  f2()
  print(a) # выводит 1

f1()
print(a) # выводит 5
Инструкция nonlocal говорит Python’у что мы должны взять внешнюю переменную, а не создавать новую.

Программа «Путевой компьютер»

В статье «Программы с числами в Python» мы создавали две небольшие программы, рассчитывающие время в пути, а также расход топлива. Сейчас мы на основании этих двух программ разработаем программу «Путевой компьютер».
Программа будет учитывать не только время в пути и потребление топлива, но еще и остановки на дозаправки и плановые остановки. Полный листинг программы:
program = "Путевой компьютер!"

# Переменные

stars = 80         # Количество звездочек
tabs = 5           # Количество отступов

dist = 0           # Расстояние, которое нужно проехать
speed = 0          # Средняя скорость авто, км /ч
time = 0           # Время в движении (за рулем)
total_time = 0     # Общее количество времени в пути
drive_hours = 0    # Часов в движении (полных)
drive_mins = 0     # Минут (остаток)
total_hours = 0    # Часов всего (полных)
total_min = 0

tank = 0           # Размер бака
consum = 0         # Средний расход л/100 км
refuels = 0        # Количество дозаправок
refuel_time = 0    # Время дозаправки
fuel = 0           # Сколько затрачено топлива
price = 0

breaks = 0         # Количество плановых остановок
break_time = 0     # Время каждой плановой остановки

# Выводим заголовок
print("\t" * tabs, program)
print("*" * stars)

# Ввод данных от пользователей
dist = int(input("Введите расстояние, км: "))
speed = int(input("Планируемая средняя скорость (целое число): "))
consum = float(input("Введите средний расход л./100 км (вещ.число): "))
tank = float(input("Объем бака, л: "))
price = float(input("Стоимость 1 литра топлива, р.: "))
breaks = float(input("Количество плановых остановок (без дозаправок): "))
break_time = float(input("Время каждой плановой остановки, минут: "))
refuel_time = float(input("Время на дозаправку, минут : "))

# Производим вычисления
time = dist * 60 / speed      # Время зав рулем
fuel = consum * dist / 100    # Всего затрачено

refuels = fuel // tank
total_time = time + refuels * refuel_time + breaks * break_time

drive_hours = time // 60
drive_mins = time - drive_hours * 60

total_hours = total_time // 60
total_mins = total_time - total_hours * 60

print("*" * stars)
print("\t" * tabs, "Результаты:")

print("Время за рулем: ", int(drive_hours), " ч. ", int(drive_mins), " м. ")
print("Общее время в пути: ", int(total_hours), " ч. ", int(total_mins), " м. ")
print("Количество дозаправок: ", refuels)
print("Потрачено времени на дозаправку: ", refuels * refuel_time, " минут")
print("Израсходовано топлива, л.: ", fuel)
print("Стоимость топлива, p: ", fuel * price)

input("Нажмите Enter для выхода")
Обратите внимание: при вычислении количества дозаправок мы используем оператор //, а не /. Дозаправка — это целое число, она либо есть, либо ее нет. Не существует 0.5 или 0.3 дозаправки. Поэтому мы используем оператор //, чтобы получить количество целых частей.

Результат работы программы:
Видео по уроку:
Самоучитель по Python