TLDR
- Python 3 ไม่ได้ประเมินข้อมูลที่ได้รับจาก
input
ฟังก์ชั่น แต่input
ฟังก์ชั่นของ Python 2 ทำ (อ่านหัวข้อถัดไปเพื่อทำความเข้าใจเกี่ยวกับความหมาย)
- Python 2 ที่เทียบเท่ากับ Python 3
input
คือraw_input
ฟังก์ชั่น
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 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
พารามิเตอร์ที่สองจะบอกสิ่งที่เป็นฐานของตัวเลขที่ป้อนแล้วภายในเข้าใจและแปลงมัน หากข้อมูลที่ป้อนผิดจะมีการ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'
สำหรับค่าที่สามารถมีองค์ประกอบที่เป็นเศษส่วนชนิดจะfloat
มากกว่าint
:
x = float(input("Enter a number:"))
นอกเหนือจากนั้นโปรแกรมของคุณสามารถเปลี่ยนแปลงได้เล็กน้อยเช่นนี้
while True:
...
...
if input("Play again? ") == "no":
break
คุณจะได้รับการกำจัดของplay
ตัวแปรโดยใช้และbreak
while True