ฉันจะเขียนโค้ดมากกว่า 1 บรรทัดใน Python interpreter ได้อย่างไร


35

ฉันมีปัญหาในการเขียนโค้ด Python ใน terminal ฉันแค่เรียนรู้พื้นฐานดังนั้นฉันไม่จำเป็นต้องสร้างไฟล์. py

ในเทอร์มินัลฉันสามารถรันโค้ดหนึ่งบรรทัดในล่าม Python แต่ฉันจะเขียนมากกว่าหนึ่งบรรทัดได้อย่างไร

เห็นได้ชัดว่าถ้าฉันกด Enter มันจะเข้าสู่คำสั่งและจะไม่ลงบรรทัด

ฉันแค่ต้องการทดสอบต่อไปนี้ใน terminal:

my_age = 35
my_eyes = 'Blue'
print "my age is %d and my eye color is %s" % (my_age, my_eyes)

1
ฉันสงสัยว่าคุณกำลังมีปัญหากับ 'การเยื้อง' A. พิมพ์ 'หลาม' B. >>> เกิดขึ้น C. ในการเรียกใช้สคริปต์สคริปต์จะต้องมีการเยื้องอย่างเหมาะสมด้วย 'แท็บ'
r4

3
ฉันไม่ได้ถามว่าวิธีการเรียนรู้ของฉันนั้นถูกต้องหรือไม่ ... ฉันถามคำถามเฉพาะถ้าคุณรู้คำตอบโปรด ... ถ้าไม่ใช่ ...

คำตอบ:


32

เพิ่มเครื่องหมายแบ็กสแลชต่อท้าย ( \)

เคล็ดลับคือ - คล้ายกับสิ่งที่คุณจะทำbashเช่นเพื่อเพิ่มแบ็กสแลชต่อท้าย ตัวอย่างเช่นถ้าฉันต้องการพิมพ์1:

charon:~ werner$ python
>>> print 1
1
>>> print \
... 1
1
>>> 

ถ้าคุณเขียน a \, Python จะพร้อมท์ให้คุณ...(บรรทัดการต่อเนื่อง) เพื่อป้อนรหัสในบรรทัดถัดไปดังนั้นจะพูด

หมายเหตุด้านข้าง: นี่คือสิ่งที่จะเกิดขึ้นโดยอัตโนมัติเมื่อคุณสร้างฟังก์ชั่นหรือคำจำกัดความของคลาสเช่นเวลาที่คุณต้องการบรรทัดใหม่ดังนั้นจึงไม่มีการใช้ที่ดีเลยสำหรับสิ่งนั้นหรืออย่างน้อยก็ไม่มีใครรู้ กล่าวอีกนัยหนึ่ง Python ฉลาดพอที่จะทราบว่าคุณต้องการบรรทัดต่อเนื่องเมื่อคุณป้อนคำนิยามฟังก์ชันใหม่หรือโครงสร้างที่คล้ายกันอื่น ๆ (เช่นif:) ในกรณีอัตโนมัติเหล่านี้โปรดทราบว่าคุณต้องป้อนบรรทัดว่างโดยใช้\เพื่อบอก Python ว่าคุณทำเสร็จแล้ว

สำหรับทุกสิ่งทุกอย่างคุณต้องเขียนหนึ่งบรรทัดหลังจากนั้นอีกหนึ่งบรรทัด วิธีการทำงานของล่ามก็คือมันแปลความหมายทุกบรรทัดที่คุณป้อน ไม่มากไม่น้อย มันจะ "ลงมือทำ" เมื่อเห็นข้อความขึ้นบรรทัดใหม่ดังนั้นให้บอกล่ามเพื่อดำเนินการตามที่คุณให้ไว้ แบ็กสแลชเดี่ยวจะป้องกันไม่ให้ล่ามได้รับอักขระขึ้นบรรทัดใหม่ (นั่นคือจะไม่ทราบว่าคุณกดจริงEnter) แต่ในที่สุดจะได้รับหนึ่งตัว

ล่าม Python มีความสามารถขั้นสูงเมื่อคุณใช้ readline GNU เช่น Emacs หรือปุ่มลัดแบบ vi เพื่อนำทางภายในบรรทัด (เช่นCtrl-A) อย่างไรก็ตามสิ่งเหล่านี้ใช้ได้เฉพาะในบรรทัดปัจจุบันเท่านั้น ประวัติความเป็นมามีเช่นกันเพียงแค่พยายามและกด

