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 ไม่ได้ประเมินและแปลงชนิดข้อมูลคุณจะต้องแปลงเป็น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
พารามิเตอร์ที่สองจะบอกสิ่งที่เป็นฐานของตัวเลขที่ป้อนแล้วภายในเข้าใจและแปลงมัน หากข้อมูลที่ป้อนผิดจะมีการ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ตัวแปรโดยใช้และbreakwhile True