TLDR
- Python 3,
input
işlevle alınan verileri değerlendirmez , ancak Python 2'nin input
işlevi yapar (anlamını anlamak için bir sonraki bölümü okuyun).
- Python 3 yılların Python 2'nin eşdeğer
input
olduğunu raw_input
işlevi.
Python 2.x
input
Ve olarak adlandırılan kullanıcı girdisini almak için iki işlev vardı raw_input
. Aralarındaki fark raw_input
, verileri değerlendirmez ve dize biçiminde olduğu gibi döndürür. Ancak, input
girdiğiniz her şeyi değerlendirecek ve değerlendirme sonucu iade edilecektir. Örneğin,
>>> 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'>)
Veriler 5 + 17
değerlendirilir ve sonuç değerlendirilir 22
. İfadeyi değerlendirdiğinde, 5 + 17
iki sayı eklediğinizi algılar ve sonuç da aynı int
türde olur. Bu nedenle, tür dönüştürme ücretsiz olarak yapılır ve 22
sonuç olarak döndürülür input
ve data
değişkente saklanır . Bir çağrı ile bestelenmiş input
olarak düşünebilirsiniz .raw_input
eval
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
Not:input
Python 2.x kullanırken dikkatli olmalısınız . Bu cevapta kişinin onu kullanırken neden dikkatli olması gerektiğini anlattım .
Ancak, raw_input
girdiyi değerlendirmez ve olduğu gibi bir dize olarak döndürür.
>>> 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'ler input
ve Python 2.x'ler raw_input
benzerdir ve Python 3.x'te raw_input
mevcut değildir.
>>> 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'>)
Çözüm
Python 3.x değerlendirmek ve veri türüne dönüştürmek olmadığından, açıkça dönüştürmek zorunda sorunuzu cevaplamak için int
birlikte s int
böyle,
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
Herhangi bir tabanın numaralarını kabul edebilir ve int
bu gibi bir işlevle doğrudan taban-10'a dönüştürebilirsiniz.
>>> 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
İkinci parametre, girilen sayıların tabanının ne olduğunu söyler ve sonra dahili olarak onu anlar ve dönüştürür. Girilen veriler yanlışsa bir atar 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'
Kesirli bir bileşene sahip olabilen değerler için, tür float
yerine int
:
x = float(input("Enter a number:"))
Bunun dışında, programınız biraz değiştirilebilir, bu şekilde
while True:
...
...
if input("Play again? ") == "no":
break
Sen kurtulabilirsiniz play
kullanarak değişken break
ve while True
.