Как читать входы как целые числа?

Почему этот код не raw_input () raw_input () egers? Все в Сети говорит, что нужно использовать input(), но я читаю «Переполнение стека» (в потоке, который не учитывал play = True во время игры : x = input ( «Введите число:» ) y = input ( «Введите число:» ) print ( x + y ) print ( x - y ) print ( x * y ) print ( x / y ) print ( x) ) print ( x % y ), если вход ( «Воспроизвести снова?» ) == «нет» : воспроизведение = вход False eger), который был переименован в Python 3.x. raw_inputraw_input

>>> import sys
 >>> sys . версия
 '2.7.6 (по умолчанию, 22 марта 2014, 22:59:56)  n [GCC 4.8.2]' >>> data = input ( «Введите число:» ) Введите число : 5 + 17 >> > данные , тип ( данные ) ( 22 , < тип 'int' >) ed "> 

   

 5 + 17

python,python-2.7,python-3.x,int,

203

Ответов: 15


<22 типа = "скрытые" NAME = "_ id_" значение = "20449433"> <5 + 17 тип = "скрытый" имя = "_ LTU _"> вверх голос 212 принял

Python 2.x

Были две функции, чтобы получить пользовательский int, вызванный inputи input. Разница между ними: raw_inputне оценивает >>> data = eval ( raw_input ( «Введите число:» )) Введите число : 5 + 17 >>> данные , тип ( данные ) ( 22 , < type ' int ' >) и возвращается как есть, в строковой форме. Но, будет оценивать все, что вы ввели, и результат оценки будет возвращен. Например, input

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)

Данные inputоцениваются и результат raw_input. Когда он оценивает выражение raw_input, он обнаруживает, что вы добавляете два числа, и поэтому результат будет иметь тот же intтип. Таким образом, преобразование типа выполняется бесплатно и возвращается в результате и сохраняется в переменной. Вы можете думать, как составленный с вызовом.>>> import sys >>> sys.version '3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2]' >>> data = input("Enter a number: ") Enter a number: 5 + 17 >>> data, type(data) ('5 + 17', <class 'str'>)intdatainputinteval

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

Примечание: вы должны быть осторожны, когда используете inputPython 2.x. Я объяснил, почему нужно быть осторожным при его использовании в этом ответе .

Но, intне оценивает ввод и возвращает как он, как строку.

>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365

Python 3.x

Python 3.x inputи Python 2.x ValueErrorаналогичны и недоступны в Python 3.x.>>> data = int(input("Enter a number: "), 2) Enter a number: 1234 Traceback (most recent call last): File "<input>", line 1, in <module> ValueError: invalid literal for int() with base 2: '1234'

while True:
    ...
    ...
    if input("Play again? ") == "no":
        break

Решение

Чтобы ответить на ваш вопрос, поскольку Python 3.x не оценивает и не конвертирует тип данных, вам необходимо явно преобразовать его в ints int, так как, например,

play

Вы можете принимать номера любой базы и преобразовывать их непосредственно в base-10 с помощью intфункции, например

break

Второй параметр указывает, что является базой введенных чисел, а затем внутренне понимает и преобразует его. Если введенные данные ошибочны, он будет бросать a while True.

;

Кроме того, ваша программа может быть изменена немного, как это

raw_input

Вы можете избавиться от inputпеременной, используя inputи raw_input.

PS : Python не ожидает inputв конце строки :)


В Python 3.x intбыло переименовано inputи Python 2.x inputбыл удален.

Это означает , что, так же , как 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())

13

input()(Python 3) и raw_input()(Python 2) всегда возвращают строки. Преобразовать результат в целое число с явным образом int().

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

Pro tip: полуколоны не нужны в Python.


Множественные вопросы требуют ввода нескольких целых чисел в одной строке. Лучший способ - ввести всю строку чисел одну строку, а затем разделить на целые числа.

 p=raw_input()
    p=p.split()      
    for i in p:
        a.append(int(i))
питон, питон-2,7, питон-3.x, INT,
Похожие вопросы
Яндекс.Метрика