ถ้าฉันต้องการเรียกใช้บรรทัดที่ซับซ้อนซ้ำแล้วซ้ำอีก

คุณอาจต้องการใช้ไฟล์ต้นฉบับที่เหมาะสมหากคุณต้องการรันโค้ดมากกว่าหนึ่งบรรทัดในเวลาเดียวกัน

หรือใช้สมุดบันทึก Jupyterซึ่งเป็นวิธีการโต้ตอบที่ยอดเยี่ยมในการสร้างรหัส Python พร้อมล่ามในตัว คุณสามารถเขียนโค้ดตามที่คุณต้องการในเครื่องมือแก้ไขซอร์สโค้ด แต่คุณสามารถเลือกบรรทัดที่ตีความร่วมกันได้ จากนั้นคุณสามารถเรียกใช้เฉพาะบางส่วนของรหัสที่เลือก วิธีที่ดีที่สุดคือลองและดูว่าเหมาะกับเวิร์กโฟลว์ของคุณหรือไม่


:) ใช้งานได้ดีกับบรรทัดแรก แต่ถ้าฉันต้องการบรรทัดเพิ่มเติม แบ็กสแลชต่อท้ายที่สองให้ข้อผิดพลาดทางไวยากรณ์

ดังนั้นสิ่งที่ไม่ทำงาน? เพียงเลือกและคัดลอกบรรทัดเหล่านั้นจากนั้นวางลงในเทอร์มินัล พวกเขาจะดำเนินการจากบนลงล่างเช่นเดียวกับในสคริปต์เนื่องจากขึ้นบรรทัดใหม่จะแยกวิเคราะห์โดยล่าม ปัญหาคืออะไร
slhck

1
ฉันต้องการพิมพ์สิ่งเหล่านี้โดยตรงใน terminal แทนที่จะเขียนลงใน editor และวางไว้ที่นั่น ... ดูเหมือนว่าจะเสียเวลา :)

จากนั้นคุณต้องพิมพ์หนึ่งบรรทัดหลังจากนั้นอีกหนึ่งบรรทัด ไม่มีวิธีอื่น มันเป็นล่าม มันจะแจ้งให้คุณสำหรับสายต่อเนื่องเฉพาะเมื่อคุณต้องการพวกเขาจริงๆ
slhck

7

วิธีการเกี่ยวกับการใช้งาน;\? เซมิโคลอนส่งสัญญาณการสิ้นสุดของคำสั่งและเครื่องหมายแบ็กสแลชที่เรากำลังดำเนินการในบรรทัดถัดไป ตัวอย่างเช่นพิมพ์pythonที่บรรทัดคำสั่งเพื่อเข้าสู่ Python interpreter แล้ว

>>> x=0 ;\
... print(x) ;\
... x=4 ;\
... print(x)

ควรให้ผลลัพธ์ของ

0
4

2

เพียงแค่ใส่ถ้าคุณต้องการเรียนรู้และต้องการเรียกใช้มากกว่าหนึ่งบรรทัดคุณเขียนมันลงในไฟล์. py

วิธีแบ็กสแลชต่อท้ายนั้นดีเมื่อคุณต้องการเรียกใช้ชุดคำสั่งอย่างรวดเร็ว แต่ก็ไม่ได้ช่วยอะไรเมื่อคุณกำลังเรียนรู้

คุณจะสามารถพัฒนาโค้ดได้ดีขึ้นแก้ไขคำสั่งแต่ละคำสั่งโดยไม่ต้องกังวลเกี่ยวกับการสะกดผิดและนำโค้ดตัวอย่างที่คุณพบว่ามีประโยชน์มาใช้หากคุณเขียนมันลงในไฟล์ขนาดเล็ก


1
ใช่ฉันเห็นด้วย. แต่ฉันอยู่ในระดับพื้นฐาน ฉันไม่ได้เขียนอะไรที่มีประโยชน์เพียงแค่การทดสอบตัวแปรโง่ ๆ และคณิตศาสตร์เป็นต้นไม่มีอะไรที่คุ้มค่ากับการสร้างไฟล์ ขอบคุณสำหรับคำแนะนำว่า

แม้แต่คณิตศาสตร์อย่างง่ายก็คุ้มค่าที่จะใส่ไฟล์ - ถ้าเป็น 3 เส้นขึ้นไปฉันจะทำมันด้วยตัวเอง แม้จะเป็นเช่นนั้นถ้าฉันสงสัยว่าฉันทำอะไรในภายหลัง
Rory Alsop

