Python input returns int

Convert User Input to a Number

In Python 3.x, the input() function parse user input as a string even if it contains only digits.

>>> import sys >>> data=input("Enter a Value: ") Enter a Value: 100 >>> data '100' >>> type(data) >>> data=input("Enter a Value: ") Enter a Value: Hello >>> data 'Hello' >>> type(data)

How do we ensure a numeric input from the user? Most common alternative is to parse return value of the input() function to integer with int() function

>>> data=int(input("Enter a Number: ")) Enter a Number: 100 >>> data 100 >>> type(data)

However, this is prone to error. If the user inputs non-numeric data, ValueError is raised.

>>> data=int(input("Enter a Number: ")) Enter a Number: hello Traceback (most recent call last): File "", line 1, in data=int(input("Enter a Number: ")) ValueError: invalid literal for int() with base 10: 'hello' 

This can be taken care of by Python’s exception handling technique. The following code keeps on asking for user input till an integer number is given.

while True: try: data=int(input("Enter a Number: ")) print ("You entered: ", data) break; except ValueError: print ("Invalid input") 
Enter a Number: hello Invalid input Enter a Number: abcd Invalid input Enter a Number: 100 You entered: 100 

You can use the built-in float() function if a floating-point number is expected to be input.

Another method is to use the eval() function. Apart from other applications of this built-in function, it is a convenient tool to check if the input is a valid number. In case it is not, the Python interpreter raises NameError

while True: try: data=eval(input("Enter a Number: ")) print ("You entered: ",data) break; except NameError: print ("Invalid input") 
Enter a Number: hello Invalid input Enter a Number: abcd Invalid input Enter a Number: 12.34 You entered: 12.34 

Convert Input to Number in Python 2.x

Python 2.x has two built-in functions for accepting user input. the raw_input() and input() . The input() function is intelligent as it judges the data type of data read, whereas the raw_input() always treats the input as a string. So, always use the input() function in Python 2.x.

>>> data=input("enter something : ") enter something : 100 >>> data 100 >>> type(data) >>> data=input("enter something : ") enter something : Hello' >>> data 'Hello' >>> type(data)

Malhar Lathkar is an independent software professional having 30+ years of experience in various technologies such as Python, Java, Android, PHP, and Databases. He is an author of Python Data Persistence: With SQL and NOSQL Databases

Источник

Читайте также:  Javascript string format time

Пользовательский ввод (input) в Python

Обычно программа работает по такой схеме: получает входные данные → обрабатывает их → выдает результат. Ввод может поступать как непосредственно от пользователя через клавиатуру, так и через внешний источник (файл, база данных).

В стандартной библиотеке Python 3 есть встроенная функция input() (в Python 2 это raw_input() ), которая отвечает за прием пользовательского ввода. Разберемся, как она работает.

Чтение ввода с клавиатуры

Функция input([prompt]) отвечает за ввод данных из потока ввода:

s = input() print(f»Привет, !») > мир # тут мы с клавиатуры ввели слово «мир» > Привет, мир!

  1. При вызове функции input() выполнение программы приостанавливается до тех пор, пока пользователь не введет текст на клавиатуре (приложение может ждать бесконечно долго).
  2. После нажатия на Enter , функция input() считывает данные и передает их приложению (символ завершения новой строки не учитывается).
  3. Полученные данные присваиваются переменной и используются дальше в программе.

Также у input есть необязательный параметр prompt – это подсказка пользователю перед вводом:

name = input(«Введите имя: «) print(f»Привет, !») > Введите имя: Вася > Привет, Вася!

📃 Более подробное описание функции из документации:

def input([prompt]): «»» Read a string from standard input. The trailing newline is stripped. The prompt string, if given, is printed to standard output without a trailing newline before reading input. If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. On *nix systems, readline is used if available. «»» pass

Преобразование вводимые данные

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

Читайте также:  Get current date with javascript

☝️ Важно : если вы решили преобразовать строку в число, но при этом ввели строку (например: test), возникнет ошибка:

ValueError: invalid literal for int() with base 10: ‘test’

На практике такие ошибки нужно обрабатывать через try except . В примере ниже пользователь будет вводить данные до тех пор, пока они успешно не преобразуются в число.

def get_room_number(): while True: try: num = int(input(«Введите номер комнаты: «)) return num except ValueError: print(«Вы ввели не число. Повторите ввод») room_number = get_room_number() print(f»Комната успешно забронирована!») > Введите номер комнаты: test > Вы ввели не число. Повторите ввод > Введите номер комнаты: 13 > Комната 13 успешно забронирована!

Input() → int

Для преобразования в целое число используйте функцию int() . В качестве аргумента передаются данные которые нужно преобразовать, а на выходе получаем целое число:

age_str = input(«Введите ваш возраст: «) age = int(age_str) print(age) print(type(age)) > Введите ваш возраст: 21 > 21 >

То же самое можно сделать в одну строку: age = int(input(«Введите ваш возраст: «)) .

Input() → float

Если нужно получить число с плавающей точкой (не целое), то его можно получить с помощью функции float() .

weight = float(input(«Укажите вес (кг): «)) print(weight) print(type(weight)) > Укажите вес (кг): 10.33 > 10.33 >

Input() → list (список)

Если в программу вводится информация, которая разделяется пробелами, например, «1 word meow», то ее легко преобразовать в список с помощью метода split() . Он разбивает введенные строки по пробелам и создает список:

list = input().split() print(list) print(type(list)) > 1 word meow > [‘1’, ‘word’, ‘meow’] >

💭 Обратите внимание, что каждый элемент списка является строкой. Для преобразования в число, можно использовать int() и цикл for. Например, так:

int_list = [] for element in input().split(): int_list.append(int(element)) print([type(num) for num in int_list]) > 1 2 3 > [, , ]

Читайте также:  Writing html code software

Ввод в несколько переменных

Если необходимо заполнить одним вводом с клавиатуры сразу несколько переменных, воспользуйтесь распаковкой:

В этом примере строка из input() разбивается по пробелу функцией split() . Далее применяется синтаксис распаковки – каждый элемент списка попадает в соответствующую переменную.

Все переменные после распаковки будут строкового типа. Преобразовать их (например в int) можно так:

a, b = [int(s) for s in input().split()] print(f»type a: , type b: «) > 13 100 > type a: , type b:

☝️ Важно : не забывайте обрабатывать ошибки:

  • если введенных значений больше чем переменных, получите ошибку – ValueError: too many values to unpack (expected 3) ;
  • если введенных значений меньше чем переменных, получите ошибку – ValueError: not enough values to unpack (expected 3, got 2) ;
  • если преобразовываете в int, а вводите строку – ValueError: invalid literal for int() with base 10: ‘test’ .

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

Источник

Оцените статью