Lesson 1 вход, печать и номера

Переменные и их типы

Теперь, когда мы
узнали как записывать простейшие программы, пришло время выяснить как Python хранит и представляет
различные данные. То есть, поговорить о переменных и их типах.

Строго говоря, в
Питоне нет переменных, в привычном смысле: когда переменная является
именованным хранилищем данных. Здесь все устроено несколько иначе. Например,
если записать вот такую строчку:

x = "Hello World!"

то x здесь имя
ссылки, которая ссылается на «Hello World!». А сам «Hello World!»
представляется в Python как объект, содержащий эту строку.
Визуально это можно представить так:

То есть, оператор присваивания не
копирует данные в переменную, он лишь возвращает ссылку на объект с данными и
эта ссылка сохраняется в переменной x.

Почему переменная называется x? В общем-то не
почему, просто этот символ пришел мне в голову и я его записал. Вы можете
писать свои, другие имена переменных, главное, чтобы они соответствовали такому
правилу:

  • имя
    должно быть существительным (отвечать на вопрос: кто, что)

  • в
    качестве первого символа допускается писать буквы латинского алфавита a-z, A-Z и символ
    подчеркивания _

  • в
    качестве второго и последующих символов еще цифры 0-9

И, конечно же,
имена ссылок следует делать осмысленными. Например, если мы храним сообщение,
пусть она называется

msg = "Сообщение"

если это
какой-либо счетчик, то можно использовать имя

count = 

и так далее. Это
упрощает понимание программы и облегчает процесс программирования.

Давайте теперь
выведем значение нашей ссылки x, используя встроенную функцию

id(<ссылка>)

print(id(x))

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

type(<ссылка на
объект>)

например, так:

print( type(x) )

и мы увидим в консоли сообщение:

<class ‘str’>

которое говорит,
что объект (класс) имеет тип str, то есть, содержит строку. Получается,
что в любом объекте, помимо данных, хранится еще и тип данных:

Механизм
переменных в виде ссылок на объекты имеет ряд преимуществ. Например, мы можем
далее в программе присвоить ссылку x на любой другой объект, скажем,
числовой:

x = "Hello World!"
print(id(x))
x = 5
print(id(x))
print( type(x) )

В этом случае
будет автоматически создан новый объект с числом 5 и типом int:

Если мы запустим
программу, то увидим, что id у x меняется, что
говорит об изменении ссылки на новый объект и тип данных теперь int.

А что происходит
с объектом, на который теперь нет ссылок? Он автоматически уничтожается
сборщиком мусора. В Python реализован алгоритм автоматического
удаления данных, на которых нет внешних ссылок. Поэтому программист может
совершенно не заботиться об освобождении памяти, занятой ранее каким-либо
объектом. И это очень удобно. В частности, вот при таком присваивании:

x = 2+3

сначала будет
вычислено это выражение 2+3=5, на основе двух временных объектов (не
именованных – на них нет ссылок), затем, сформируется новый объект со значением
5, а объекты 2 и 3 уничтожатся сборщиком мусора, т.к. на них нет внешних
ссылок. В результате, x будет ссылаться
на этот созданный объект со значением 5 и целочисленным типом int.

Создание списков на Python

  • Создать список можно несколькими способами. Рассмотрим их.

1. Получение списка через присваивание конкретных значений

Так выглядит в коде Python пустой список:

s =   # Пустой список

Примеры создания списков со значениями:

l = 25, 755, -40, 57, -41   # список целых чисел
l = 1.13, 5.34, 12.63, 4.6, 34.0, 12.8   # список из дробных чисел
l = "Sveta", "Sergei", "Ivan", "Dasha"   # список из строк
l = "Москва", "Иванов", 12, 124   # смешанный список
l = , , , 1, , 1, 1, 1,    # список, состоящий из списков
l = 's', 'p', 'isok', 2 # список из значений и списка

2. Списки при помощи функции List()

Получаем список при помощи функции List()

