पाठ 2: While लूप का उपयोग करना
इस पाठ में, आप बम्पर सेंसर और whileलूप का उपयोग करके एक प्रोजेक्ट बनाएंगे। मिनी-चैलेंज में, आप दीवार भूलभुलैया की शुरुआत से अक्षर 'ए' तक नेविगेट करने के लिए इन कौशलों को लागू करेंगे।

सीखने के परिणाम
- पहचानें कि गैर-प्रतीक्षा कमांडों में परियोजना जारी रहती है, भले ही कमांड का व्यवहार अभी पूरा न हुआ हो।
- पहचानें कि प्रतीक्षा आदेश परियोजना को आगे बढ़ाने से पहले व्यवहार को पूरा करता है।
- पहचानें कि whileलूप बार-बार बूलियन स्थिति की जांच करेगा, और जब तक स्थिति True रिपोर्ट नहीं करती, तब तक अगले कमांड पर नहीं जाएगा।
- पहचानें कि सेंसर की स्थिति की जांच करने के लिए whileलूप का उपयोग नॉन-वेटिंग कमांड (जैसे ड्राइव) के साथ किया जाता है।
- पहचानें कि notकीवर्ड बूलियन शर्त के मान को सत्य से असत्य या असत्य से सत्य में बदल देता है।
- पहचानें कि left_bumper.pressedऔर right_bumper.pressedकमांड whileलूप में True या False मान लौटाते हैं।
- वर्णन करें कि एक ऐसा प्रोजेक्ट कैसे बनाया जाए जिसमें बम्पर सेंसर दबाए जाने तक VR रोबोट आगे बढ़ता रहे।
जबकि लूप्स
while लूप बूलियन शर्तों को स्वीकार करता है। जबकिलूप बार-बार बूलियन स्थिति की जांच करते हैं और परियोजना प्रवाह को नियंत्रित करते हैं। whileलूप तब तक लूपिंग जारी रखेगा जब तक कि शर्त& True है। while लूप, स्थिति के गलत होने पर, लूप से बाहर निकल जाएगा और लूप के बाहर अगले कमांड पर चला जाएगा।

अनिवार्य रूप से,whileलूप वीआर रोबोट को एक व्यवहार जारी रखने के लिए कह रहा हैजब तकएक निश्चित स्थिति पूरी नहीं हो जाती। तर्क इस परिदृश्य के समान है:जबसूरज चमक रहा हो, तो बाहर जाकर खेलो।तुम क्या करोगे? "सूरज चमक रहा है" की स्थिति यह निर्धारित करती है कि आपको कहाँ होना चाहिए। जब सूरज चमक रहा हो, तो स्थिति सही है, इसलिए आप बाहर खेलने जाते हैं। जब सूर्य अस्त हो जाता है, तो वह स्थिति असत्य हो जाती है, इसलिए आप वापस अन्दर आ जाते हैं।

जबकि लूप्स और दीवार भूलभुलैया समस्या
यही तर्क वॉल मेज़ में वीआर रोबोट पर भी लागू होता है। जबबम्परदबाया नहीं जाता, तब तक वीआर रोबोट को आगे बढ़ते रहना चाहिए। जब इसे दबाया जाए तो यह रुक जाना चाहिए या घूम जाना चाहिए। whileलूप्स को गैर-प्रतीक्षा आदेशों के साथ प्रयोग करके, जैसे कि drive, हम VR रोबोट को ऐसा करने के लिए कोड कर सकते हैं। हालाँकि, बम्पर सेंसर कमांड बम्पर सेंसर के दबाए जाने की स्थिति का उपयोग करते हैं (left_bumper.pressedया right_bumper.pressed)बम्पर सेंसर केन किदबाए जाने पर VR रोबोट को ड्राइव करने के लिए कोड करने के लिए, हमेंन किऑपरेटर का उपयोग करने की आवश्यकता है।
def main():
while not condition:
wait (5, MSEC)आपकी जानकारी के लिए
गैर-प्रतीक्षा और प्रतीक्षा आदेश यह निर्धारित करते हैं कि अगला आदेश कब व्यवहार शुरू करेगा। प्रतीक्षारत आदेश, जैसे drive_forऔर turn_for, परियोजना में अगले आदेश पर जाने से पहले अपना व्यवहार पूरा करते हैं। गैर-प्रतीक्षा आदेश, जैसे कि ड्राइवऔर टर्न, प्रोजेक्ट में अगले आदेश पर जाना जारी रखते हैं, भले ही गैर-प्रतीक्षा आदेश का व्यवहार पूरा न हुआ हो।
प्रतीक्षा आदेश
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)गैर-प्रतीक्षा आदेश
ड्राइवट्रेन.ड्राइव(आगे)
ड्राइवट्रेन.टर्न(दाएँ)नॉट कीवर्ड
notकीवर्ड का उपयोग आमतौर परwhileलूप के साथ किया जाएगा, ताकि लूप के अंदर कमांड निष्पादित हो सकें, जबकि स्थिति False लौटाती है। 'सूरज चमक रहा है' उदाहरण का उपयोग करने के लिए,न किऑपरेटर का उपयोग करके समान प्रभाव प्राप्त किया जा सकता है। जब सूर्यनहींचमक रहा हो, तो अंदर आ जाओ।

