मैं पायथन दुभाषिया में 1 से अधिक पंक्ति का कोड कैसे लिखूं?


35

मुझे टर्मिनल में पायथन को कोड करने में समस्या है। मैं सिर्फ बेसिक्स सीख रहा हूं इसलिए मुझे .py फाइलें बनाने की कोई जरूरत नहीं है।

टर्मिनल में मैं पायथन इंटरप्रेटर में कोड की एक लाइन चला सकता हूं, लेकिन मैं एक से अधिक लाइन कैसे लिखूं?

जाहिर है कि अगर मैं एंट्री मारता हूं, तो यह कमांड में प्रवेश करता है और एक लाइन से नीचे नहीं जाता है।

मैं टर्मिनल में निम्नलिखित परीक्षण करना चाहता हूं:

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

1
मुझे संदेह है कि आपको 'इंडेंटेशन' की समस्या है। A. टाइप 'अजगर'। बी >>> आता है। C. एक स्क्रिप्ट को चलाने के लिए स्क्रिप्ट को 'टैब' के साथ ठीक से इंडेंट करना होगा।
आर 4।

3
मैंने यह नहीं पूछा कि क्या मेरा तरीका सही है या नहीं, सीखने के लिए ... मैंने एक विशिष्ट प्रश्न पूछा, यदि आप उत्तर जानते हैं तो कृपया ... यदि नहीं ...

जवाबों:


32

अनुगामी बैकस्लैश जोड़ें ( \)

ट्रिक यह है - कि आप क्या करेंगे bash, उदाहरण के लिए - एक अनुगामी बैकलैश जोड़ने के लिए। उदाहरण के लिए, यदि मैं एक प्रिंट करना चाहता हूं 1:

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

यदि आप एक लिखते हैं \, तो पायथन आपको ...अगली पंक्ति में कोड दर्ज करने के लिए (निरंतरता रेखाओं) के साथ संकेत देगा , ऐसा कहने के लिए।

साइड नोट: यह तब होता है जब आप किसी फ़ंक्शन या क्लास की परिभाषा बनाते हैं, यानी वह समय जब आपको वास्तव में एक नई लाइन की आवश्यकता होती है, इसलिए उसके लिए वास्तव में अच्छा उपयोग नहीं होता है, या कम से कम कोई भी ऐसा नहीं होता है जिसके बारे में मुझे पता है। दूसरे शब्दों में, पायथन काफी जागरूक है कि आपको एक नई फ़ंक्शन परिभाषा या अन्य समान निर्माण (जैसे if:) दर्ज करते समय निरंतरता लाइनों की आवश्यकता होती है । इन स्वचालित मामलों में, ध्यान दें कि आपको \पायथन को बताने के लिए एक खाली लाइन में प्रवेश करने की आवश्यकता है जो आप कर रहे हैं।

बाकी सब के लिए, आपको एक के बाद एक लाइन लिखने की जरूरत है। जिस तरह से एक दुभाषिया काम करता है वह यह है कि, अच्छी तरह से, प्रत्येक पंक्ति की व्याख्या करता है जो आप इसे खिलाते हैं। ज्यादा नहीं, कम नहीं। यह केवल "कार्य" करेगा जब यह एक नई रेखा देखता है, इसलिए दुभाषिया को यह बताने के लिए कि आपने इसे क्या दिया है। सिंगल बैकस्लैश दुभाषिया को कभी भी एक नया चरित्र प्राप्त करने से रोकेगा (यानी यह नहीं पता होगा कि आपने वास्तव में दबाया था Enter), लेकिन यह अंततः एक प्राप्त करेगा।

जब आप GNU रीडलाइन का उपयोग करते हैं तो पायथन के दुभाषिया में उन्नत क्षमताएं होती हैं, जैसे कि Emacs या vi-style कीबाइंडिंग एक लाइन के भीतर नेविगेट करने के लिए (जैसे Ctrl-A)। हालांकि वे केवल एक वर्तमान लाइन में काम करते हैं। इतिहास वहाँ भी है, बस कोशिश करो और दबाओ

क्या होगा यदि मैं जटिल लाइनों को बार-बार चलाना चाहता हूं?

यदि आप एक बार में एक से अधिक कोड निष्पादित करना चाहते हैं, तो आप शायद उचित स्रोत फ़ाइलों का उपयोग करना चाहते हैं।

या, Jupyter पुस्तिकाओं का उपयोग करें , जो कि अंतर्निहित दुभाषिया के साथ पायथन कोड बनाने के लिए एक शानदार, इंटरैक्टिव तरीका प्रदान करता है। आप एक सोर्स कोड एडिटर के रूप में कोड लिख सकते हैं, लेकिन आप चुन सकते हैं कि किन लाइनों को एक साथ व्याख्या की गई है। फिर आप केवल चुनिंदा भागों के कोड चला सकते हैं। सबसे अच्छा तरीका है कि बस कोशिश करें और देखें कि क्या आपके वर्कफ़्लो में फिट बैठता है।


:) पहली पंक्ति के लिए अच्छा काम करता है, लेकिन क्या होगा अगर मुझे और लाइनें चाहिए? दूसरी अनुगामी बैकलैश वाक्यविन्यास त्रुटि देता है।

तो क्या वास्तव में काम नहीं कर रहा है? बस उन पंक्तियों को चुनें और कॉपी करें, फिर उन्हें टर्मिनल में पेस्ट करें। वे एक पटकथा की तरह ही ऊपर से नीचे तक निष्पादित करेंगे, क्योंकि नई व्याख्या दुभाषिया द्वारा पार्स की गई है। मामला क्या है?
12:54

1
मैं इन्हें सीधे टर्मिनल में लिखना चाहता हूँ, बजाय इसे संपादक में लिखने और वहाँ चिपकाने के ... समय की बर्बादी जैसा लगता है :)

फिर आपको बस एक के बाद एक लाइन टाइप करनी है। कोई अन्य रास्ता नहीं है। यह एक दुभाषिया है। यह आपको निरंतरता लाइनों के लिए तभी संकेत देगा जब आपको वास्तव में उनकी आवश्यकता होगी।
slhck

7

कैसे उपयोग करने के बारे में ;\? अर्धविराम एक कमांड के अंत का संकेत देता है और बैकस्लैश संकेत करता है कि हम अगली पंक्ति पर जारी हैं। उदाहरण के लिए, pythonपायथन इंटरप्रेटर में जाने के लिए कमांड लाइन पर टाइप करें

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

का आउटपुट देना चाहिए

0
4

2

सीधे शब्दों में कहें, अगर आप सीखना चाहते हैं और एक से अधिक लाइन चलाना चाहते हैं तो आप इसे एक .py फ़ाइल में लिखें।

जब आप जल्दी से आदेशों की एक श्रृंखला चलाना चाहते हैं, तो पीछे आने वाला तरीका अच्छा है, लेकिन जब आप सीख रहे होते हैं तो यह मदद नहीं करता है।

आप कोड को बेहतर तरीके से विकसित करने में सक्षम होंगे, वर्तनी की गलतियों के बारे में चिंता किए बिना व्यक्तिगत आदेशों को संपादित करें, और कोड स्निपेट का पुन: उपयोग करें यदि आप उन्हें एक छोटी सी फ़ाइल में लिखते हैं तो आपको उपयोगी लगता है।


1
हाँ मैं सहमत हूँ। लेकिन मैं बुनियादी स्तर पर हूं। मैं कुछ भी उपयोगी नहीं लिखता, बस बेवकूफ चर परीक्षण और गणित आदि कुछ भी नहीं एक फ़ाइल बनाने के योग्य है। मगर आपकी सलाह के लिए धन्यवाद।

यहां तक ​​कि साधारण गणित एक फाइल में डालने लायक है - अगर यह 3 या अधिक लाइनें हैं तो मैं इसे vi में खुद करूंगा। यहाँ तक कि अगर मैं आश्चर्यचकित हूँ कि मैंने बाद में क्या किया है।
रोरी अलसॉप

1

मैंने अपने शेल प्रॉम्प्ट पर निम्नलिखित टाइप किया, और यह ठीक काम किया:

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

अगले आदेश में प्रवेश करने से पहले तीन बिंदुओं पर "टैब" कुंजी हिट करना सुनिश्चित करें। आप इस तरह से कई कमांड्स लिखना जारी रख सकते हैं। इसलिए जब आप कोड की अपनी दूसरी पंक्ति लिखने के बाद प्रवेश करते हैं, तो दुभाषिया आपको कोड की तीसरी पंक्ति दर्ज करने देता है ... जैसे नीचे दिए गए फिबोनाची उदाहरण में (ट्यूटोरियल से):

a, b = 0,1 जबकि b <10: ... प्रिंट (b) # यदि आप डॉट्स के तुरंत बाद प्रिंट कमांड दर्ज करते हैं और अंत में एंटर कुंजी दबाते हैं, तो यू को इंडेंटेशन एरर मिलेगा। इसके बजाय तीन डॉट्स के बाद टैब को हिट करें, फिर अपना कोड लिखें और एंटर कुंजी दबाएं, यह आपको यू कोड की तीसरी लाइन और इतने पर प्रवेश करने देगा। नीचे दिए गए उदाहरण को देखें (ट्यूटोरियल से):

a, b = 0,1 # का पालन करते हुए दर्ज करें कुंजी, जबकि b <10: # दर्ज कुंजी द्वारा पीछा ... प्रिंट (b) # द्वारा दर्ज कुंजी दर्ज करें। तीन बिंदुओं के बाद टैब पर ध्यान दें ... ए, बी = बी, ए + बी # दर्ज कुंजी द्वारा पीछा किया ... कुंजी दर्ज करें # कोई आदेश दर्ज करने के लिए नहीं

आप उपरोक्त ठेले का परिणाम देखेंगे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.