Перейти к содержимому

Как вести число в python

  • автор:

Как в 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

Ввод данных в Python кратко

Ввод данных

Ввод это когда вы говорите программе сколько яблок берёт Петя, или скольки равен 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-сообщество

[RSS Feed]

  • Начало
  • » 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)

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

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