Как в python сделать ввод нужного числа?
Как сделать что бы в python, пользователь вводил то число которое нужно? Например: нужно что бы пользователь ввёл (1,2,3,4, или 5), что то одно. Если вводить больше или меньше, то его опять просят ввести (1,2,3,4 или 5)
Отслеживать
задан 6 июн 2021 в 10:34
Dark Knight Dark Knight
1 3 3 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
while True: i = int(input()) if 0 < i < 6: print("OK") break
Отслеживать
ответ дан 6 июн 2021 в 10:42
692 3 3 серебряных знака 10 10 бронзовых знаков
ent = int(input("Enter num: \n")) while ent != range(1,5): if ent < 1: print("Введите значение больше") ent = int(input("Enter num: \n")) elif ent >5: print("Введите значение меньше") ent = int(input("Enter num: \n")) else: print("Значение входит в требуемый диапазон") break
Отслеживать
ответ дан 6 июн 2021 в 10:55
Slayer Leon Slayer Leon
130 7 7 бронзовых знаков
ent != range(1,5) замените на True .Ввод числа поставьте в начало цикла, а остальные input уберите
6 июн 2021 в 11:11
ent - число, оно никогда не будет равно range(1,5)
6 июн 2021 в 11:23
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Ввод данных в Python
Python — универсальный язык программирования для веб-приложений, игр, машинного обучения и многих других областей. Он популярен во всем мире. В этой статье мы расскажем, как вводить данные в Python и какие инструменты использовать. Разберемся как это работает на примере реального кода.

Даниил Фам
Исполнительный директор
3 апреля 2023