वॉल भूलभुलैया में, यह उपयोगी है ताकि हम वीआर रोबोट को कोड कर सकें ताकि जब बम्पर सेंसरपर हो न किपर, तो वह आगे बढ़ेगा। शर्त अभी भी यही है कि 'यदि बम्पर सेंसर दबाया गया है', लेकिन इस तरह, जब यह गलत (दबाया नहीं गया) रिपोर्ट करता है, तो परियोजना प्रवाह लूप में बना रहता है। जब बम्पर सेंसर दबाया जाता है, तो स्थिति सत्य हो जाती है, अतः परियोजना लूप से बाहर चली जाएगी।
आपकी जानकारी के लिए
not कीवर्ड एक तार्किक ऑपरेटर है जो बूलियन के मान को उलट देता है। बूलियन मान लौटाने वाले कमांड के सामनेnotकीवर्ड डालने से True को False में तथा False को True में बदल दिया जाएगा। उदाहरण के लिए, कल्पना करें कि VR रोबोट पर बायां बम्पर सेंसर दबाया गया है, और left_bumper.pressedकमांड True लौटाता है। notकीवर्ड बूलियन मान को उलट देगा, और इस अभिव्यक्ति को गलत लौटाएगा।
left_bumper.pressed() नहींआपके द्वारा उपयोग किए जा रहे सेंसर डेटा के आधार पर, वीआर रोबोट को वांछित व्यवहार निष्पादित करने के लिएनहीं बल्किकीवर्ड आवश्यक हो सकता है।
def main():
while not left_bumper.pressed():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()While लूप और बम्पर सेंसर के साथ एक प्रोजेक्ट बनाना
प्रोजेक्ट को नाम दें और सहेजें
- एक नया टेक्स्ट प्रोजेक्ट खोलें और संकेत मिलने परवॉल मेज़ प्लेग्राउंडका चयन करें।

-
प्रोजेक्ट का नाम Unit4Lesson2रखें.

-
Drivetrain कमांड को प्रतिस्थापित करने के लिए whileकमांड को कार्यक्षेत्र में खींचें या टाइप करें, जो स्वचालित रूप से एक नए टेक्स्ट प्रोजेक्ट के भाग के रूप में पॉप्युलेट होता है। ध्यान दें कि लूप के अंदर wait कमांड है। waitकमांड को न हटाएं, यह सुनिश्चित करेगा कि VR रोबोट प्रोजेक्ट को सही ढंग से निष्पादित करे। आपका प्रोजेक्ट इस तरह दिखना चाहिए:
def main(): while condition: wait(5, MSEC) -
whileकमांड में 'while' के बादन किऑपरेटर टाइप करें। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
def main(): while not condition: wait(5, MSEC) -
while लूप की 'कंडीशन' में left_bumper.pressedकमांड को खींचें या टाइप करें। लूप के अंदर के कमांड तब निष्पादित होंगे जब स्थिति सत्य नहीं होगी, अर्थात जब बायां बम्पर सेंसरदबाया जाएगा न कि। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
def main(): while not left_bumper.pressed(): wait(5, MSEC) -
whileलूप के अंदर, drive कमांड को खींचें या टाइप करें। सुनिश्चित करें किdriveकमांड औरwaitकमांडwhileलूप के भीतर सही ढंग से इंडेंट किए गए हैं, ताकि लूप इच्छित रूप से चले। आप मार्गदर्शक रेखाओं का उपयोग दृश्य सहायता के रूप में कर सकते हैं। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) -
whileलूप के बाहर stop कमांड खींचें या टाइप करें। सुनिश्चित करें किstopकमांडwhileलूप के साथ संरेखित है, तथा इंडेंटेड नहीं है, ताकि यह इच्छित रूप से लूप के बाहर चले। आप मार्गदर्शक रेखाओं का उपयोग दृश्य सहायता के रूप में कर सकते हैं। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() - यदि प्लेग्राउंड विंडो पहले से खुली नहीं है तो उसे खोलें। सुनिश्चित करें किदीवार भूलभुलैया खेल का मैदानखुलता है।
- परियोजना चलाएँ.
- दीवार भूलभुलैया की शुरुआत से वीआर रोबोट को ड्राइव करते हुए देखें और बम्पर सेंसर को दीवार द्वारा दबाए जाने पर उसे रोकें।
- ड्राइव कमांड, वीआर रोबोट को आगे बढ़ते रहने की अनुमति देता है, जबकि लेफ्ट बम्पर प्रेस्ड कमांड से वह बम्पर सेंसर की स्थिति की जांच करता रहता है। एक बार जब left_bumper.pressedकमांड सत्य के रूप में रिपोर्ट करता है, तो VR रोबोट लूप के बाहर अगले कमांड पर चला जाएगा और ड्राइविंग बंद कर देगा।
इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन का चयन करें।