Как читать пользовательский ввод как целые числа на Python

Jinku Hu 30 Январь 2023 18 Апрель 2020
  1. Пользовательский ввод на Python 2.x читается как целое число
  2. Читайте пользовательский ввод как целые числа на Python 3.x
Как читать пользовательский ввод как целые числа на Python

В этом уроке мы научимся читать пользовательский ввод как целые числа на Python.

Пользовательский ввод на Python 2.x читается как целое число

На Python 2.7 есть две функции для чтения пользовательского ввода, а именно raw_input и input.

Функция raw_input читает пользовательский вход как необработанную строку, а её возвращаемое значение просто string.

input получает пользовательский вход, а затем оценивает строку и возвращает результат оценки.

Например,

>>> number = raw_input("Enter a number: ")
Enter a number: 1 + 1
>>> number, type(number)
('1 + 1', <type 'str'>)

>>> number = input("Enter a number: ")
Enter a number: 1 + 1
>>> number, type(number)
(2, <type 'int'>)
Предупреждение

Подумайте дважды, когда вы используете input на Python 2.x. Это может навязать проблемы с безопасностью, потому что вход оценивает любой тип пользователя.

Допустим, если вы уже импортировали os в вашу программу, а затем она запрашивает пользовательский ввод,

>>> number = input("Enter a number: ")
Enter a number: os.remove(*.*)

Ваш ввод os.remove(*.*) будет обработан и удалит все файлы в рабочем словаре без предварительного уведомления!

Читайте пользовательский ввод как целые числа на Python 3.x

raw_input устарел на Python 3.x и заменён на input на Python 3.x. Он получает только пользовательскую строку ввода, но не оценивает строку из-за риска безопасности, как описано выше.

Поэтому необходимо явно конвертировать пользовательский ввод из строки в целые числа.

>>> number = int(input("Enter a number: "))
Enter a number: 123
>>> number
123
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn