Защо този код не въвежда цели числа? Всичко в мрежата казва да се използва 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 за отговор № 1Python 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 не оценява и не конвертира типа данни, трябва изрично да го конвертирате int
s, с 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-future
"с builtins.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.