/ / Как мога да прочета входовете като цели числа? - питон, python-2.7, python-3.x, int

Как мога да чета входове като цели числа? - питон, python-2.7, python-3.x, int

Защо този код не въвежда цели числа? Всичко в мрежата казва да се използва raw_input(), но аз чета на Stack Overflow (на нишка, която не се занимава с въвеждане на цяло число), че 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

Отговори:

202 за отговор № 1

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.x "s input и Python 2.x 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 не оценява и не конвертира типа данни, трябва изрично да го конвертирате ints, с int, като този

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

Можете да приемате номера на всяка база и да ги конвертирате директно в база-10 с 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

Вторият параметър показва каква е базата на въведените числа и след това вътрешно го разбира и преобразува. Ако въведените данни са погрешни, ще хвърли a ValueError.

>>> 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

Можете да се отървете от play променлива чрез използване break и while True.

PS: Python не очаква ; в края на реда :)


28 за отговор № 2

В Python 3.x, raw_input бе преименувано на 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 не се нуждае / използва точка и запетая за крайни линии. Така че, като ги няма, не прави нищо положително.


18 за отговор № 3

За множество цели числа в един ред, карта може би е по-добре.

arr = map(int, raw_input().split())

Ако номерът вече е известен (като 2 цели числа), можете да го използвате

num1, num2 = map(int, raw_input().split())

13 за отговор № 4

input() (Python 3) и raw_input() (Python 2) винаги връщане на низове. Конвертиране на резултата в цяло число с int().

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

Подсказка: полуточиците не са необходими в Python.


8 за отговор № 5

Няколко въпроса изискват въвеждане на няколко цели числа на един ред. Най-добрият начин е да въведете целия низ от числа по един ред и да ги разделите на цели числа.

 p=raw_input()
p=p.split()
for i in p:
a.append(int(i))

4 за отговор № 6

Преобразуване в цели числа:

my_number = int(input("enter the number"))

По същия начин за числа с плаваща запетая:

my_decimalnumber = float(input("enter the number"))

4 за отговор № 7

Приемането на int като вход в python: вземаме просто въвеждане на низ, използвайки:

input()

сега искаме int като input.so, като въвеждаме този низ в int. просто използвайки:

int(input())

3 за отговор № 8

Python 3.x има 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: "))

3 за отговор № 9

В Python 3.x. По подразбиране входната функция приема входящи данни в низовия формат. За да го конвертирате в цяло число, трябва да включите int (input ())

x=int(input("Enter the number"))

2 за отговор № 10

Аз срещнах проблем с вземането на цяло число, докато решавам проблем 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 като цели числа. Надявам се това да помогне.


2 за отговор № 11
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

2 за отговор № 12

Докато сте във вашия пример, int(input(...)) в никакъв случай, python-futurebuiltins.input заслужава да се разгледа, тъй като това гарантира, че вашият код работи както за Python 2, така и за 3 и забранява поведението на Python2 по подразбиране на input се опитва да бъде "умен" за типа входни данни (builtins.input по същество просто се държи като raw_input).


1 за отговор № 13

По подразбиране входната функция приема входа като низ

за друг тип данни трябва да въведете потребителския вход

В Python 2 използваме raw_input () функция. той изчаква потребителя да въведе някакъв вход и да натисне връщане и трябва да съхраним стойността в променлива чрез кастинг като тип данни за желание. Бъдете внимателни, когато използвате тип леене

x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input

В Python 3 използваме вход() функция, която връща потребителска входна стойност

x = input("Enter a number: ") #String input

ако въведете низ, int, float, eval, той ще поеме като въвеждане на низ

x = int(input("Enter a number: ")) #integer input

ако въведете низ за int cast ValueError: invalid literal за int () с база 10:

x = float(input("Enter a float number: ")) #float input

ако въведете низ за float cast, ValueError: не може да конвертира низ в float

x = eval(input("Enter a float number: ")) #eval input

ако въведете низ за eval cast

NameError: name "" не е дефиниран

Тези грешки са приложими и за Python 2


0 за отговор № 14

Да, в python 3.x, raw_input се заменя с input, За да се върнете към старото поведение на input използвате:

eval(input("Enter a number: "))

Това ще позволи на python да знае, че въведен вход е цяло число


0 за отговор № 15
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))

за цикълът се изпълнява "n" брой пъти. второто "n" е дължината на масива. последното изречение преобразува числата в списък и поема входа в отделен от пространството формуляр. Можете също така да върнете масива в края на for loop.