empty_list = list() # пустой список
l = list ('spisok')  # 'spisok' - строка
print(l) # - результат - список

4. Генераторы списков

  • В python создать список можно также при помощи генераторов, — это довольно-таки новый метод:
  • Первый простой способ.

Сложение одинаковых списков заменяется умножением:

# список из 10 элементов, заполненный единицами
l = 1*10
# список l = 

Второй способ сложнее.

l = i for i in range(10)
# список l = 

или такой пример:

c = c * 3 for c in 'list'
print (c) # 

Пример:
Заполнить список квадратами чисел от 0 до 9, используя генератор списка.

Решение: 

l = i*i for i in range(10)

еще пример:

l = (i+1)+i for i in range(10)
print(l) # 

Случайные числа в списке:

from random import randint 
l = randint(10,80) for x in range(10)
# 10 чисел, сгенерированных случайным образом в диапазоне (10,80)

Задание Python 4_1:
Создайте список целых чисел от -20 до 30 (генерация).

Результат:

Задание Python 4_2:
Создайте список целых чисел от -10 до 10 с шагом 2 (генерация list).

Результат:

Задание Python 4_3:
Создайте список из 20 пятерок (генерация).

Результат:

Задание Python 4_4:
Создайте список из сумм троек чисел от 0 до 10, используя генератор списка (0 + 1 + 2, 1 + 2 + 3, …).

Результат:

Задание Python 4_5 (сложное):
Заполните массив элементами арифметической прогрессии. Её первый элемент, разность и количество элементов нужно ввести с клавиатуры.
  
* Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d

Простейшие операции над списками

  • Списки можно складывать (конкатенировать) с помощью знака «+»:
l = 1, 3 + 4, 23 + 5
 
# Результат:
# l = 
33, -12, 'may' + 21, 48.5, 33 # 

или так:

a=33, -12, 'may'
b=21, 48.5, 33
print(a+b)# 

Операция повторения:

,,,1,1,1 * 2 # , , , , , ]

Пример:
Для списков операция переприсваивания значения отдельного элемента списка разрешена!:

a=3, 2, 1
a1=;
print(a) # 

Можно!

Задание 4_6:
В строке записана сумма натуральных чисел: ‘1+25+3’. Вычислите это выражение. Работать со строкой, как со списком.

Начало программы:

s=input('введите строку')
l=list(str(s));

Как узнать длину списка?

Файлы в Python

В целом различают два типа файлов (и работы с ними):

  • текстовые файлы со строками неопределенной длины;
  • двоичные (бинарные) файлы (хранящие коды таких данных, как, например, рисунки, звуки, видеофильмы);

Этапы работы с файлом:

  1. открытие файла;
  • режим чтения,
  • режим записи,
  • режим добавления данных.

работа с файлом;
закрытие файла.

В python открыть файл можно с помощью функции open с двумя параметрами:

  • имя файла (путь к файлу);
  • режим открытия файла:
  • «r» – открыть на чтение,
  • «w» – открыть на запись (если файл существует, его содержимое удаляется),
  • «a» – открыть на добавление.

В коде это выглядит следующим образом:

Fin = open ( "input.txt" ) 
Fout = open ( "output.txt", "w" ) 
  # работа с файлами 
Fout.close() 
Fin.close()

Работа с текстовыми файлами в Питон

Чтение из файла происходит двумя способами:

  1. построчно с помощью метода readline:

файл input.txt:
1
2
3

str1 = Fin.readline() # str1 = 1
str2 = Fin.readline() # str2 = 2

метод read читает данные до конца файла:

файл input.txt:
1
2
3

str = Fin.read() 
''' 
str = 1
2
3
'''

Для получения отдельных слов строки используется метод split, который по пробелам разбивает строку на составляющие компоненты:

str = Fin.readline().split()
print(str)
print(str1)

Пример:
В файле записаны два числа. Необходимо суммировать их.

файл input.txt:
12 17

ответ:
27

Решение: 

  1. способ:
