- Пользовательский ввод (input) в Python
- Чтение ввода с клавиатуры
- Преобразование вводимые данные
- Input() → int
- Input() → float
- Input() → list (список)
- Ввод в несколько переменных
- Python Take list as an input from a user
- Table of contents
- Get a list of numbers as input from a user
- Input a list using input() and range() function
- Input a list using a list comprehension
- Input a list using the map function
- Get a list of strings as an input from a user
- Accept a nested list as input
- Next Steps
- About Vishal
- Related Tutorial Topics:
- Python Exercises and Quizzes
Пользовательский ввод (input) в Python
Обычно программа работает по такой схеме: получает входные данные → обрабатывает их → выдает результат. Ввод может поступать как непосредственно от пользователя через клавиатуру, так и через внешний источник (файл, база данных).
В стандартной библиотеке Python 3 есть встроенная функция input() (в Python 2 это raw_input() ), которая отвечает за прием пользовательского ввода. Разберемся, как она работает.
Чтение ввода с клавиатуры
Функция input([prompt]) отвечает за ввод данных из потока ввода:
s = input() print(f»Привет, !») > мир # тут мы с клавиатуры ввели слово «мир» > Привет, мир!
- При вызове функции input() выполнение программы приостанавливается до тех пор, пока пользователь не введет текст на клавиатуре (приложение может ждать бесконечно долго).
- После нажатия на Enter , функция input() считывает данные и передает их приложению (символ завершения новой строки не учитывается).
- Полученные данные присваиваются переменной и используются дальше в программе.
Также у 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
Преобразование вводимые данные
Данные, введенные пользователем, попадают в программу в виде строки, поэтому и работать с ними можно так же, как и со строкой. Если требуется организовать ввод цифр, то строку можно преобразовать в нужный формат с помощью функций явного преобразования типов.
☝️ Важно : если вы решили преобразовать строку в число, но при этом ввели строку (например: 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 > [, , ]
Ввод в несколько переменных
Если необходимо заполнить одним вводом с клавиатуры сразу несколько переменных, воспользуйтесь распаковкой:
В этом примере строка из 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 и обрабатывать исключения.
Python Take list as an input from a user
In this lesson, You will learn how to input a list in Python.
Using the Python input() function, we can accept a string, integer, and character input from a user. Now, let see how to get a list as input from a user.
Table of contents
Get a list of numbers as input from a user
How to take a list as input in Python
- Use an input() function Use an input() function to accept the list elements from a user in the format of a string separated by space.
- Use split() function of string class Next, use a split() function to split an input string by space. The split() method splits a string into a list.
- Use for loop and range() function to iterate a user list Using a for loop and range() function, we can access each element of the list along with the index number.
- Convert each element of list into number Convert each list element to an integer using a int() function.
If you want a list of strings as input then skip this step.
Example 1: Get a list of numbers as input from a user and calculate the sum of it
input_string = input('Enter elements of a list separated by space ') print("\n") user_list = input_string.split() # print list print('list: ', user_list) # convert each item to int type for i in range(len(user_list)): # convert each item to int type user_list[i] = int(user_list[i]) # Calculating the sum of list elements print("Sum wp-block-preformatted">Enter elements of a list separated by space 5 10 15 20 25 30 list: ['5', '10', '15', '20', '25', '30'] Sum = 105
Note: Python input() function always converts the user input into a string then returns it to the calling program. With those in mind, we converted each element into a number using an int() function. If you want to accept a list with float numbers you can use the float() function.
Input a list using input() and range() function
Let’s see how to accept Python list as an input without using the split() method.
- First, create an empty list.
- Next, accept a list size from the user (i.e., the number of elements in a list)
- Run loop till the size of a list using a for loop and range() function
- use the input() function to receive a number from a user
- Add the current number to the list using the append() function
number_list = [] n = int(input("Enter the list size ")) print("\n") for i in range(0, n): print("Enter number at index", i, ) item = int(input()) number_list.append(item) print("User list is ", number_list)
Enter the list size 5 Enter number at index 0 5 Enter number at index 1 10 Enter number at index 2 15 Enter number at index 3 20 Enter number at index 4 25 User list is [5, 10, 15, 20, 25]
Input a list using a list comprehension
List comprehension is a more straightforward method to create a list from an existing list. It is generally a list of iterables generated to include only the items that satisfy a condition.
Let’ see how to use the list Comprehension to get the list as an input from the user. First, decide the size of the list.
Next, use the list comprehension to do the following tasks
- Get numbers from the user using the input() function.
- Split it string on whitespace and convert each number to an integer using an int() function.
- Add all that numbers to the list.
n = int(input("Enter the size of the list ")) print("\n") num_list = list(int(num) for num in input("Enter the list items separated by space ").strip().split())[:n] print("User list: ", num_list)
Enter the size of the list 5 Enter the list items separated by space 2 4 6 8 10 User list: [2, 4, 6, 8, 10]
Input a list using the map function
Let’ see how to use the map() function to get a list as an input from the user.
- First, decide the list size.
- Next, accept numbers from the user separated by space
- Next, use the map() function to wrap each user-entered number in it and convert it into an int or float as per your need
n = int(input("Enter the size of list : ")) print("\n") numList = list(map(float, input("Enter the list numbers separated by space ").strip().split()))[:n] print("User List: ", numList)
Enter the size of list : 5 Enter the list numbers separated by space 2.5 5.5 7.5 10.5 12.5 User List: [2.5, 5.5, 7.5, 10.5, 12.5]
Get a list of strings as an input from a user
Accept a string list from the user is very straightforward.
- Accept the list of strings from a user in the format of a string separated by space.
- Use split() function on input string to splits a string into a list of words.
input_string = input("Enter all family members name separated by space ") # Split string into words family_list = input_string.split(" ") print("\n") # Iterate a list print("Printing all family member names") for name in family_list: print(name)
Enter all family members name separated by space Jessa Emma Scott Kelly Tom Printing all family member names Jessa Emma Scott Kelly Tom
Accept a nested list as input
In this example, Let’s see how to get evenly sized lists from the user. In simple words, Let’s see how to accept the following list of lists from a user.
[[10, 20, 30], [40, 50, 60], [70, 80, 90]]
# accept nested list from user list_size = int(input("Enter the number of sub list ")) print("\n") final_list = [[int(input("Enter single number and press enter: ")) for _ in range(list_size)] for _ in range(list_size)] print("List is", final_list)
Enter the number of sub list 3 Enter single number and press enter: 10 Enter single number and press enter: 20 Enter single number and press enter: 30 Enter single number and press enter: 40 Enter single number and press enter: 50 Enter single number and press enter: 60 Enter single number and press enter: 70 Enter single number and press enter: 80 Enter single number and press enter: 90 List is [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
Next Steps
Let me know your comments and feedback in the section below.
Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.
About Vishal
I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter
Related Tutorial Topics:
Python Exercises and Quizzes
Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.
- 15+ Topic-specific Exercises and Quizzes
- Each Exercise contains 10 questions
- Each Quiz contains 12-15 MCQ