Python yorumlayıcısına 1'den fazla satırın kodunu nasıl yazarım?


35

Terminalde Python'u kodlarken bir sorunum var. Sadece temel bilgileri öğreniyorum, bu yüzden .py dosyaları oluşturmaya ihtiyacım yok.

Terminalde Python yorumlayıcısında bir kod satırı çalıştırabilirim, ancak birden fazla satırı nasıl yazabilirim?

Belli ki enter'a basarsam, komuta girer ve bir satır aşağı gitmez.

Sadece terminalde aşağıdakileri test etmek istiyorum:

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

1
'Girinti' ile ilgili sorunlarınız olduğundan şüpheleniyorum. A. 'python' yazın. B. >>> geliyor. C. Bir betiği çalıştırmak için betiğin 'sekmelerle' doğru şekilde girilmesi gerekir.
r4.

3
Öğrenmenin doğru olup olmadığını sormadım… Belirli bir soru sordum, cevabı biliyorsanız lütfen… eğer değilse ...

Yanıtlar:


32

Sonunda ters eğik çizgi ekleyin ( \)

İşin püf noktası - yapacağınız şeye benzer bash, örneğin - sonunda bir ters eğik çizgi eklemek. Örneğin, bir baskı almak istersem 1:

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

Bir yazarsanız \, Python sizden ...(devam satırları) bir sonraki satırda kod girmenizi isteyecektir , yani.

Not: Bu, bir işlev veya sınıf tanımı oluşturduğunuzda, yani gerçekten yeni bir satıra ihtiyaç duyduğunuz zamanlarda otomatik olarak gerçekleşen şeydir , bu nedenle bunun için gerçekten iyi bir kullanım veya en azından bildiğim hiçbir şey yoktur. Başka bir deyişle, Python, yeni bir fonksiyon tanımına veya benzer yapılara (örn. if:) Girerken devam satırlarına ihtiyaç duyduğunuzu anlayacak kadar akıllıdır . Bu otomatik durumlarda, \Python'a yaptığınızı bildirmek için kullanarak boş bir satır girmeniz gerektiğini unutmayın .

Her şey için, birbiri ardına bir satır yazmanız gerekir. Bir tercümanın çalışma şekli, onu beslediğiniz her satırı yorumlar. Daha fazla değil, daha az değil. Sadece yeni bir satır gördüğünde "hareket eder" ve bu nedenle tercümana verdiğiniz şeyi yapmasını söyler. Tek ters eğik çizgi, tercümanın yeni bir satır karakteri almasını önler (yani, gerçekten bastığınızı bilmez Enter), ancak sonunda bir tane alır.

Python'un tercümanı, bir satır içinde gezinmek için Emacs veya vi tarzı tuş bağlamaları gibi GNU okuma çizgisini kullandığınızda gelişmiş yeteneklere sahiptir (örn. Ctrl-A). Ancak bunlar yalnızca bir satırda çalışır. Tarih de var, sadece basmaya çalışın .

Ya tekrar tekrar karmaşık çizgiler uygulamak istersem?

Bir seferde birden fazla kod satırı çalıştırmak istiyorsanız, muhtemelen uygun kaynak dosyaları kullanmak istersiniz.

Veya yerleşik bir tercümanla Python kodu oluşturmak için harika, etkileşimli bir yol sunan Jupyter dizüstü bilgisayarlarını kullanın . Bir kaynak kod düzenleyicide olduğu gibi kod yazabilirsiniz, ancak hangi satırların birlikte yorumlanacağını seçebilirsiniz. Ardından, kodun yalnızca bir bölümünü seçerek çalıştırabilirsiniz. En iyi yol, bunun iş akışınıza uyup uymadığını görmek.


:) ilk satır için güzel çalışır, ama daha fazla satır istersem ne olur? ikinci sondaki ters eğik çizgi sözdizimi hatası veriyor.

Yani tam olarak ne değil çalışma? Sadece bu satırları seçip kopyalayın, ardından terminale yapıştırın. Yeni satır yorumlayıcı tarafından ayrıştırıldığından, tıpkı bir komut dosyasındaki gibi yukarıdan aşağıya doğru yürütülürler. Sorun ne
slhck

1
Bunları editöre yazmak yerine doğrudan terminale yazmak ve oraya yapıştırmak istiyorum ... zaman kaybı gibi görünüyor :)