Fin = open ( "D:/input.txt" ) 
str = Fin.readline().split()
x, y = int(str), int(str1)
print(x+y)

способ:

...
x, y = int(i) for i in s
print(x+y)

* Функция int преобразует строковое значение в числовое.

В python метод write служит для записи строки в файл:

Fout = open ( "D:/out.txt","w" ) 
Fout.write ("hello")

Запись в файл можно осуществлять, используя определенный
шаблон вывода. Например:

Fout.write ( "{:d} + {:d} = {:d}\n".format(x, y, x+y) )

В таком случае вместо шаблонов {:d} последовательно подставляются значения параметров метода format (сначала x, затем y, затем x+y).

Аналогом «паскалевского» eof (если конец файла) является обычный способ использования цикла while или с помощью добавления строк в список:

  1. while True: 
       str = Fin.readline() 
       if not str: break
  2. Fin = open ( "input.txt" ) 
    lst = Fin.readlines() 
    for str in lst: 
        print ( str, end = "" ) 
    Fin.close()
  3. подходящий способ для Python:
for str in open ( "input.txt" ): 
   print ( str, end = "" )

Задание Python 9_1:
Считать из файла input.txt 10 чисел (числа записаны через пробел). Затем записать их произведение в файл output.txt.

Рассмотрим пример работы с массивами.

Пример:
Считать из текстового файла числа и записать их в другой текстовый файл в отсортированном виде.

Решение: 

  • Поскольку в Python работа с массивом осуществляется с помощью структуры список, то количество элементов в массиве заранее определять не нужно.
  • Считывание из файла чисел:
lst =  
while True:
   st = Fin.readline() 
   if not st: break 
   lst.append (int(st))

Сортировка.
Запись отсортированного массива (списка) в файл:

Fout = open ( "output.txt", "w" ) 
Fout.write (str(lst)) # функция str преобразует числовое значение в символьное
Fout.close()

Или другой вариант записи в файл:

for x in lst: 
    Fout.write (str(x)+"\n") # запись с каждой строки нового числа

Задание Python 9_2:
В файле записаны в целые числа. Найти максимальное и минимальное число и записать в другой файл.

Задание Python 9_3:
В файле записаны в столбик целые числа. Отсортировать их по возрастанию суммы цифр и записать в другой файл.

Рассмотрим на примере обработку строковых значений.

Пример:
В файл записаны сведения о сотрудниках некоторой фирмы в виде:

Иванов 45 бухгалтер

Необходимо записать в текстовый файл сведения о сотрудниках, возраст которых меньше 40.

Решение: 

  • Поскольку сведения записаны в определенном формате, т.е. вторым по счету словом всегда будет возраст, то будем использовать метод split, который разделит слова по пробелам. Под номером 1 в списке будет ити возраст:
st = Fin.readline() 
data = st.split() 
stAge = data1 
intAge = int(stAge)

Более короткая запись будет выглядеть так:

st = Fin.readline() 
intAge = int(st.split()1)

Программа выглядит так:

while True: 
  st = Fin.readline() 
  if not s: break 
  intAge = int (st.split()1)

Но лучше в стиле Python:

for st in open ( "input.txt" ): 
   intAge = int (st.split()1) 
   if intAge < 40: 
      Fout.write (st)

Задание Python 9_4:
В файл записаны сведения о детях детского сада:

Иванов иван 5 лет

Необходимо записать в текстовый файл самого старшего и самого младшего.

Практическая работа

  1. Напишите программу (файл user.py), которая запрашивала бы у пользователя:
    — его имя (например, «What is your name?»)
    — возраст («How old are you?»)
    — место жительства («Where are you live?»)
    После этого выводила бы три строки:
    «This is имя»
    «It is возраст»
    «(S)he live in место_жительства»
    Вместо имя, возраст, место_жительства должны быть данные, введенные пользователем. Примечание: можно писать фразы на русском языке, но если вы планируете стать профессиональным программистом, привыкайте к английскому.

  2. Напишите программу (файл arithmetic.py), которая предлагала бы пользователю решить пример 4 * 100 — 54. Потом выводила бы на экран правильный ответ и ответ пользователя. Подумайте, нужно ли здесь преобразовывать строку в число.

  3. Запросите у пользователя четыре числа. Отдельно сложите первые два и отдельно вторые два. Разделите первую сумму на вторую. Выведите результат на экран так, чтобы ответ содержал две цифры после запятой.

