import sys
print(sys.platform)
print(2**100)
raw_input()
ฉันใช้ Python 3.1 และไม่สามารถraw_input
"หยุด" ป๊อปอัป dos ได้ หนังสือที่ฉันกำลังอ่านสำหรับ Python 2.5 และฉันใช้ Python 3.1
ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้
import sys
print(sys.platform)
print(2**100)
raw_input()
ฉันใช้ Python 3.1 และไม่สามารถraw_input
"หยุด" ป๊อปอัป dos ได้ หนังสือที่ฉันกำลังอ่านสำหรับ Python 2.5 และฉันใช้ Python 3.1
ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้
คำตอบ:
เริ่มต้นกับงูหลาม 3 ถูกเปลี่ยนชื่อเป็นraw_input()
input()
จากมีอะไรใหม่ใน Python 3.0รายการในส่วนที่สอง
input()
จะนำอินพุตของผู้ใช้และใส่ไว้ในประเภทที่ถูกต้อง เช่น: ถ้าผู้ใช้พิมพ์ 5 ค่าจะเป็นจำนวนเต็ม 5 จะนำเข้าผู้ใช้และใส่เป็นสตริง เช่น: หากผู้ใช้พิมพ์ 5 ค่าจะเป็นสตริง '5' และไม่ใช่จำนวนเต็ม คิดว่ามันอาจเป็นข้อมูลที่ดีสำหรับมือใหม่ในงูใหญ่เหมือนตัวฉัน raw_input()
a = input()
a
a = raw_input()
a
สิ่งนี้ใช้ได้ใน Python 3.x และ 2.x:
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
มีโมดูลไม่มีชื่อ
__builtin__
ถูกเปลี่ยนชื่อเป็นbuiltins
ใน Python 3 ทั้งสองมีอยู่__builtins__
ใน CPython
getattr(__builtins__, 'raw_input', input)
ส่งกลับค่าเริ่มต้นเมื่อนำเข้าใน Python 2.7.2
ตามที่คนอื่น ๆ ระบุไว้raw_input
ฟังก์ชั่นถูกเปลี่ยนชื่อเป็นinput
Python 3.0 และคุณจะได้รับบริการที่ดีขึ้นจากหนังสือที่ทันสมัยกว่า แต่ฉันต้องการชี้ให้เห็นว่ามีวิธีที่ดีกว่าในการดูผลลัพธ์ของสคริปต์ของคุณ .
จากคำอธิบายของคุณฉันคิดว่าคุณกำลังใช้ Windows คุณได้บันทึก.py
ไฟล์จากนั้นคุณดับเบิลคลิกเพื่อเรียกใช้ หน้าต่างเทอร์มินัลที่ปรากฏขึ้นจะปิดลงทันทีที่โปรแกรมสิ้นสุดลงดังนั้นคุณจะไม่สามารถเห็นผลลัพธ์ของโปรแกรมของคุณได้ เพื่อแก้ปัญหานี้หนังสือของคุณแนะนำให้เพิ่มraw_input
/ input
คำสั่งเพื่อรอจนกว่าผู้ใช้กด อย่างไรก็ตามอย่างที่คุณเห็นถ้ามีอะไรผิดพลาดเช่นเกิดข้อผิดพลาดในโปรแกรมของคุณคำสั่งนั้นจะไม่ถูกเรียกใช้และหน้าต่างจะปิดลงโดยที่คุณไม่สามารถเห็นสิ่งที่ผิดพลาดได้ คุณอาจพบว่าการใช้ command-prompt หรือ IDLE ง่ายขึ้น
เมื่อคุณดูที่หน้าต่างโฟลเดอร์ที่มีโปรแกรม Python ของคุณกด shift ค้างไว้และคลิกขวาที่ใดก็ได้ในพื้นที่พื้นหลังสีขาวของหน้าต่าง เมนูที่ปรากฏขึ้นควรมีรายการ "หน้าต่างคำสั่งเปิดที่นี่" (ฉันคิดว่ามันใช้งานได้กับ Windows Vista และ Windows 7) นี่จะเปิดหน้าต่าง command-prompt ที่มีลักษณะดังนี้:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Weeble\My Python Program>_
ในการรันโปรแกรมของคุณให้พิมพ์ดังต่อไปนี้ (แทนที่ชื่อสคริปต์ของคุณ):
python myscript.py
... และกด Enter (หากคุณได้รับข้อผิดพลาดว่า "python" ไม่ใช่คำสั่งที่รู้จักให้ดูที่http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) เมื่อโปรแกรมของคุณทำงานเสร็จไม่ว่าจะสำเร็จหรือไม่ จะยังคงเปิดอยู่และพรอมต์คำสั่งจะปรากฏขึ้นอีกครั้งเพื่อให้คุณพิมพ์คำสั่งอื่น หากคุณต้องการเรียกใช้โปรแกรมของคุณอีกครั้งคุณสามารถกดลูกศรขึ้นเพื่อเรียกคืนคำสั่งก่อนหน้าที่คุณป้อนและกด Enter เพื่อเรียกใช้อีกครั้งแทนที่จะต้องพิมพ์ชื่อไฟล์ทุกครั้ง
IDLE เป็นเครื่องมือแก้ไขโปรแกรมอย่างง่ายที่มาพร้อมกับ Python ในบรรดาคุณสมบัติอื่น ๆ มันสามารถเรียกใช้โปรแกรมของคุณในหน้าต่าง คลิกขวาที่.py
ไฟล์ของคุณและเลือก "แก้ไขใน IDLE" เมื่อโปรแกรมของคุณปรากฏในโปรแกรมแก้ไขให้กด F5 หรือเลือก "Run module" จากเมนู "Run" โปรแกรมของคุณจะทำงานในหน้าต่างที่ยังคงเปิดอยู่หลังจากที่โปรแกรมของคุณสิ้นสุดลงและคุณสามารถป้อนคำสั่ง Python เพื่อให้ทำงานได้ทันที
pythonw -m idlelib.idle
โซลูชันของ Timmerman ใช้งานได้ดีเมื่อใช้รหัส แต่ถ้าคุณไม่ต้องการรับUndefined name
ข้อผิดพลาดเมื่อใช้ pyflakes หรือ linter ที่คล้ายกันคุณสามารถใช้สิ่งต่อไปนี้แทน:
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
Redefining built-in 'input' (redefined-builtin)
pylint: Unable to import '__builtin__' (import-error)
, Invalid constant name "input" (invalid-name)
,
flake8
หรือpyflakes
เพื่อไม่ให้ใช้เวลาทั้งวันด้วยคำเตือนที่ไร้ความหมาย
นี่คือส่วนหนึ่งของรหัสที่ฉันใส่ในสคริปต์ของฉันที่ฉันไม่ต้องการเรียกใช้ในสภาพแวดล้อมที่ไม่เชื่อเรื่องพระเจ้า py2 / 3:
# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)
ตอนนี้คุณสามารถใช้ real_raw_input มันค่อนข้างแพง แต่สั้นและอ่านง่าย การใช้อินพุตดิบมักใช้เวลาแพง (กำลังรออินพุต) ดังนั้นจึงไม่สำคัญ
ในทางทฤษฎีคุณสามารถกำหนด raw_input แทน real_raw_input แต่อาจมีโมดูลที่ตรวจสอบการมีอยู่ของ raw_input และทำงานตามนั้น มันจะดีกว่าอยู่ในด้านความปลอดภัย
อาจไม่ใช่วิธีที่ดีที่สุด แต่ก่อนที่ฉันจะมาที่นี่ฉันเพิ่งทำสิ่งนี้ได้ทันทีเพื่อทำงานต่อไปโดยไม่หยุดพักการเรียนอย่างรวดเร็ว
def raw_input(x):
input(x)
จากนั้นเมื่อฉันรันraw_input('Enter your first name: ')
สคริปต์ที่ฉันทำงานมันจะจับภาพตามที่input()
ต้องการ
อาจมีเหตุผลที่จะไม่ทำสิ่งนี้ฉันยังไม่เจอ!
raw_input = input
?