O zaman birbiri ardına sadece bir satır yazmanız gerekir. Başka yol yok. Bu bir tercüman. Devam hatlarını sadece gerçekten ihtiyaç duyduğunuzda isteyecektir.
slhck

7

Kullanmaya ne dersin ;\? Noktalı virgül bir komutun sonunu ve ters eğik çizgi bir sonraki satırda devam ettiğimizi gösterir. Örneğin, pythonPython yorumlayıcısına girmek için komut satırına, ardından

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

çıktısını vermeli

0
4

2

Basitçe söylemek gerekirse, öğrenmek ve birden fazla satır çalıştırmak istiyorsanız, onu bir .py dosyasına yazarsınız.

Sonunda ters eğik çizgi yöntemi hızlı bir şekilde bir dizi komut çalıştırmak istediğinizde iyidir, ancak öğrenirken yardımcı olmaz.

Daha iyi kod geliştirebilecek, yazım hatalarından endişe etmeden bireysel komutları düzenleyebilecek ve küçük bir dosyaya yazarsanız yararlı bulduğunuz kod parçacıklarını yeniden kullanabileceksiniz.


1
Evet katılıyorum. Ama ben temel seviyedeyim. Faydalı bir şey yazmam, sadece aptal değişken testleri ve matematik vb. Yazmam. Dosya oluşturmaya bile değmez. Tavsiye için teşekkür ederim.

Basit matematik bile bir dosyaya koymaya değer - eğer 3 ya da daha fazla satır varsa vi'da kendim yaparım. Öyle olsa bile, daha sonra ne yaptığımı merak ediyorum.
Rory Alsop,

1

Aşağıdakileri kabuk istemime yazdım ve gayet iyi çalıştı:

$ 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
>>> 

Etkileşimli Python yorumlayıcısında birden fazla kod satırı yazmanın yolu, etkileşimli Python yorumlayıcısında birden fazla kod satırı yazmanın yoludur. Bunun amaçlarınız için yeterince iyi olacağını düşünüyorum.

Her satırdan sonra yeni bir bilgi istemi alacağınız doğrudur, yani kod satırlarınızdan ikisi çıktı üretiyorsa, bu çıktı bilgi istemleri ile ayrılacaktır. Sanırım endişelendiğin şey bu, ancak sorunuzdaki örnek şunu önermiyor:

$ 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
>>> 

Bu bir sorunsa, birden çok ifadenizi (doğru girintili!) Bir ififadeye dahil edebilirsiniz:

$ 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
>>> 

(Sorunuzu cevaplamamasına rağmen, bunun için yeterince karmaşık bir kod yazıyorsanız, senaryo yazmanız gerektiğini öneririm. Belki de bunu bir buçuk yıl içinde yapmaya başladınız. soruyu yayınladığından beri.)


0

Cevaplarınızdan sadece geçiyordum. Farklı semboller koyarak denemeye devam ettim. Sonunda yazmak için doğru sözdizimini elde ettim.

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

bu size bir sonuç verecek

more string

3

hatasız

az önce kullandım ';' başka bir satıra yazmak

umarım cevabım size yardımcı olabilir


0

Sadece kabuğu bırakın ve yeni bir editör dosyası açın. Yani dosyaya gidip yeni dosya aç. İstediğiniz kadar kod satırı yazın.


-2

Üç noktadan, bir sonraki komutu girmeden önce "sekme" tuşuna bastığınızdan emin olun. Bu şekilde birçok komut yazmaya devam edebilirsiniz. Böylece, ikinci kod satırınızı yazdıktan sonra enter tuşuna bastığınızda, tercüman üçüncü kod satırını girmenizi sağlar ... aşağıdaki Fibonacci örneğinde olduğu gibi (öğreticiden):

a, b = 0,1 iken b <10: ... print (b) # Noktalardan hemen sonra print komutunu girerseniz ve sonunda enter tuşuna basarsanız, bir girinti hatası alırsınız. Bunun yerine üç noktadan sonra sekmeye basın, ardından kodunuzu yazın ve enter tuşuna basın, üçüncü kod satırını girmenize izin verir. Aşağıdaki örneğe bakın (öğreticiden):

a, b = 0,1 # Enter tuşu ile takip edilirken b <10: # Enter tuşu ile takip edilir ... yazdır (b) # Enter tuşu ile takip edilir. Üç noktadan sonra sekmeye dikkat edin ... a, b = b, a + b # Enter tuşu ile takip edin ... enter tuşu # Girilecek başka komut yok

Yukarıdaki programın sonucunu göreceksiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.