Доступ к элементам

Мы можем получить доступ к элементам списка с помощью index. Значение индекса начинается с 0.

>>> vowels_list = 
>>> vowels_list
'a'
>>> vowels_list
'u'

Если индекс не входит в диапазон, возникает IndexError.

>>> vowels_list
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> 

Мы также можем передать отрицательное значение индекса. В этом случае элемент возвращается от конца к началу. Допустимый диапазон значений индекса — от -1 до — (длина).

Это полезно, когда нам нужен определенный элемент быстро, например, последний элемент, второй последний элемент и т. д.

>>> vowels_list = 
>>> vowels_list  # last element
'u'
>>> vowels_list  # second last element
'e'
>>> vowels_list
'a'

Функция filter

Следующая
аналогичная функция – это filter. Само ее название говорит, что
она возвращает элементы, для которых, переданная ей функция возвращает True:

filter(func, *iterables)

Предположим, у
нас есть список

a=1,2,3,4,5,6,7,8,9,10

из которого
нужно выбрать все нечетные значения. Для этого определим функцию:

def odd(x):
    return x%2

И далее, вызов
функции filter:

b = filter(odd, a)
print(b)

На выходе
получаем итератор, который можно перебрать так:

print( next(b) )
print( next(b) )
print( next(b) )
print( next(b) )

Или, с помощью
цикла:

for x in b:
    print(x, end=" ")

Или же
преобразовать итератор в список:

b = list(filter(odd, a))
print(b)

Конечно, в
качестве функции здесь можно указывать лямбда-функцию и в нашем случае ее можно
записать так:

b = list(filter(lambda x: x%2, a))

И это бывает гораздо
удобнее, чем объявлять новую функцию.

Функцию filter можно применять
с любыми типами данных, например, строками. Пусть у нас имеется вот такой
кортеж:

lst = ("Москва", "Рязань1", "Смоленск", "Тверь2", "Томск")
b = filter(str.isalpha, lst)
 
for x in b:
    print(x, end=" ")

и мы вызываем
метод строк isalpha, который
возвращает True, если в строке
только буквенные символы. В результате в консоли увидим:

Москва Смоленск
Тверь Томск

Методы добавления/удаления элементов в множестве

Для добавления
элемента в множество используется метод add:

b.add(7)

И, так как
множества – это изменяемый тип данных, то этот метод сразу добавит этот
элемент, если такого еще нет. То есть, если мы попробуем добавить 7 еще раз:

b.add(7)

то множество не
изменится.

Если необходимо
в множество добавить сразу несколько значений, то для этого можно
воспользоваться методом update:

b.update("a", "b", (1,2))

В качестве
аргумента мы должны указать итерируемый объект, например, список, значения
которого и будут добавлены в множество, разумеется, с проверкой их
уникальности. Или, так:

b.update("abrakadabra")

Строка – это
тоже итерируемый объект, и ее уникальные символы будут добавлены в множество. И
так далее, в качестве аргумента метода update можно указывать
любой перебираемый объект.

Для удаления
элемента по значению используется метод discard:

b.discard(2)

Если еще раз
попытаться удалить двойку:

b.discard(2)

то ничего не
произойдет и множество не изменится.

Другой метод для
удаления элемента по значению – remove:

b.remove(4)

но при повторном
таком вызове:

b.remove(4)

возникнет
ошибка, т.к. значение 4 в множестве уже нет. То есть, данный метод возвращает
ошибку при попытке удаления несуществующего значения. Это единственное отличие
в работе этих двух методов.

