Числовые последовательности для цикла Python
Если вам нужно перебрать последовательность чисел, в этом вам поможет встроенная функция range() . Эта функция генерирует арифметические прогрессии:
>>> for i in range(5): . print(i) . 0 1 2 3 4 >>>
В примере выше, указанный аргумент range() число 5 — конечная точка, никогда не является частью сгенерированной последовательности. Например, range(10) генерирует 10 значений, для элементов последовательности длиной 10, проще для понимания от 0 до 9. В классе range() можно менять диапазон, указывая начальное значение, отличное от 0 или указать другое приращение последовательности (задать «шаг»), даже отрицательное:
range(5, 10) 5, 6, 7, 8, 9 range(0, 10, 3) 0, 3, 6, 9 range(-10, -100, -30) -10, -40, -70
Чтобы перебрать индексы последовательности, вы можете комбинировать range() ]f-range и len() следующим образом:
>>> a = ['Mary', 'had', 'a', 'little', 'lamb'] >>> for i in range(len(a)): . print(i, a[i]) . 0 Mary 1 had 2 a 3 little 4 lamb >>>
В большинстве таких случаев удобно использовать функцию enumerate() .
Странная вещь происходит, если вы просто распечатаете range(10) :
>>> print(range(10)) range(0, 10) >>>
Во многих отношениях возвращаемый объект range() ведет себя так, как будто это список, но на самом деле range() не создает список. Это объект, который возвращает элементы желаемой последовательности, только тогда, когда вы выполняете итерацию, тем самым экономя оперативную память.
Мы говорим, что такой объект является итеративным, то есть пригодным для функций или конструкции, которые ожидают что-то, из чего они могут получать последовательные элементы до тех пор, пока они не закончатся. Выше мы видели, что оператор for является такой конструкцией, а примером функции принимающей итеративный объект, является sum() :
>>> sum(range(4)) # 0 + 1 + 2 + 3 6 >>>
Позже мы увидим больше функций, которые возвращают итерируемые значения и принимают их как аргументы. И наконец, может быть, вам интересно, как получить список list() из диапазона range ?
>>> list(range(4)) [0, 1, 2, 3] >>>
Примеры использования:
>>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(range(0, 30, 5)) [0, 5, 10, 15, 20, 25] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(0, -10, -1)) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> list(range(0)) [] >>> list(range(1, 0)) []
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Проверка условий, конструкция if/elif/else
- Конструкция if/else в одну строку
- Имитация оператора switch/case
- while, цикл по условию
- Цикл for
- Числовые последовательности для цикла Python
- Практическое применение for/in/else циклов
- Инструкции break, continue и блок else в циклах Python
- Оператор pass
- Конструкция match/case, сопоставление с образцом
Создание списка чисел в определенном диапазоне в Python
Часто при программировании на Python возникает необходимость создать список чисел, которые находятся в определенном диапазоне. Возьмем для примера ситуацию, когда требуется создать список, содержащий числа от 5 до 10. Что нужно сделать, чтобы получить такой список?
[5, 6, 7, 8, 9, 10]
Для решения данной задачи в Python есть несколько способов.
Использование функции range()
Самый простой и популярный способ — использование встроенной функции range() . Эта функция генерирует последовательность чисел в заданном диапазоне.
list(range(5, 11))
В данном случае, функция range() генерирует числа от 5 до 10 включительно. Функция list() используется для преобразования этих чисел в список.
Использование генератора списка
Второй способ — использование генератора списка. Генераторы списков — это удобный инструмент для создания списков в Python.
Ниже приведен пример создания списка чисел от 5 до 10 с использованием генератора списка:
[i for i in range(5, 11)]
В этом примере используется такой же вызов функции range() , как и в предыдущем примере, но вместо функции list() используется генератор списка.
Таким образом, Python предлагает несколько простых и эффективных способов создания списка чисел в заданном диапазоне.
Пользовательский ввод чисел в строку
Функция input() возвращает все в виде строки, поэтому нужно выполнить явную конвертацию, чтобы получить целое число. Для этого пригодится функция int() .
# вывод суммы двух чисел, введенных пользователем
num_1 = int(input("Введите первое число: "))
num_2 = int(input("Введите второе число: "))
print("Тип num_1:", type(num_1))
print("Тип num_2:", type(num_2))
result = num_1 + num_2
print("Сумма введенных чисел:", result)int(string) конвертирует переданную строку в целое число.
Ввода числа float
По аналогии можно использовать функцию float() .
float_1 = float(input("Введите число: "))
print("Тип float_1:", type(float_1))
result = float_1 ** 2
print("Число в квадрате:", result)Введите число: 1.8 Тип float_1: Число в квадрате: 3.24Ввод чисел в строку через пробел
Но что произойдет, если вы не знаете количество элементов ввода?
Предположим, что от пользователя нужно получить список чисел и вернуть их сумму. При этом вы не знаете количество элементов в этом списке. Как же запросить ввод для него?
Для этого можно использовать split и функции map . Метод split() делит введенную строку на список подстрок. После этого map() выполняет функцию int() для каждого элемента списка.
entered_list = input("Введите список чисел, разделенных пробелом: ").split()
print("Введенный список:", entered_list)
num_list = list(map(int, entered_list))
print("Список чисел: ", num_list)
print("Сумма списка:", sum(num_list))Введите список чисел, разделенных пробелом: 1 34 4 6548 Введенный список: ['1', '34', '4', '6548'] Список чисел: [1, 34, 4, 6548] Сумма списка: 6587
- input() возвращает список, содержащий числа, разделенные запятыми.
- split() возвращает список строк, разделенных пробелами.
- map() выполняет операцию int() для всех элементов списка и возвращает объект map .
- list() конвертирует объект map снова в список.
Есть альтернативный способ получить список:
entered_list = input("Введите список чисел, разделенных пробелом: ").split()
num_list = [int(i) for i in entered_list]
print("Список чисел: ", num_list)Обработка ошибок при пользовательском вводе
Часто при конвертации типов возникает исключение ValueError .
Это происходит в тех случаях, когда введенные пользователем данные не могут быть конвертированы в конкретный тип.
Например, пользователь вводит случайную строку в качестве возраста.
num = int(input("Введите возраст: "))Функция int() ожидает целочисленное значение, обернутое в строку. Любое другое значение приводит к ошибке. Вот что будет, если, попробовать ввести «Двадцать»:
Введите возраст: Двадцать --------------------------------------------------------- ValueError Traceback (most recent call last) in ----> 1 num_1 = int(input('Введите возраст: ')) ValueError: invalid literal for int() with base 10: 'Двадцать'Чтобы убедиться, что пользователь вводит только подходящую информацию, нужно обработать массу подобных ошибок. Для этого будем использовать перехват исключений.
try:
num = int(input("Введите число: "))
print("Все верно. Число:", num)
except ValueError:
print("Это не число.")Посмотрим, как ввод «Двадцать» сработает теперь:
Введите число: Двадцать Это не число.В этом примере если пользователь вводит нечисловое значение, то возникает исключение. Однако оно перехватывается инструкцией except , которая в ответ выводит: «Это не число». Благодаря использованию конструкции try-except программа не прекратит работать при некорректном вводе.
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.
Мои контакты: Почта
Python Q https://yandex.ru/q/loves/python Online
Python Q CEO Pythonru admin@pythonru.com https://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=g CEO Pythonru Python Александр Редактор https://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/ PythonRu.com admin@pythonru.com Alex Zabrodin 2018-10-26 Online Python, Programming, HTML, CSS, JavaScript
Числа: целые, вещественные, комплексные
Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.
Целые числа (int)
Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:
| x + y | Сложение |
| x - y | Вычитание |
| x * y | Умножение |
| x / y | Деление |
| x // y | Получение целой части от деления |
| x % y | Остаток от деления |
| -x | Смена знака числа |
| abs(x) | Модуль числа |
| divmod(x, y) | Пара (x // y, x % y) |
| x ** y | Возведение в степень |
| pow(x, y[, z]) | x y по модулю (если модуль задан) |
Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).
Над целыми числами также можно производить битовые операции
| x | y | Побитовое или |
| x ^ y | Побитовое исключающее или |
| x & y | Побитовое и |
| x | Битовый сдвиг влево |
| x >> y | Битовый сдвиг вправо |
| ~x | Инверсия битов |
Дополнительные методы
int.bit_length() - количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.
int.to_bytes(length, byteorder, *, signed=False) - возвращает строку байтов, представляющих это число.
int.from_bytes(bytes, byteorder, *, signed=False) - возвращает число из данной строки байтов.
Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:
- int([object], [основание системы счисления]) - преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
- bin(x) - преобразование целого числа в двоичную строку.
- hex(х) - преобразование целого числа в шестнадцатеричную строку.
- oct(х) - преобразование целого числа в восьмеричную строку.
Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:
Для высокой точности используют другие объекты (например Decimal и Fraction)).
Также вещественные числа не поддерживают длинную арифметику:
Простенькие примеры работы с числами:
float.as_integer_ratio() - пара целых чисел, чьё отношение равно этому числу.
float.is_integer() - является ли значение целым числом.
float.hex() - переводит float в hex (шестнадцатеричную систему счисления).
classmethod float.fromhex(s) - float из шестнадцатеричной строки.
Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.
Модуль math предоставляет более сложные математические функции.
В Python встроены также и комплексные числа:
: complex() Для работы с комплексными числами используется также модуль cmath.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте


