Массивы
Большинство программ работает не с отдельными переменными, а с набором переменных. Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры или из файла, при этом изменение количества учащихся в классе не должно требовать модификации исходного кода программы.
Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера, однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).
Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:
Primes = [2, 3, 5, 7, 11, 13]
Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']
В списке Primes — 6 элементов, а именно, Primes[0] == 2, Primes[1] == 3, Primes[2] == 5, Primes[3] == 7, Primes[4] == 11, Primes[5] == 13. Список Rainbow состоит из 7 элементов, каждый из которых является строкой.
Также как и символы строки, элементы списка можно индексировать отрицательными числами с конца, например, Primes[-1] == 13, Primes[-6] == 2.
Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len, например, len(A) == 6.
Рассмотрим несколько способов создания и считывания списков. Прежде всего можно создать пустой список (не содержащий элементов, длины 0), в конец списка можно добавлять элементы при помощи метода append. Например, если программа получает на вход количество элементов в списке n, а потом n элементов списка по одному в отдельной строке, то организовать считывание списка можно так:
A = []
for i in range(int(input()):
A.append(int(input())
В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец.
Для списков целиком определены следующие операции: конкатенация списков (добавление одного списка в конец другого) и повторение списков (умножение списка на число). Например:
A = [1, 2, 3]
B = [4, 5]
C = A + B
D = B * 3
В результате список C будет равен [1, 2, 3, 4, 5], а список D будет равен [4, 5, 4, 5, 4, 5]. Это позволяет по-другому организовать процесс считывания списков: сначала считать размер списка и создать список из нужного числа элементов, затем организовать цикл по переменной i начиная с числа 0 и внутри цикла считывается i-й элемент списка:
A = [0] * int(input())
for i in range(len(A)):
A[i] = int(input())
Вывести элементы списка A можно одной инструкцией print(A), при этом будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке. Приведем два примера, также отличающиеся организацией цикла:
for i in range(len(A)):
print(A[i])
Здесь в цикле меняется индекс элемента i, затем выводится элемент списка с индексом i.
for elem in A:
print(elem, end = ' ')
В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной (например, в цикле for elem in [‘red’, ‘green’, ‘blue’] переменная elem будет последовательно принимать значения ‘red’, ‘green’, ‘blue’.
Python Урок 4. Списки или массивы в Питоне
![]()
На уроке объясняется, как в языке python представлены списки (вместо массивов); объясняется про создание списков на Python.
Часть I: Коллекции: Списки / массивы
Списки (массивы) в Питоне, как и в других языках программирования, — это определенное количество элементов, которые имеют общее имя, и каждый элемент имеет свой индекс — порядковый номер. В отличие от массивов в других языках, у списков нет никаких ограничений на тип переменных, поэтому в них могут храниться объекты разного типа.
L - список целых чисел: L = [25, 755, -40, 57, -41]
В языке Python отсутствует такая структура, как «массив». Для работы с массивами используются списки.
Списки являются упорядоченными последовательностями, которые состоят из различных объектов (значений, данных), заключающихся в квадратные скобки [ ] и отделяющиеся друг от друга с помощью запятой.
В строку нельзя добавить новый символ или удалить существующий, не создав при этом новой строки.
Пример:
Так, например, в Питоне нельзя переприсваивать значение для отдельных символов строки.
Программа выдаст ошибку!
s="aaa"; s[1]="b"; print(s1)
Изменять строку можно только, работая с ней, как с объектом (метод replace , например):
s1="breKeKeKeKs"; s1=s1.replace('Ke','XoXo',2) s1 # breXoXoXoXoKeKs
s1=»breKeKeKeKs»; s1=s1.replace(‘Ke’,’XoXo’,2) s1 # breXoXoXoXoKeKs
Что касается списков, то при выполнении операций другие списки могут не создаваться, при этом изменяется непосредственно оригинал.
Из списков можно удалять и добавлять новые элементы.
Создание списков на Python
-
Создать список можно несколькими способами. Рассмотрим их.
1. Получение списка через присваивание конкретных значений
s = [] # Пустой список
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 = [[0, 0, 0], [1, 0, 1], [1, 1, 0]] # список, состоящий из списков l = ['s', 'p', ['isok'], 2] # список из значений и списка
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 = [[0, 0, 0], [1, 0, 1], [1, 1, 0]] # список, состоящий из списков l = [‘s’, ‘p’, [‘isok’], 2] # список из значений и списка
2. Списки при помощи функции List()
Получаем список при помощи функции List()
empty_list = list() # пустой список l = list ('spisok') # 'spisok' - строка print(l) #['s', 'p', 'i', 's', 'o', 'k'] - результат - список
empty_list = list() # пустой список l = list (‘spisok’) # ‘spisok’ — строка print(l) #[‘s’, ‘p’, ‘i’, ‘s’, ‘o’, ‘k’] — результат — список
3. Создание списка при помощи функции Split()
- Используя функцию split в Питон можно получить из строки список. Рассмотрим пример:
stroka ="Hello, world" # stroka - строка lst=stroka.split(",") # lst - список lst # ['Hello', ' world']
stroka =»Hello, world» # stroka — строка lst=stroka.split(«,») # lst — список lst # [‘Hello’, ‘ world’]
4. Генераторы списков
- В python создать список можно также при помощи генераторов, — это довольно-таки новый метод:
- Пример 1:
Сложение одинаковых списков заменяется умножением:
# список из 10 элементов, заполненный единицами l = [1]*10 # список l = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
# список из 10 элементов, заполненный единицами l = [1]*10 # список l = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
l = [i for i in range(10)] # список l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l = [i for i in range(10)] # список l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l = [i*2 for i in range(10)] # список l = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
l = [i*2 for i in range(10)] # список l = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
l = [i*2 for i in range(10) if i % 2 == 0] # список l = [0, 4, 8, 12, 16]
l = [i*2 for i in range(10) if i % 2 == 0] # список l = [0, 4, 8, 12, 16]
c = [c * 3 for c in 'list'] print (c) # ['lll', 'iii', 'sss', 'ttt']
c = [c * 3 for c in ‘list’] print (c) # [‘lll’, ‘iii’, ‘sss’, ‘ttt’]
Пример:
Заполнить список квадратами чисел от 0 до 9, используя генератор списка.
l = [i*i for i in range(10)]
l = [i*i for i in range(10)]
l = [(i+1)+i for i in range(10)] print(l) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
l = [(i+1)+i for i in range(10)] print(l) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
from random import randint l = [randint(10,80) for x in range(10)] # 10 чисел, сгенерированных случайным образом в диапазоне (10,80)
from random import randint l = [randint(10,80) for x in range(10)] # 10 чисел, сгенерированных случайным образом в диапазоне (10,80)
Задание Python 4_1:
Создайте список целых чисел от -20 до 30 (генерация).
[-20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
Задание Python 4_2:
Создайте список целых чисел от -10 до 10 с шагом 2 (генерация list).
[-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10]
Задание Python 4_3:
Создайте список из 20 пятерок (генерация).
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
Задание Python 4_4:
Создайте список из сумм троек чисел от 0 до 10, используя генератор списка (0 + 1 + 2, 1 + 2 + 3, …).
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33]
Задание Python 4_5 (сложное):
Заполните массив элементами арифметической прогрессии. Её первый элемент, разность и количество элементов нужно ввести с клавиатуры.
* Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d
Простейшие операции над списками
- Списки можно складывать (конкатенировать) с помощью знака «+»:
l = [1, 3] + [4, 23] + [5] # Результат: # l = [1, 3, 4, 23, 5]
l = [1, 3] + [4, 23] + [5] # Результат: # l = [1, 3, 4, 23, 5]
[33, -12, 'may'] + [21, 48.5, 33] # [33, -12, 'may', 21, 48.5, 33]
[33, -12, ‘may’] + [21, 48.5, 33] # [33, -12, ‘may’, 21, 48.5, 33]
a=[33, -12, 'may'] b=[21, 48.5, 33] print(a+b)# [33, -12, 'may', 21, 48.5, 33]
a=[33, -12, ‘may’] b=[21, 48.5, 33] print(a+b)# [33, -12, ‘may’, 21, 48.5, 33]
[[0,0],[0,1],[1,1]] * 2 # [[0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1]]
[[0,0],[0,1],[1,1]] * 2 # [[0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1]]
Пример:
Для списков операция переприсваивания значения отдельного элемента списка разрешена!:
a=[3, 2, 1] a[1]=0; print(a) # [3, 0, 1]
a=[3, 2, 1] a[1]=0; print(a) # [3, 0, 1]
Задание 4_6:
В строке записана сумма натуральных чисел: ‘1+25+3’. Вычислите это выражение. Работать со строкой, как со списком.
s=input('введите строку') l=list(str(s));
s=input(‘введите строку’) l=list(str(s));
Как узнать длину списка?
В питоне не нужно явно указывать размер списка или вручную выделять на него память. Длину списка можно узнать с помощью встроенной функции len :
names = ['Ivan', 'Marie', 'Peter', 'Max'] print (len(names)) # 4
names = [‘Ivan’, ‘Marie’, ‘Peter’, ‘Max’] print (len(names)) # 4
Ввод списка (массива) в языке Питон
L=[] L = [ int(input()) for i in range(5) ] # при вводе 1 2 3 4 5 print (L) # вывод: 1 2 3 4 5
L=[] L = [ int(input()) for i in range(5) ] # при вводе 1 2 3 4 5 print (L) # вывод: 1 2 3 4 5
Функция int здесь используется для того, чтобы строка, введенная пользователем, преобразовывалась в целые числа.
# вывод целого списка (массива) print (L) # поэлементный вывод списка (массива) for i in range(5): print ( L[i], end = " " )
# вывод целого списка (массива) print (L) # поэлементный вывод списка (массива) for i in range(5): print ( L[i], end = » » )
Задание Python 4_7:
Необходимо задать список (массив) из шести элементов; заполнить его вводимыми значениями и вывести элементы на экран. Использовать два цикла: первый — для ввода элементов, второй — для вывода.
Замечание: Для вывода через «,» используйте следующий синтаксис:
print ( L[i], end = ", " )
введите элементы массива: 3.0 0.8 0.56 4.3 23.8 0.7 Массив = 3, 0.8, 0.56, 4.3, 23.8, 0.7
Задание Python 4_8:
Заполните список случайными числами в диапазоне 20..100 и подсчитайте отдельно число чётных и нечётных элементов. Использовать цикл.
Задание Python 4_9: Найдите минимальный элемент списка. Выведите элемент и его индекс. Список из 10 элементов инициализируйте случайными числами. Для перебора элементов списка использовать цикл.
9 5 4 22 23 7 3 16 16 8 Минимальный элемент списка L[7]=3
9 5 4 22 23 7 3 16 16 8 Минимальный элемент списка L[7]=3
Часть II: Другие операции над списками при помощи функций и методов
a=[1,7,3,88,33] a.sort() #[1,3,7,33,88] - сортировка a.reverse() #[88,33,7,3,1] - обратная сортировка a.index(7) #2 - индекс элемента a.clear() # - очистка списка len(a) # - длина списка sum(a) # - суммирование элементов
a=[1,7,3,88,33] a.sort() #[1,3,7,33,88] — сортировка a.reverse() #[88,33,7,3,1] — обратная сортировка a.index(7) #2 — индекс элемента a.clear() # — очистка списка len(a) # — длина списка sum(a) # — суммирование элементов
lst=['11','22','33'] lst="-".join(lst)# '11-22-33'
str="1-2-3-4" s1=str.split("-") # ['1','2','3','4']
Задание 4_10:
Дан список из 5 различных элементов. Используя функции (не использовать цикл), необходимо найти и вывести:
- минимальный и максимальный элементы списка;
- сумму и среднее арифметическое;
- второй минимальный элемент (второй по минимальности).
Начало программы:
lst=[4,5,2,3,4]
Добавление и удаление элементов списка
- Добавление элемента, append() :
>>> a=[] >>> a.append('444') # ['444']
Пример:
Поиск нечетных элементов в списке mas и копирование их в список B.
mas = [1,5,2,7,6,9] B = [] for x in mas: if x % 2 != 0: B.append(x) # [1, 5, 7, 9]
mas = [1,5,2,7,6,9] B = [] for x in mas: if x % 2 != 0: B.append(x) # [1, 5, 7, 9]
mas = [1,5,2,7,6,9] B = [x for x in mas if x % 2 != 0] # [1, 5, 7, 9]
mas = [1,5,2,7,6,9] B = [x for x in mas if x % 2 != 0] # [1, 5, 7, 9]
names = ['Ivan', 'Marie', 'Peter', 'Max'] names.extend(['Kat', 'Mike']) print(names) #['Ivan', 'Marie', 'Peter', 'Max', 'Kat', 'Mike']
names = [‘Ivan’, ‘Marie’, ‘Peter’, ‘Max’] names.extend([‘Kat’, ‘Mike’]) print(names) #[‘Ivan’, ‘Marie’, ‘Peter’, ‘Max’, ‘Kat’, ‘Mike’]
names += ['Nick'] print(names) #['Ivan', 'Marie', 'Peter', 'Max', 'Kat', 'Mike', 'Nick']
names += [‘Nick’] print(names) #[‘Ivan’, ‘Marie’, ‘Peter’, ‘Max’, ‘Kat’, ‘Mike’, ‘Nick’]
a=['asd','444','555','77'] a.remove('444') # ['asd', '555', '77']
a=[‘asd’,’444′,’555′,’77’] a.remove(‘444’) # [‘asd’, ‘555’, ’77’]
a=['asd','444','555','77'] del a[0] # ['444', '555', '77']
a=[‘asd’,’444′,’555′,’77’] del a[0] # [‘444’, ‘555’, ’77’]
При копировании списков, т.е. присваивании одного списка другому, изменение первого списка влечет за собой изменение второго списка. Так как эти объекты связаны одной областью памяти (ссылка на список).
mas1 =[1, 2, 3] mas2 = mas1 # создается ссылка на список mas1[0] = 4 print(mas2) #[4, 2, 3]
mas1 =[1, 2, 3] mas2 = mas1 # создается ссылка на список mas1[0] = 4 print(mas2) #[4, 2, 3]
Чтобы создать не ссылку на список, а копию списка можно использовать либо срез либо функцию copy.
mas2 = mas1[:] # используем срез
mas2 = mas1[:] # используем срез
import copy mas1 =[1,2,3] mas2 = copy.copy(mas1)
import copy mas1 =[1,2,3] mas2 = copy.copy(mas1)
Задание 4_11: Проверить, является ли заданное слово палиндромом.
Примечание:
- Пример палиндрома: казак, ABBA
- Использовать функции.
- Поскольку при присваивании одного списка другому, изменение первого ведет к аналогичному изменению второго списка, то необходимо использовать копию ( copy ).
Начало программы:
import copy stroka=input('введите слово') lst=list (stroka) # конвертируем строку в список
import copy stroka=input(‘введите слово’) lst=list (stroka) # конвертируем строку в список
Ключевое слово «in»
Проверить, содержит ли список некоторый объект, можно с помощью ключевого слова « in «:
names = ['Ivan', 'Marie', 'Peter', 'Inna'] print('Marie' in names) # true
names = [‘Ivan’, ‘Marie’, ‘Peter’, ‘Inna’] print(‘Marie’ in names) # true
Генерация случайных чисел при работе со списками
Вспомним, как работать с модулем random .
Встроенный модуль Питона random позволяет генерировать псевдослучайные числа.
Модуль random включает в себя функцию random, которая возвращает действительное число в диапазоне от 0.0 до 1.0. Каждый раз при вызове функции возвращается число из длинного ряда.
Пример:
import random for i in range(10): x = random.random() print (x) # 0.5185207383774904 0.78283351055836 0.23601341583293534 .
import random for i in range(10): x = random.random() print (x) # 0.5185207383774904 0.78283351055836 0.23601341583293534 .
Чтобы получить случайное число между 0.0 и верхней границей high, просто умножьте x на high.
Например, от 0.0 до 15.0:
import random for i in range(10): x = random.random() print (x * 15) # 11.075319687990554 7.152253113207329 .
import random for i in range(10): x = random.random() print (x * 15) # 11.075319687990554 7.152253113207329 .
Для того, чтобы получить псевдослучайное целое число:
import random random.randint(начало>,конец>)
import random random.randint(,)
Для того, чтобы получить псевдослучайное вещественное число:
import random random.uniform(начало>,конец>)
import random random.uniform(,)
from random import randint l = [randint(10,80) for x in range(10)]
from random import randint l = [randint(10,80) for x in range(10)]
Задание Python 4_12:
Найдите в массиве все простые числа и скопируйте их в новый массив.
Задание Python 4_13:
Решить задачу поиска среднего значения в списке из N элементов (вводимых в виде строк). Использовать метод добавления элементов списка и суммирования элементов
Цикл for при работе со списками
mylist=[1,2,3,4,5] for item in mylist: item = 0 # mylist не меняется! print(mylist) # [1, 2, 3, 4, 5] n=5 for i in range(n): mylist[i] = 0 # mylist меняется print(mylist) # [0, 0, 0, 0, 0]
mylist=[1,2,3,4,5] for item in mylist: item = 0 # mylist не меняется! print(mylist) # [1, 2, 3, 4, 5] n=5 for i in range(n): mylist[i] = 0 # mylist меняется print(mylist) # [0, 0, 0, 0, 0]
В списке чисел проверить, все ли элементы являются уникальными, т.е. каждое число встречается только один раз
Комментарии к программе:
Решать данную задачу на языке Python мы будем «классическим» вариантом — брать по очереди элементы списка и сравнивать каждый элемент со стоящими за ним. При первом же совпадении элементов делается вывод, что в списке есть одинаковые элементы, и работа программы завершается.
Для выхода из цикла будем использовать метод quit()
import random m = 6 mass=[] k=0 j=0 for i in range(m): mass.append(random.randint(-10,10)) print(mass[i]) # -10 0 -8 0 -10 1 for i in mass: k=k+1 for j in range(k,m): # j = 0 -8 0 -10 -> quit if (i==mass[j]): # -10==0 -10==-8 -10==0 -10==-10 -> quit print('yes') quit()
import random m = 6 mass=[] k=0 j=0 for i in range(m): mass.append(random.randint(-10,10)) print(mass[i]) # -10 0 -8 0 -10 1 for i in mass: k=k+1 for j in range(k,m): # j = 0 -8 0 -10 -> quit if (i==mass[j]): # -10==0 -10==-8 -10==0 -10==-10 -> quit print(‘yes’) quit()

Задание Python 4_14: Определить индексы элементов массива (списка), значения которых принадлежат заданному диапазону (т.е. не меньше заданного минимума и не больше заданного максимума)
* в результате получили индексы элементов, значения которых находятся в диапазоне [5,15]
Алгоритм:
- Заполнить список (массив) случайными числами
- Запросить для ввода минимум и максимум диапазона
- Найти индексы элементов, значения которых входят в диапазон. Добавлять найденные индексы к новому списку
- Вывести общее число найденных индексов (функция len()) и отдельно все индексы
Задание Python 4_15: Дополнить предыдущую программу следующим:
После того, как элемент с подходящим значением добавлен в новый список – удалять его из исходного списка
* Использовать цикл while , функцию len()
Ввод и вывод данных
Мы уже встречались с функцией print() . Она отвечает за вывод данных, по-умолчанию на экран. Если код содержится в файле, то без нее не обойтись. В интерактивном режиме в ряде случаев можно обойтись без нее.
Ввод данных в программу и их вывод важны в программировании. Без ввода программы делали бы одно и то же, исключая случаи, когда в них самих генерируются случайные значения. Вывод позволяет увидеть, использовать, передать дальше результат работы программы.
Обычно требуется, чтобы программа обрабатывала какой-то диапазон различных входных данных, которые поступают в нее из внешних источников. В качестве последних могут выступать файлы, клавиатура, сеть, выходные данные из другой программы. В свою очередь вывод данных, например, возможен в файл, по сети, в базу данных, на принтер. Однако нередко информацию просто выводят на экран монитора.
Можно сказать, что программа – это открытая система, которая обменивается чем-либо с внешней для нее средой. Если живой организм в основном обменивается веществом и энергией, то программа – данными, информацией.
Вывод данных. Функция print()
Что такое функция в программировании, узнаем позже. Пока будем считать, что print() – это такая команда языка Python, которая выводит то, что в ее скобках на экран.
>>> print(1032) 1032 >>> print(2.34) 2.34 >>> print("Hello") Hello
В скобках могут быть любые типы данных. Кроме того, количество данных может быть различным:
>>> print("a:", 1) a: 1 >>> one = 1 >>> two = 2 >>> three = 3 >>> print(one, two, three) 1 2 3
Можно передавать в функцию print() как непосредственно литералы (в данном случае «a:» и 1), так и переменные, вместо которых будут выведены их значения. Аргументы функции (то, что в скобках), разделяются между собой запятыми. В выводе вместо запятых значения разделены пробелом.
Если в скобках стоит выражение, то сначала оно выполняется, после чего print() уже выводит результат данного выражения:
>>> print("hello" + " " + "world") hello world >>> print(10 - 2.5/2) 8.75
В print() предусмотрены дополнительные параметры. Например, через параметр sep можно указать отличный от пробела разделитель строк:
>>> print("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", sep="-") Mon-Tue-Wed-Thu-Fri-Sat-Sun >>> print(1, 2, 3, sep="//") 1//2//3
Параметр end позволяет указывать, что делать, после вывода строки. По-умолчанию происходит переход на новую строку. Однако это действие можно отменить, указав любой другой символ или строку:
>>> print(10, end="") 10>>>
Обычно end используется не в интерактивном режиме, а в скриптах, когда несколько выводов подряд надо разделить не переходом на новую строку, а, скажем, запятыми. Сам переход на новую строку обозначается символом ‘\n’. Если присвоить это значение параметру end , то никаких изменений в работе функции print вы не увидите, так как это значение и так присвоено по-умолчанию:
>>> print(10, end='\n') 10 >>>
Однако, если надо отступить на одну дополнительную строку после вывода, то можно сделать так:
>>> print(10, end='\n\n') 10 >>>
В функцию print нередко передаются так называемые форматированные строки, хотя по смыслу их правильнее называть строки-шаблоны. Никакого отношения к самому print они не имеют. Когда такая строка находится в скобках print() , интерпретатор сначала согласно заданному в ней формату преобразует ее к обычной строке, после чего передает результат в print() .
Форматирование может выполняться в так называемом старом стиле или с помощью строкового метода format . Старый стиль также называют Си-стилем, так как он схож с тем, как происходит вывод на экран в языке C. Рассмотрим пример:
>>> pupil = "Ben" >>> old = 16 >>> grade = 9.2 >>> print("It's %s, %d. Level: %f" % (pupil, old, grade)) It's Ben, 16. Level: 9.200000
Здесь вместо трех комбинаций символов %s , %d , %f подставляются значения переменных pupil , old , grade . Буквы s , d , f обозначают типы данных – строку, целое число, вещественное число. Если бы требовалось подставить три строки, то во всех случаях использовалось бы сочетание %s .
Хотя в качестве значения переменной grade было указано число 9.2, на экран оно вывелось с дополнительными нулями. Чтобы указать, сколько требуется знаков после запятой, надо перед f поставить точку, после нее указать желаемое количество знаков в дробной части:
>>> print("It's %s, %d. Level: %.1f" % (pupil, old, grade)) It's Ben, 16. Level: 9.2
Теперь посмотрим на метод format() :
>>> print("This is a . It's .".format("ball", "red")) This is a ball. It's red. >>> >>> print("This is a . It's .".format("white", "cat")) This is a cat. It's white. >>> >>> print("This is a . It's .".format("a", "number", 1)) This is a 1. It's a number.
В строке в фигурных скобках указаны номера данных, которые будут сюда подставлены. Далее к строке применяется метод format() . В его скобках указываются сами данные (можно использовать переменные). На нулевое место подставится первый аргумент метода format() , на место с номером 1 – второй и т. д.
На самом деле возможности метода format существенно шире, и для их изучения понадобился бы отдельный урок. Нам пока будет достаточно этого.
В новых релизах Питона появился третий способ создания форматированных строк – f-строки. Перед их открывающей кавычкой прописывается буква f . В самой строке внутри фигурных скобок записываются выражения на Python, которые исполняются, когда интерпретатор преобразует строку-шаблон в обычную.
>>> a = 10 >>> b = 1.33 >>> c = 'Box' >>> print(f'qty - , goods - ') qty - 10, goods - Box >>> print(f'price - ') price - 1.5
В примере число 5 после переменной a обозначает количество знакомест, отводимых под вывод значения переменной. В выражении b + 0.2:.1f сначала выполняется сложение, после этого значение округляется до одного знака после запятой.
Ввод данных. Функция input()
За ввод в программу данных с клавиатуры в Python отвечает функция input . Когда вызывается эта функция, программа останавливает свое выполнение и ждет, когда пользователь введет текст. После этого, когда он нажмет Enter , функция input() заберет введенный текст и передаст его программе, которая уже будет обрабатывать его согласно своим алгоритмам.
Если в интерактивном режиме ввести команду input() , то ничего интересного вы не увидите. Компьютер будет ждать, когда вы что-нибудь введете и нажмете Enter или просто нажмете Enter . Если вы что-то ввели, это сразу же отобразиться на экране:
>>> input() Yes! 'Yes!'
Функция input() передает введенные данные в программу. Их можно присвоить переменной. В этом случае интерпретатор не выводит строку сразу же:
>>> answer = input() No, it is not.
В данном случае строка сохраняется в переменной answer , и при желании мы можем вывести ее значение на экран:
>>> answer 'No, it is not.'
При использовании функции print() кавычки в выводе опускаются:
>>> print(answer) No, it is not.
Куда интересней использовать функцию input() в скриптах – файлах с кодом. Рассмотрим такую программу:
name_user = input() city_user = input() print(f'Вас зовут . Ваш город ')

При запуске программы, компьютер ждет, когда будет введена сначала одна строка, потом вторая. Они будут присвоены переменным name_user и city_user . После этого значения этих переменных выводятся на экран с помощью форматированного вывода.
Вышеприведенный скрипт далек от совершенства. Откуда пользователю знать, что хочет от него программа? Чтобы не вводить человека в замешательство, для функции input предусмотрен специальный параметр-приглашение. Это приглашение выводится на экран при вызове input() . Усовершенствованная программа может выглядеть так:
name_user = input('Ваше имя: ') city_user = input('Ваш город: ') print(f'Вас зовут . Ваш город ')

Обратите внимание, что в программу поступает строка. Даже если ввести число, функция input() все равно вернет его строковое представление. Но что делать, если надо получить число? Ответ: использовать функции преобразования типов.

В данном случае с помощью функций int() и float() строковые значения переменных qty и price преобразуются соответственно в целое число и вещественное число. После этого новые численные значения присваиваются тем же переменным.
Программный код можно сократить, если преобразование типов выполнить в тех же строках кода, где вызывается функция input() :
qty = int(input("Сколько апельсинов? ")) price = float(input("Цена одного? ")) summa = qty * price print("Заплатите", summa, "руб.")
Сначала выполняется функция input() . Она возвращает строку, которую функция int() или float() сразу преобразует в число. Только после этого происходит присваивание переменной, то есть она сразу получает численное значение.
Практическая работа
- Напишите программу (файл user.py ), которая запрашивала бы у пользователя:
— его имя (например, «What is your name?»)
— возраст («How old are you?»)
— место жительства («Where are you live?»)
После этого выводила бы три строки:
«This is имя »
«It is возраст »
«(S)he live in место_жительства »
Вместо имя , возраст , место_жительства должны быть данные, введенные пользователем. Примечание: можно писать фразы на русском языке, но если вы планируете стать профессиональным программистом, привыкайте к английскому. - Напишите программу (файл arithmetic.py ), которая предлагала бы пользователю решить пример 4 * 100 — 54. Потом выводила бы на экран правильный ответ и ответ пользователя. Подумайте, нужно ли здесь преобразовывать строку в число.
- Запросите у пользователя четыре числа. Отдельно сложите первые два и отдельно вторые два. Разделите первую сумму на вторую. Выведите результат на экран так, чтобы ответ содержал две цифры после запятой.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
Как ввести список с клавиатуры?
Есть задание: 1.Нужно ввести два списка с клавиатуры 2.Нужно перемножить. Вот пример: Нужно ввести такие списки с клавиатуры:
l1 = [a, 3, 4] l2 = [d, c, 5]
И при умножении должно выйти это
l3 = [ad, ccc, 20]
Как перемножить их я разобрался но как ввести и числа и буквы с клавиатуры не знаю.
Отслеживать
26.2k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
задан 26 дек 2019 в 15:52
Данил Павленко Данил Павленко
19 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
здесь не очень любят вопросы, автор которых не сделал даже простейших вещей, чтобы найти ответ на элементарный вопрос. Ввод с клавиатуры осуществляется функцией input().
26 дек 2019 в 16:09
Google -> python input list — самые первые ссылки, куча вариантов
26 дек 2019 в 16:18
там есть только ввод чисел или строк по отдельности
26 дек 2019 в 16:23
list2 = [] N = int(input(‘Введите размер первого списка с клавиатуры:’)) for x in range(N): x = input(‘Вводите данные:’) try: list1.append(int(x)) except ValueError: list1.append(x) если кому то нужно то получился такой код
26 дек 2019 в 16:36
Это вам кажется, что по отдельности. На самом деле там везде про ввод строк. Даже там, где вы думаете, что это про ввод чисел.
26 дек 2019 в 17:09
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
a = input().split() b = input().split() c = [a[i]+b[i] for i in range(min(len(a), len(b)))] print(c)
По поводу преобразования ответ в соседнем вопросе, а тебе даже проверка на отрицательные числа не нужна.
Отслеживать
ответ дан 26 дек 2019 в 16:39
123k 24 24 золотых знака 126 126 серебряных знаков 303 303 бронзовых знака
Дак у него явно указанно, что 3 и c должно стать ccc . А у вас получается 3c . =) Либо тс, сам не понял, что написал.
26 дек 2019 в 17:01
@And, это я не понял. Поэтому довабил ссылку на ответ, где сказано как скастить список. А про то, что делать с двумя списками он в вопросе написал, что уже умеет, так что нет смысла второй раз изобретать.
26 дек 2019 в 18:11
Ну ты-же,, должен понимать, что код может быть разный, и для его «Я умею», твой код может не подойти. Он нигде не показал, как он умеет и что он там делает,.
26 дек 2019 в 18:13
@And, ну сделав [int(x) if x.isdigit() else x for x in input().split()] он получит интересующие его списки, а дальше он умеет 🙂