Также удалять
элементы можно и с помощью метода pop:

b.pop()

При этом он
возвращает удаляемое значение, а сам удаляемый элемент оказывается, в общем-то,
случайным, т.к. множество – это неупорядоченный список. Если вызвать этот метод
для пустого множества, то возникнет ошибка:

c=set()
c.pop()

Наконец, если
нужно просто удалить все элементы из множества, то используется метод:

b.clear()

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

Видео по теме

Python 3 #1: установка и запуск интерпретатора языка

Python 3 #2: переменные, оператор присваивания, типы данных

Python 3 #3: функции input и print ввода/вывода

Python 3 #4: арифметические операторы: сложение, вычитание, умножение, деление, степень

Python 3 #5: условный оператор if, составные условия с and, or, not

Python 3 #6: операторы циклов while и for, операторы break и continue

Python 3 #7: строки — сравнения, срезы строк, базовые функции str, len, ord, in

Python 3 #8: методы строк — upper, split, join, find, strip, isalpha, isdigit и другие

Python 3 #9: списки list и функции len, min, max, sum, sorted

Python 3 #10: списки — срезы и методы: append, insert, pop, sort, index, count, reverse, clear

Python 3 #11: списки — инструмент list comprehensions, сортировка методом выбора

Python 3 #12: словарь, методы словарей: len, clear, get, setdefault, pop

Python 3 #13: кортежи (tuple) и операции с ними: len, del, count, index

Python 3 #14: функции (def) — объявление и вызов

Python 3 #15: делаем «Сапер», проектирование программ «сверху-вниз»

Python 3 #16: рекурсивные и лямбда-функции, функции с произвольным числом аргументов

Python 3 #17: алгоритм Евклида, принцип тестирования программ

Python 3 #18: области видимости переменных — global, nonlocal

Python 3 #19: множества (set) и операции над ними: вычитание, пересечение, объединение, сравнение

Python 3 #20: итераторы, выражения-генераторы, функции-генераторы, оператор yield

Python 3 #21: функции map, filter, zip

Python 3 #22: сортировка sort() и sorted(), сортировка по ключам

Python 3 #23: обработка исключений: try, except, finally, else

Python 3 #24: файлы — чтение и запись: open, read, write, seek, readline, dump, load, pickle

Python 3 #25: форматирование строк: метод format и F-строки

Python 3 #26: создание и импорт модулей — import, from, as, dir, reload

Python 3 #27: пакеты (package) — создание, импорт, установка (менеджер pip)

Python 3 #28: декораторы функций и замыкания

Python 3 #29: установка и порядок работы в PyCharm

Python 3 #30: функция enumerate, примеры использования

Практическая работа

В программировании можно из одной функции вызывать другую. Для иллюстрации этой возможности напишите программу по следующему описанию.

Основная ветка программы, не считая заголовков функций, состоит из одной строки кода. Это вызов функции . В ней запрашивается на ввод целое число. Если оно положительное, то вызывается функция , тело которой содержит команду вывода на экран слова «Положительное». Если число отрицательное, то вызывается функция , ее тело содержит выражение вывода на экран слова «Отрицательное».

Понятно, что вызов должен следовать после определения функций. Однако имеет ли значение порядок определения самих функций? То есть должны ли определения и предшествовать или могут следовать после него? Проверьте вашу гипотезу, поменяв объявления функций местами. Попробуйте объяснить результат.

The gets() and puts() Functions

The char *gets(char *s) function reads a line from stdin into the buffer pointed to by s until either a terminating newline or EOF (End of File).

The int puts(const char *s) function writes the string ‘s’ and ‘a’ trailing newline to stdout.

NOTE: Though it has been deprecated to use gets() function, Instead of using gets, you want to use fgets().

#include <stdio.h>
int main( ) {

   char str;

   printf( "Enter a value :");
   gets( str );

   printf( "\nYou entered: ");
   puts( str );

   return 0;
}