1

ฉันเพิ่งพิมพ์สิ่งต่อไปนี้ที่ shell prompt และมันใช้ได้ดี:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> my_age = 35
>>> my_eyes = 'Blue'
>>> print "my age is %d and my eye color is %s" % (my_age, my_eyes)
my age is 35 and my eye color is Blue
>>> 

วิธีพิมพ์รหัสมากกว่าหนึ่งบรรทัดในล่าม Python แบบโต้ตอบก็คือการพิมพ์รหัสมากกว่าหนึ่งบรรทัดในล่าม Python แบบโต้ตอบ ฉันคิดว่ามันจะดีพอสำหรับวัตถุประสงค์ของคุณ

เป็นความจริงที่ว่าคุณจะได้รับพรอมต์ใหม่หลังจากแต่ละบรรทัดซึ่งหมายความว่าหากโค้ดสองบรรทัดของคุณสร้างเอาต์พุตเอาต์พุตนั้นจะถูกคั่นด้วยพรอมต์ ฉันเดาว่าเป็นสิ่งที่คุณกังวล แต่ตัวอย่างในคำถามของคุณไม่ได้แนะนำว่า:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "first line"
first line
>>> print "second line"
second line
>>> 

หากเป็นปัญหาคุณสามารถแนบคำสั่งหลายรายการของคุณในคำสั่ง (เยื้องอย่างถูกต้อง!) if:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1:
...     print "first line"
...     print "second line"
... 
first line
second line
>>> 

(ฉันขอแนะนำให้แม้ว่ามันจะไม่ตอบคำถามของคุณว่าถ้าคุณกำลังเขียนโค้ดที่ซับซ้อนเพียงพอสำหรับเรื่องนี้คุณควรจะเขียนสคริปต์บางทีคุณอาจเริ่มทำเช่นนี้ในปีครึ่ง เนื่องจากคุณโพสต์คำถาม)


0

ฉันเพิ่งจะได้คำตอบที่คุณได้รับฉันยังคงทำการทดลองโดยการใส่สัญลักษณ์ที่แตกต่างกันในที่สุดฉันก็มีไวยากรณ์ที่ถูกต้องในการเขียนมันลองต่อไปนี้

print("more string") ; print(3)

สิ่งนี้จะทำให้คุณได้ผลลัพธ์

more string

3

โดยไม่มีข้อผิดพลาดใด ๆ

ฉันเพิ่งใช้ ';' เพื่อให้เขียนในอีกบรรทัด

ฉันหวังว่าคำตอบของฉันอาจช่วยคุณได้


0

เพียงแค่ปล่อยเปลือกและเปิดไฟล์ใหม่ เช่นไปที่ไฟล์และเปิดไฟล์ใหม่ เขียนโค้ดได้หลายบรรทัดตามที่คุณต้องการ


-2

ที่จุดสามจุดตรวจสอบให้แน่ใจว่าได้กดปุ่ม "แท็บ" ก่อนที่คุณจะป้อนคำสั่งถัดไป คุณสามารถเขียนคำสั่งได้มากเท่าที่ทำได้ ดังนั้นเมื่อคุณกด Enter หลังจากเขียนโค้ดบรรทัดที่สองแล้วล่ามจะช่วยให้คุณป้อนรหัสบรรทัดที่สาม ... เช่นในตัวอย่าง Fibonacci ด้านล่าง (จากบทช่วยสอน):

a, b = 0,1 ในขณะที่ b <10: ... print (b) # หากคุณป้อนคำสั่งพิมพ์ทันทีหลังจากจุดและกดปุ่ม Enter ในตอนท้ายคุณจะได้รับข้อผิดพลาดในการเยื้อง กดแท็บหลังจุดสามจุดแทนจากนั้นเขียนรหัสของคุณและกดปุ่ม Enter มันจะทำให้คุณป้อนรหัสบรรทัดที่สามเป็นต้น ดูตัวอย่างด้านล่าง (จากบทช่วยสอน):

a, b = 0,1 # ตามด้วยปุ่ม Enter ในขณะที่ b <10: # ตามด้วยปุ่ม enter ... พิมพ์ (b) # ตามด้วยปุ่ม Enter สังเกตแท็บหลังจุดสามจุด ... a, b = b, a + b # ตามด้วยคีย์ Enter ... ป้อนคีย์ # ไม่มีคำสั่งให้ป้อนอีก

คุณจะเห็นผลลัพธ์ของโปรแกรมข้างต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.