Как я могу читать входные данные как целые числа?
Почему этот код не вводит целые числа? Все в интернете говорит, чтобы использовать raw_input()
, но я читал о переполнении стека (в потоке, который не имел дело с целочисленным входом), что raw_input()
была переименована в input()
в Python 3.x.
play = True
while play:
x = input("Enter a number: ")
y = input("Enter a number: ")
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x % y)
if input("Play again? ") == "no":
play = False
14 ответов:
Python 2.x
было две функции для получения пользовательского ввода, называемые
input
иraw_input
. Разница между ними в том,raw_input
не оценивает данные и возвращает как есть, в Строковой форме. Но,input
будет оценивать все, что вы ввели, и результат оценки будет возвращен. Например,>>> import sys >>> sys.version '2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]' >>> data = input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) (22, <type 'int'>)
данные
5 + 17
оценивается и результат22
. Когда он оценивает выражение5 + 17
, он обнаруживает, что вы добавляете два числа, и поэтому результат также будет иметь то же самоеint
тип. Итак, преобразование типов выполняется бесплатно и22
возвращается в результатеinput
и хранящиеся вdata
переменной. Вы можете думать оinput
какraw_input
состоит сeval
звонок.>>> data = eval(raw_input("Enter a number: ")) Enter a number: 5 + 17 >>> data, type(data) (22, <type 'int'>)
Примечание: вы должны быть осторожны, когда вы используете
input
в Python 2.x. я объяснил, почему нужно быть осторожны при его использовании, в ответ.а,
raw_input
не оценивает входные данные и возвращает их как есть, как строку.>>> import sys >>> sys.version '2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]' >>> data = raw_input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) ('5 + 17', <type 'str'>)
Python 3.x
Python 3.х
input
и Python 2.хraw_input
похожие иraw_input
недоступно в Python 3.x.>>> import sys >>> sys.version '3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]' >>> data = input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) ('5 + 17', <class 'str'>)
решение
чтобы ответить на ваш вопрос, начиная с Python 3.x не оценивает и преобразовать тип данных, вы должны явно преобразовать в
int
Сint
, такойx = int(input("Enter a number: ")) y = int(input("Enter a number: "))
вы можете принимать номера любой базы и конвертировать их непосредственно в базу-10 с помощью
В Python 3.x,
raw_input
была переименована вinput
и Python 2.xinput
был удален.это означает, что просто так
raw_input
,input
в Python 3.x всегда возвращает строковый объект.чтобы решить эту проблему, вам нужно явно сделать эти входы в целые числа, поместив их в
int
:x = int(input("Enter a number: ")) y = int(input("Enter a number: "))
кроме того, Python не нужно/использовать точки с запятой для завершения строк. Так что, имея их ничего не делает положительный.
для нескольких целых чисел в одной строке,карта может быть лучше.
arr = map(int, raw_input().split())
Если число уже известно (например, 2 целых числа), вы можете использовать
num1, num2 = map(int, raw_input().split())
input()
(Python 3) иraw_input()
(Python 2)всегда возвращать строки. Преобразуйте результат в целое число явно с помощьюint()
.x = int(input("Enter a number: ")) y = int(input("Enter a number: "))
Pro совет: точки с запятой не нужны в Python.
несколько вопросов требуют ввода для нескольких целых чисел в одной строке. Лучший способ-ввести всю строку чисел в одну строку, а затем разделить их на целые числа.
p=raw_input() p=p.split() for i in p: a.append(int(i))
преобразовать в целые числа:
my_number = int(input("enter the number"))
аналогично для чисел с плавающей точкой:
my_decimalnumber = float(input("enter the number"))
принимая int в качестве входных данных в python: мы берем простой строковый ввод с помощью:
input()
теперь мы хотим int в качестве входных.поэтому мы типизировать эту строку в int. просто использовать:
int(input())
Python 3.х
input()
функция, которая возвращает всегда string.So вы должны преобразовать вint
python 3.x
x = int(input("Enter a number: ")) y = int(input("Enter a number: "))
python 2.x
в python 2.x
raw_input()
иinput()
функции всегда возвращают строку, поэтому вы также должны преобразовать их в int.x = int(raw_input("Enter a number: ")) y = int(input("Enter a number: "))
В Python 3.х. По умолчанию функция input принимает входные данные в строковом формате . Чтобы преобразовать его в целое число, вам нужно включить int (input ())
x=int(input("Enter the number"))
я столкнулся с проблемой принятия целочисленного ввода при решении проблемы на CodeChef, где два целых числа-разделенные пробелом-должны быть прочитаны из одной строки.
пока
int(input())
достаточно для одного целого числа, я не нашел прямого способа ввода двух целых чисел. Я попробовал это:num = input() num1 = 0 num2 = 0 for i in range(len(num)): if num[i] == ' ': break num1 = int(num[:i]) num2 = int(num[i+1:])
теперь я использую num1 и num2 как целые числа. Надеюсь, это поможет.
def dbz(): try: r = raw_input("Enter number:") if r.isdigit(): i = int(raw_input("Enter divident:")) d = int(r)/i print "O/p is -:",d else: print "Not a number" except Exception ,e: print "Program halted incorrect data entered",type(e) dbz() Or num = input("Enter Number:")#"input" will accept only numbers
в то время как в вашем примере,
int(input(...))
делает трюк в любом случае,python-future
' sbuiltins.input
стоит рассмотреть, так как это гарантирует, что ваш код работает как для Python 2 и 3 и отключает поведение Python2 по умолчаниюinput
пытаясь быть "умным" о типе входных данных (builtins.input
в основном просто ведет себя какraw_input
).
да, в python 3.x,
raw_input
заменяетсяinput
. Для того, чтобы вернуться к старому поведениюinput
использование:
eval(input("Enter a number: "))
это позволит python знать, что введенный вход является целым числом
n=int(input()) for i in range(n): n=input() n=int(n) arr1=list(map(int,input().split()))
цикл for должен выполняться ' n ' количество раз . второй 'n' - это длина массива. последний оператор отображает целые числа в список и принимает входные данные в виде пробелов. вы также можете вернуть массив в конце цикла for.