When the above code is compiled and executed, it waits for you to input some text. When you enter a text and press enter, then the program proceeds and reads the complete line till end, and displays it as follows −

$./a.out
Enter a value : this is test
You entered: this is test

global ключевое слово

Мы можем получить доступ к глобальной переменной внутри функции. Но мы не можем это изменить. Мы должны использовать ключевое слово чтобы изменить значение глобальной переменной внутри функции.

name = "Python"

def foo():
    print(name)

foo()
print(name)

# Output
# Python
# Python

Посмотрим, что произойдет, когда мы попытаемся изменить значение внутри функции.

>>> name = "Python"
>>> def foo():
...     print(name)
...     name = "Java"
... 
>>> 
>>> foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in foo
UnboundLocalError: local variable 'name' referenced before assignment
>>> 
>>> print(name)
Python
>>> 

Причина проста. Когда мы используем оператор присваивания для изменения значения «name», он начинает обрабатываться как локальная переменная. Таким образом, доступ к нему внутри функции print() сбрасывает, потому что он не определен в этот момент.

Давайте используем ключевое слово global, чтобы изменить значение глобальной переменной.

>>> name = "Python"
>>> 
>>> def foo():
...     global name
...     print(name)
...     name = "Java"
... 
>>> print(name)
Python
>>> foo()
Python
>>> print(name)
Java
>>> 

Sum of numbers and strings

Let’s try to write a program that inputs two numbers and prints their sum. We read the two numbers
and store them in the variables and using the assignment operator .
On the left side of an assignment operator we put the name of the variable. The name could be a string of latin characters (, , , )
but must start with a letter in the range or .
On the right side of an assignment operator we put any expression that Python can evaluate.
The name starts pointing to the result of the evaluation.
Read this example, run it and look at the output:

5
7
    
a = input()
b = input()
s = a + b
print(s)
    

After running the example we can see that it prints . As we were taught in school,
gives . So, the program is wrong, and it’s important to understand why.
The thing is, in the third line Python has «summed» two strings, rather than two numbers.
The sum of two strings in Python works as follows: they are just glued one after another. It’s also sometimes
called «string concatenation».

Do you see in the variable inspector, on the right hand side, that the values bound to variables  and 
are wrapped in quotes? That means that the values there are string, not numbers. Strings and numbers
are represented in Python differently.

All the values in Python are called «objects». Every object has a certain type. The number 2 corresponds to an object «number 2» of type «int»
(i.e., an integer number). The string corresponds to an object «string ‘hello'» of type «str».
Every floating-point number is represented as an object of type «float». The type
of an object specifies what kind of operations may be applied to it.
For instance, if the two variables and are pointing to the objects of type , Python can multiply them. However, if they are pointing to the objects of type , Python can’t do that:

None
first = 5
second = 7
print(first * second)

# you can use single or double quotes to define a string
first = '5'
second = "7"
print(first * second)
    

To cast (convert) the string of digits into an integer number, we can use the function . For example,  gives an int object with value .

Given the information above, we can now fix the incorrect output and output the sum of the two numbers correctly:

5
7
    
a = int(input())
b = int(input())
s = a + b
print(s)
    

Приоритеты операторов

Consider this expression:

>>> 20 + 4 * 10
60

There is ambiguity here. Should Python perform the addition first and then multiply the sum by ? Or should the multiplication be performed first, and the addition of second?

Clearly, since the result is , Python has chosen the latter; if it had chosen the former, the result would be . This is standard algebraic procedure, found universally in virtually all programming languages.

Всем операторам, которые поддерживает язык, присваивается приоритет. В выражении все операторы с наивысшим приоритетом выполняются первыми. Как только эти результаты получены, выполняются операторы следующего наивысшего приоритета. Так продолжается до тех пор, пока выражение не будет полностью оценено. Все операторы с одинаковым приоритетом выполняются в порядке слева направо.

Вот порядок приоритета операторов Python, которые вы видели до сих пор, от низшего к высшему:

 
Оператор
Описание