Ввод данных
Ввод это когда вы говорите программе сколько яблок берёт Петя, или скольки равен X, или же какой квадратик из трёх мы выберем.
В Python для этого существует одноименное слово, только на английском.
input() — команда для ввода.
Для ее запуска не нужно танцевать с бубном, что-то докачивать и устанавливать. Установленного питона и запущенной среды разработки будет достаточно.
[code_lib_fix]
phrase = input("Мой первый ввод будет здесь: ")
Получаем разные типы данных
Поскольку изначально, всё что бы мы не ввели будет являться строкой, то стоит знать, а как получить и другие типы данных.
Почему результатом input() является строка?
Если вкратце: программа хочет себя обезопасить от фатальных ошибок. Так как вы может быть скажете, что хотите ввести число, а пользователь введёт букву “Н” - и вот какая это цифра❓ Поэтому ввод лучше сделать строкой, так как там можно и цифры и строки. И тогда условный ввод “Dominator777” или “Семь Над цать” не поломает нам программу.
Число (int, float)
[code_lib_fix]
celoeChislo = int(input("Введи число: ")) # целое число (например 10, 0, -33)
Поскольку целое число как тип данных это int(сокр. Integer), то механизм здесь в том, что мы переводим полученный ввод в числовой тип данных.
[code_lib_fix]
neCeloeChislo = float(input("Введи число: ")) # дробное число (например 10.3, 0.0, -33.994)
Аналогичная история с дробными числами.
Почему дробное число называется float.
Мы в разговорном языке называем такие числа дробными, но вообще в математике они называются числа с плавающей точкой. Слово “плавающий” здесь и будет переводиться как floating → сокр. float
Список (list)
Предположим, что тебе надо ввести набор слов, но не в одну строку, а чтобы каждое слово было отдельным элементом. В качестве решения можно воспользоваться методом строки .split() .
[code_lib_fix]
naborSlov = input("Введи фразу: ").split() # полученную фразу раскалываем по пробелу (.split() по умолчанию разделяет по пробелам) # То есть при таком вводе: "Питон это круто и несложно", # Мы получим это: ['Питон', 'это', 'круто', 'и', 'несложно']
[code_lib_fix]
naborSlov = input("Введи фразу: ").split(", ") # полученную фразу раскалываем по запятым и убирает пробел после запятой # То есть при таком вводе: "Кирилл, Данил, Антон", # Мы получим это: ['Кирилл', ' Данил', ' Антон']
Булевый тип (bool)
Булевый тип имеет только одно из двух состояний:
Сперва важно понять одну вещь при работе с булевым типом данных. Все что не пустота, то правда:
- Преобразованная пустая строка (””) будет ложью
- Остальное будет правдой, даже пробел (” “)
[code_lib_fix]
isEnter = input("Всё или ничего: ") if isEnter: print("Пользователь что-то ввёл!")
Такой код выведет "Пользователь что-то ввёл!" только если было хоть что-то введено пользователем.
? На самом деле, переводить можно в любой нужный вам тип данных, но показанные выше наиболее применимые.
Ввод в несколько переменных
Что если мы хотим спросить несколько переменных сразу? Например, чтобы не писать так:
[code_lib_fix]
x = input("x: ") y = input("y: ") z = input("z: ")
Можно написать так:
[code_lib_fix]
x, y, z = input("x: "), input("y: "), input("z: ")
Но можно пойти дальше, и разбить одно значение сразу на несколько:
[code_lib_fix]
word1, word2, word3 = input("Введи три слова: ").split() # при вводе "Питон это круто" print(f"w1=, w2=, w3=") # получим w1=Питон, w2=это, w3=круто
Убираем символы слева/справа строки
Представим что в ваш input() пользователь написал: “ Подкрадули “ И на выходе мы и получим такую строку, со всеми её пробелами. Починить этот потенциальный баг нам поможет метод .strip() — убирает символы справа и слева строки.
[code_lib_fix]
clearedPhrase = input("Как тебя зовут, путник? > ").strip() # Пользователь ввел: “ Подкрадули “ # Мы получим: “Подкрадули“
Да, по умолчанию убираются пробелы справа и слева. Также мы можем убирать несколько символов сразу. Как? Указать их поштучно в кавычках.
[code_lib_fix]
clearedPhrase = input("Как тебя зовут, путник? > ").strip("-+! ") # p.s. не забываем перечислить и пробел! # Пользователь ввел: “ -+Подкрадули?! “ # Мы получим: “Подкрадули?“
Также мы можем убирать с правой части при помощи .rstrip() ; и с левой при помощи .lstrip() . Круто это всё, но как это применить? Как супер удобный способ получить положительное число в случае необходимости.
[code_lib_fix]
positive = input("Ты мне число, а я тебе модуль: ") # если ввели ----321 print(positive.lstrip("-")) # то мы выведем 321
А также для процесса валидации, но об этом позже.
Валидация
Валидация, если простым языком, это проверка данных на корректность и действия направленные на то, чтобы данные были корректными. Банальный пример: пока значение неверное, спрашивать у игрока новое значение. Зачем это может нам потребоваться? Например мы хотим получить число.
[code_lib_fix]
x = int(input("Введи число: ")) # полученную строку переводим в число при помощи команды int()
Но как можно предположить, если пользователь напишет “Семь Егоров”, то мы не сможем перевести это в число. Столкнувшись с чем-то красным и фатальным. Ошибкой… Но мы можем эту фатальную ошибку отловить и обработать при помощи try и except .
[code_lib_fix]
while True: # бесконечный цикл. остановим тогда, когда получим корректное значени try: # попытаемся выполнить следующие строки кода: x = int(input("Введи число: ")) break # выйдем из цикла, если в строке выше не стокнулись с ошибкой except ValueError: # Исключение класса ValueError возникает как раз в таких ситуациях, когда неверное значение подаётся для действия print("Пожалуйста, впиши число(из цифр).") # Выполнится в том случае, если была фатальная ошибка с исключением ValueError
Числа¶
Числа в 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, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).
>>> 255 + 34 289 >>> 5 * 2 10 >>> 20 / 3 6.666666666666667 >>> 20 // 3 6 >>> 20 % 3 2 >>> 3 ** 4 81 >>> pow(3, 4) 81 >>> pow(3, 4, 27) 0 >>> 3 ** 150 369988485035126972924700782451696644186473100389722973815184405301748249
Битовые операции¶
Над целыми числами также можно производить битовые операции
| Синтаксис | Описание |
|---|---|
| x | y | Побитовое или |
| x ^ y | Побитовое исключающее или |
| x & y | Побитовое и |
| x | Битовый сдвиг влево |
| x >> y | Битовый сдвиг вправо |
| ~x | Инверсия битов |
Дополнительные методы¶
int.bit_length() количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.
>>> n = -37 >>> bin(n) '-0b100101' >>> n.bit_length() 6
int.to_bytes(length, byteorder, *, signed=False) возвращает строку байтов, представляющих это число.
>>> (1024).to_bytes(2, byteorder='big') b'\x04\x00' >>> (1024).to_bytes(10, byteorder='big') b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' >>> x = 1000 >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little') b'\xe8\x03'
classmethod int.from_bytes(bytes, byteorder, *, signed=False) возвращает число из данной строки байтов.
>>> int.from_bytes(b'\x00\x10', byteorder='big') 16 >>> int.from_bytes(b'\x00\x10', byteorder='little') 4096 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) -1024 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) 64512 >>> int.from_bytes([255, 0, 0], byteorder='big') 16711680
Системы счисления¶
Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011 . Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:
int([object], [основание системы счисления]) преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно. bin(x) преобразование целого числа в двоичную строку. hex(х) преобразование целого числа в шестнадцатеричную строку. oct(х) преобразование целого числа в восьмеричную строку.
>>> a = int('19') # Переводим строку в число >>> b = int('19.5') # Строка не является целым числом Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '19.5' >>> c = int(19.5) # Применённая к числу с плавающей точкой, # отсекает дробную часть >>> print(a, c) 19 19 >>> bin(19) '0b10011' >>> oct(19) '0o23' >>> hex(19) '0x13' >>> 0b10011 # Так тоже можно записывать числовые константы 19 >>> int('10011', 2) 19 >>> int('0b10011', 2) 19
Вещественные числа (float)¶
Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:
>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 0.9999999999999999
Для высокой точности используют другие объекты (например Decimal и Fraction )).
Также вещественные числа не поддерживают длинную арифметику:
>>> a = 3 ** 1000 >>> a + 0.1 Traceback (most recent call last): File "", line 1, in OverflowError: int too large to convert to float
Простенькие примеры работы с числами:
>>> c = 150 >>> d = 12.9 >>> c + d 162.9 >>> p = abs(d - c) # Модуль числа >>> print(p) 137.1 >>> round(p) # Округление 137
Дополнительные методы¶
float.as_integer_ratio() пара целых чисел, чьё отношение равно этому числу. float.is_integer() является ли значение целым числом. float.hex() переводит float в hex (шестнадцатеричную систему счисления). classmethod float.fromhex(s) float из шестнадцатеричной строки.
>>> (10.5).hex() '0x1.5000000000000p+3' >>> float.fromhex('0x1.5000000000000p+3') 10.5
Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.
Модуль math предоставляет более сложные математические функции.
>>> import math >>> math.pi 3.141592653589793 >>> math.sqrt(85) 9.219544457292887
Модуль random реализует генератор случайных чисел и функции случайного выбора.
>>> import random >>> random.random() 0.15651968855132303
Комплексные числа (complex)¶
В Python встроены также и комплексные числа:
>>> x = complex(1, 2) >>> print(x) (1+2j) >>> y = complex(3, 4) >>> print(y) (3+4j) >>> z = x + y >>> print(x) (1+2j) >>> print(z) (4+6j) >>> z = x * y >>> print(z) (-5+10j) >>> z = x / y >>> print(z) (0.44+0.08j) >>> print(x.conjugate()) # Сопряжённое число (1-2j) >>> print(x.imag) # Мнимая часть 2.0 >>> print(x.real) # Действительная часть 1.0 >>> print(x > y) # Комплексные числа нельзя сравнить Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: complex() > complex() >>> print(x == y) # Но можно проверить на равенство False >>> abs(3 + 4j) # Модуль комплексного числа 5.0 >>> pow(3 + 4j, 2) # Возведение в степень (-7+24j)
Для работы с комплексными числами используется также модуль cmath .
Python-сообщество
![]()
- Начало
- » Python для новичков
- » Помощь в коде
#1 Дек. 9, 2021 15:20:33
ODO Зарегистрирован: 2021-12-09 Сообщения: 5 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
Привет, помогите с задачкой, уже голову сломал, все чтото да не так:
“Напишите цикл while, который позволяет пользователю ввести число. Число должно
быть умножено на 1О, и результат присвоен переменной с именем product. Цикл должен повторяться до тех пор, пока product меньше 100.”
#2 Дек. 9, 2021 15:37:32
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
Помощь в коде
ODO
уже голову сломал, все чтото да не так
так покажите, что сделали, вам скажут, в чем ваша ошибка
#3 Дек. 9, 2021 15:44:25
ODO Зарегистрирован: 2021-12-09 Сообщения: 5 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
Ну например вот так
product = 0 number = int(input("Введите число: ")) product = print(number * 10) while number 100: product = print(number * 10) print("Product", "=", product)
#4 Дек. 9, 2021 15:50:10
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
Помощь в коде
product = 0 while product 100: number = int(input("Input number: ")) product = number * 10 print("Product", "=", product)
#5 Дек. 9, 2021 16:01:15
ODO Зарегистрирован: 2021-12-09 Сообщения: 5 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
#6 Дек. 9, 2021 20:04:04
DmBand Зарегистрирован: 2021-02-03 Сообщения: 36 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
ODO
Спасибо, но если результат < 100, то он тоже должен выводиться как я понял из условий. А в вашем случае число пользователя просто выводится не перемножаясь на 10
Просто поместите print в цикл.
product = 0 while product 100: num = int(input('Введите число: ')) product = num * 10 print(f'Результат ')
Отредактировано DmBand (Дек. 9, 2021 20:06:39)
#7 Дек. 9, 2021 23:53:13
ODO Зарегистрирован: 2021-12-09 Сообщения: 5 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
А вот еще задачка, тут даже не совсем понять могу что требуется, видимо пользователь должен 10 раз ввести числа и программа поставить в порядке возрастания. С чего начать?
“Напишите цикл, который просит пользователя ввести число. Цикл должен выполнить
1О итераций и вести учет нарастающего итога введенных чисел.”
#8 Дек. 10, 2021 08:37:43
AD0DE412 Зарегистрирован: 2019-05-12 Сообщения: 1130 Репутация: 44 Профиль Отправить e-mail
Помощь в коде
a = [] while b := input("inter digit (int): "): a.append(int(b)) print("~", sum(a)) if len(a) == 10: break
1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде 
2. чтобы вставить изображение залейте его куда нибудь (например) , нажмите
и вставьте ссылку на его url
…
есчщо
#9 Дек. 10, 2021 10:22:32
DmBand Зарегистрирован: 2021-02-03 Сообщения: 36 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
ODO
А вот еще задачка, тут даже не совсем понять могу что требуется, видимо пользователь должен 10 раз ввести числа и программа поставить в порядке возрастания. С чего начать?“Напишите цикл, который просит пользователя ввести число. Цикл должен выполнить1О итераций и вести учет нарастающего итога введенных чисел.”
some_list = [] while len(some_list) 10: num = int(input('Введите число: ')) some_list.append(num) print(sum(some_list))
#10 Дек. 10, 2021 11:55:47
ODO Зарегистрирован: 2021-12-09 Сообщения: 5 Репутация: 0 Профиль Отправить e-mail
Помощь в коде
Хм, а обязательно с использованием списков? Просто в учебнике, откуда брал задачу, списки еще не начались для изучения
AD0DE412
while b :=
И поясните, пожалуйста двоеточие и равно, != знаю, а это что такое?
Отредактировано ODO (Дек. 10, 2021 11:58:31)