कैसे अजगर (या किसी भी भाषा) में इस लागू करने के बारे में सोच से पहले की सुविधा देता है स्यूडोकोड है, जो समस्या को हल करने के लिए एक बहुत अच्छी योजना की तरह दिखता है पर नजर डालें।
मुझे लगता है कि होता है कि एक बात आप पर अटक हो सकता है जिस तरह से स्यूडोकोड संदर्भ देता है चर , जैसे highऔर low। चर को समझने के लिए जिस तरह से उन्हें उस मान संग्रहीत किया जा सकता स्लॉट्स विचार करना है। किसी भी समय, एक चर संख्या 5, या एक खुले फ़ाइल का संदर्भ जैसे कुछ मूल्य, है। यही कारण है कि मूल्य अपने नाम का उपयोग करके किसी भी समय बुलाया जा सकता है, या यह यह करने के लिए बताए द्वारा एक नया मान दिया जा सकता है, और पुराने मूल्य इसकी जगह ले जा नए मान के साथ भुला दिया जाएगा।
स्यूडोकोड तीन चर, का संदर्भ high, lowऔर tries। यह भी बताता है कि उनकी प्रारंभिक मान होना चाहिए। बाद दूसरी पंक्ति निष्पादित किया गया है, उन मूल्यों को 1000, 1 और 1, के लिए क्रमश: स्थापित कर रहे हैं, लेकिन वे नए मूल्यों पर ले के रूप में कार्यक्रम की प्रगति।
स्यूडोकोड की एक अन्य विशेषता एक सशर्त पाश, और उपयोगकर्ता इनपुट के एक मामले विश्लेषण है। स्यूडोकोड के पाश की आपके अनुवाद सही नहीं है। आपके मामले में, आप एक नया चर बनाया है, iऔर 1 और 1000 के बीच मैं के हर मूल्य के साथ पाश शरीर को चलाने के लिए अपने कार्यक्रम निर्देश दिए हैं जाहिर है इस स्यूडोकोड से कोई लेना देना एक पूरी बहुत कुछ नहीं है।
इसके बजाय आप क्या करना चाहते हैं, पाश हमेशा के लिए है जब तक कुछ हालत (जो पाश शरीर में आने वाले बदलाव) झूठे हो जाता है। अजगर में, whileबयान करता है। आप एक से परिचित हैं, ifबयान, whileएक ही है, लेकिन बाद शरीर से किया जाता है, हालत फिर से मूल्यांकन किया जाता है और यदि यह अभी भी सच है शरीर फिर से मार डाला जाता है।
अंत में, लूप के शरीर में मामला विश्लेषण कुछ की तुलना मूल्यों की उम्मीद की आवश्यकता है। हालांकि कुछ अन्य भाषाओं इस व्यक्त करने के तरीके की एक संख्या है, अजगर में हम केवल if- elif- elseखंड।
कोड काम करने के लिए स्यूडोकोड बदलने के बाहर, यह शायद समझने के लिए कार्यक्रम वास्तव में क्या कर रही है उपयोगी है। यहाँ मुख्य लाइन 4, जहां कार्यक्रम दो मानों का औसत अनुमान लगा लेता है पर है। उसके बाद कार्यक्रम पर कितनी अच्छी तरह अनुमान बाहर काम किया कार्य करता है।
लूप के माध्यम से पहली बार चलाने, साथ में high1000 से युक्त और low1 युक्त, औसत 500 (वास्तव में औसत 500.5 है, लेकिन है कि हम पूर्ण संख्याओं, अजगर अनुमान है कि हम विभाजन का परिणाम चाहते भी एक पूर्णांक होना करने के लिए औसत रहे हैं के बाद से )। जाहिर है कि अनुमान सही होने का केवल एक 0.1% मौका है, लेकिन अगर यह गलत है, उपयोगकर्ता हमें बताने के लिए अगर यह बहुत अधिक है, या बहुत कम था की उम्मीद है। किसी भी तरह से, कि इस सवाल का जवाब पूरी तरह से संभव अनुमान का 50% समाप्त करता है।
, तो उदाहरण के लिए, उपयोगकर्ता एक कम संख्या के बारे में सोच रहा था, तो जब कार्यक्रम अनुमान लगाया 500, उपयोगकर्ता प्रोग्राम है जो 500 बहुत अधिक थी, और उसके बाद प्रोग्राम कभी लगता है कि संख्या में था नहीं होगा कहते थे 1000 के माध्यम से 501 की सीमा यह है कि कंप्यूटर बहुत काम बचा सकता है।
उपयोग करने के लिए है कि जानकारी रखने के लिए, कार्यक्रम संभावित मान लक्ष्य नंबर हो सकता है की सीमा का ध्यान रखती है। जब संख्या अनुमान लगाया बहुत अधिक है, कार्यक्रम को समायोजित कर इसकी ऊपरी सीमा नीचे, बस अनुमान नीचे है, और अगर अनुमान बहुत कम थी, इस कार्यक्रम को समायोजित कर इसकी कम ऊपर की ओर बंधे हुए सिर्फ अनुमान से ऊपर है।
जब कार्यक्रम फिर से लगा ले, अनुमान सही संभव सीमा के बीच में है, फिर छमाही में सीमा काटने। संभव अनुमान की संख्या मूल 1000 से 500 एक अनुमान में, 250 के लिए दो अनुमान में चला गया। कार्यक्रम भयानक भाग्य है, और न यह दो (जो वास्तव में बहुत संभावना है) तो तिहाई से प्राप्त कर सकते हैं, तो यह केवल 125 संख्या के बारे में चिंता करने के लिए छोड़ दिया है। चौथे अनुमान के बाद, केवल 62 नंबर रेंज में रहते हैं। यह जारी है, और आठ अनुमान के बाद, केवल 3 संख्या रहते हैं, और कार्यक्रम नौवें अनुमान के लिए मध्य संख्या कोशिश करता है। अगर ऐसा पता चला है गलत हो सकता है, केवल एक संख्या छोड़ दिया है, और इस कार्यक्रम में यह अनुमान लगा लेता है!
छमाही में एक सीमा के बंटवारे और उसके बाद करीब आधे के लिए जारी रखने की इस तकनीक कहा जाता है द्विभाजन और कंप्यूटर विज्ञान के लिए ब्याज की एक विस्तृत श्रृंखला विषयों में प्रकट होता है।
कैसे कुछ कोड के बारे में! के बाद से मैं सीखने के अनुभव के वंचित नहीं करना चाहता, मैं सिर्फ तुम कुछ के टुकड़े है कि आप के साथ मदद कर सकता है दे देंगे। अजगर इंटरैक्टिव अन्वेषण के लिए बनाया गया एक भाषा है, इसलिए अपने दुभाषिया ऊपर आग और यह एक शॉट दे। मैं दिखाया संकेतों के साथ उदाहरण है, वास्तव में टाइप न करें कि पोस्ट करेंगे।
यहाँ का उपयोग कर एक उदाहरण है whileखंड:
>>> x = 1000
>>> while x > 1:
... x = x/2
... print x
...
500
250
125
62
31
15
7
3
1
>>> x
1
उपयोगकर्ता से सांत्वना इनपुट हो रही है के माध्यम से किया जाना चाहिए raw_input()कार्य करते हैं। यह सिर्फ जो कुछ उपयोगकर्ता प्रकार देता है। यह एक छोटे से दिखाने के लिए कठिन है। चीजों को आसान बनाने के लिए, कि इनपुट की आवश्यकता है, मैं टाइप करता हूँ अजगर के हर पंक्ति के बाद "नमस्ते दुनिया!" (बिना उद्धरण)
>>> raw_input()
Hello World!
'Hello World!'
>>> y = raw_input()
Hello World!
>>> print y
Hello World!
>>>
कैसे अवधारणाओं में से कुछ के संयोजन के बारे में!
>>> myvar = ''
>>> while myvar != 'exit':
... myvar = raw_input()
... if myvar == 'apples':
... print "I like apples"
... elif myvar == 'bananas':
... print "I don't like bananas"
... else:
... print "I've never eaten", myvar
...
apples
I like apples
mangoes
I've never eaten mangoes
bananas
I don't like bananas
exit
I've never eaten exit
>>>
उफ़। वहाँ एक बग का छोटा सा। यदि आप इसे ठीक कर सकते हैं!