низший приоритет

Логическое ИЛИ

Логическое И

Логическое НЕ

, , , , , , ,

сравнения, идентификация

побитовое ИЛИ

побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ

побитовое И

,

битовый сдвиг

,

сложение, вычитание

, , ,

умножение, деление, окруляющее деление, остаток от деления

, ,

плюс, минус, побитовый минус

наивысший приоритет

возведение в степень

 
Операторы в верхней части таблицы имеют самый низкий приоритет, а операторы в нижней части таблицы имеют самый высокий. Любые операторы в одной строке таблицы имеют одинаковый приоритет.

Понятно, почему умножение выполняется первым в приведенном выше примере: умножение имеет более высокий приоритет, чем сложение.

Аналогично, в приведенном ниже примере сначала возводится в степень , что равно , а затем выполняется умножение в порядок слева направо():

>>> 2 * 3 ** 4 * 5
810

Приоритеты операторов могут быть переопределены с помощью скобок. Выражения в скобках всегда выполняются в первую очередь, перед выражениями, которые не заключены в скобки. Таким образом, происходит следующее:

>>> 20 + 4 * 10
60
>>>(20 + 4) * 10
240
>>> 2 * 3 ** 4 * 5
810
>>> 2 * 3 **(4 * 5)
6973568802

В первом примере сначала вычисляется , затем результат умножается на . Во втором примере сначала вычисляется , затем значение увеличивается до этой степени, а затем результат умножается на .

Нет ничего плохого в том, чтобы свободно использовать круглые скобки, даже если они не нужны для изменения порядка оценки. Фактически, это считается хорошей практикой, потому что это может сделать код более читабельным, и это освобождает читателя от необходимости вызывать Приоритеты операторов из памяти. Учтите следующее:

(a < 10) and(b > 30)

Здесь круглые скобки совершенно не нужны, поскольку операторы сравнения имеют более высокий приоритет, чем , и в любом случае выполнялись бы первыми. Но некоторые могут считать намерение версии в скобках более очевидным, чем эта версия без скобок:

a < 10 and b > 30

С другой стороны, вероятно, есть те, кто предпочел бы последнее; это вопрос личных предпочтений. Дело в том, что вы всегда можете использовать круглые скобки, если считаете, что это делает код более читабельным, даже если в них нет необходимости менять порядок вычислений.

Ввод и вывод данных

  • Вывод данных осуществляется при помощи оператора print:
1
2
3
4
5
a = 1
b = 2
print(a)
print(a + b)
print('сумма = ', a + b)

Существует возможность записи инструкций в одну строку, разделяя их через . Однако не следует часто использовать такой способ, это снижает удобочитаемость:

1
2
3
a = 1; b = 2; print(a)
print(a + b)
print('сумма = ', a + b)

Для функции print может задаваться так называемый сепаратор — разделитель между элементами вывода:

1
2
3
x=2
y=5
print ( x, "+", y, "=", x+y, sep = " " )

Результат отобразится с пробелами между элементами: 2 + 5 = 7

Для форматированного вывода используется format:

1
2
x = 11
print ( "{:4d}".format(x) )

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

Или с несколькими аргументами:

1
2
x = 2
print ( "{:4d}{:4d}{:4d}".format (x, x+x, x*x) )

В итоге каждое из значений выводится из расчета 4 знакоместа.

Ввод данных осуществляется при помощи оператора :

1
2
a = input()
print(a)

В скобках функции можно указать сообщение-комментарий к вводимым данным:

a = input ("Введите количество: ")

Функция input воспринимает входные данные, как поток символов. Поэтому, чтобы принять целочисленное значение, следует воспользоваться функцией int():

a = int (input())

Задание Python 1_1:
Используя операторы input и print, выведите значения целых переменных x=5 и y=3 в следующих форматах:
3+5=?
3 | 5 | 8
Z(5)=F(3)
x=5; y=3;
Ответ: (5;3)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector