उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर
गणित मॉड्यूल्स
ऑपरेटर मॉड्यूल
उद्देश्य
ऑपरेटर मॉड्यूल का उपयोग करके नए फार्मलैंड निर्माण सामग्री आदेशों की पुष्टि करें और आवंटित करें।
एनेक्स के ऊपरी तल में कुछ कार्यालय हैं जिनमें नई भूमि विकास के लिए आवश्यक निर्माण सामग्री का इन्वेंटरी और आदेशों का लॉग रखा जाता है। सामग्री की पुष्टि और गणना करने के लिए कई प्रकार के उपकरण मौजूद हैं जिन्हें निर्माण के लिए उपयोग किया जा सकता है, गणित और सांख्यिकी मॉड्यूल के अलावा हम ऑपरेटर मॉड्यूल का उपयोग कर सकते हैं।
यह मॉड्यूल, import operator, ऑपरेटर गणनाओं को सरल बनाने और उन्हें कार्यों में सुविधाजनक रूप से पैक करने के लिए उपयोग किया जा सकता है। आप इन कार्यों का उपयोग दोनों ऑप्टिमाइज़ेशन के लिए और गणनाओं के लिए मानों का उत्पादन करने हेतु कर सकते हैं, बिना किसी वस्तु को बनाने की आवश्यकता के जिससे गणनाओं के मान संग्रहीत किए जा सकें।
operators.eq(): दो तर्क लेता है, और जांचता है कि क्या दोनों तर्क एक-दूसरे के बराबर हैं।operators.lt(): दो तर्क लेता है, और जांचता है कि क्या पहला तर्क दूसरे तर्क से छोटा है।operators.gt(): दो तर्क लेता है, और जांचता है कि क्या पहला तर्क दूसरे तर्क से बड़ा है।operators.floordiv(): दो तर्क लेता है, पहले तर्क को दूसरे तर्क से विभाजित करता है औरmath.floor()के समतुल्य लागू करता है, परिणाम को नीचे की ओर राउंड करता है।operators.mod(): दो तर्क लेता है, और दोनों तर्कों के बीच विभाजन का शेषफल लौटाता है।operators.contains(): इस फ़ंक्शन का उपयोग एक सूची के साथ किया जाता है, यह दो (2) तर्क लेता है, पहला तर्क एक सूची है, दूसरा वह मान है जिसे आप जांचना चाहते हैं कि क्या यह सूची के अंदर है। यह लौटाता है:trueयाfalse, इस पर निर्भर करता है कि मान मौजूद है या नहीं।operators.concat(): दो सूची तर्क लेता है, और एक साफ़ फ़ंक्शन का उपयोग करके दोनों सूचियों को एक साथ जोड़ता है, अन्य विधियों की तुलना में तेज़ हो सकता है।operators.countOf(): दो तर्क लेता है, एक सूची और एक मान, यह जांचता है कि उस मान की सूची में कितनी बार उपस्थिति है। यह मान की उपस्थित मामलों की संख्या लौटाता है।
शुरू करने के लिए, लाल, नीले और हरे रंग के कार्पेट पर स्थित डार्क एक्स मार्क्स पर चलें। यहाँ छह (6) कॉन्स्टेंट्स हैं: red_order, blue_order, green_order, जो सामग्री के आदेश हैं और: red_req, blue_req, green_req, जो निर्माण के लिए आवश्यक मात्रा हैं।
लाल कार्पेट पर स्थित डार्क एक्स मार्क पर, read() फ़ंक्शन का उपयोग करके सामग्री की आवश्यक मात्रा की जांच करें। red_verification नाम का एक चर बनाएँ और red_order तथा red_req कॉन्स्टेंट्स के साथ operator.eq() फ़ंक्शन का उपयोग करें, इस तरह: red_verification = operator.eq(red_order,red_req). प्री-लिखित write() फ़ंक्शन का उपयोग करते हुए red_verification के परिणाम को प्रदर्शित करें।
नीले और हरे एक्स मार्क्स पर, समान प्रक्रिया को दोहराएँ, read() फ़ंक्शन का उपयोग करें और चर बनाएं: blue_verification और green_verification. नीले चर के लिए operator.lt() का मान संग्रहीत करें, जिसमें blue_order और blue_req कॉन्स्टेंट्स का उपयोग करके यह जांचें कि क्या आदेश आवश्यक मात्रा से कम है। हरे चर के लिए operator.gt() का मान संग्रहीत करें, जिसमें green_order और green_req कॉन्स्टेंट्स का उपयोग करके यह जांचें कि क्या आदेश आवश्यक सामग्री से अधिक है। संबंधित रंगीन कार्पेट्स के अनुरूप प्री-लिखित write() फ़ंक्शंस का उपयोग करें।
इसके बाद लाइट एक्स मार्क पर जाएँ और डेस्क पर read() फ़ंक्शन का उपयोग करके पहले से किए गए और मार्ग में चल रहे आदेशों की जांच करें। आदेश पुस्तिका में आपको दो चर कॉन्स्टेंट्स के मान मिलेंगे: main_order और sub_order, साथ ही यह भी कि सामग्री को कितने सेक्शनों में विभाजित किया जाना है। आदेश पुस्तिका पढ़ने के बाद, allocations नाम का एक चर बनाएँ और operator.floordiv() का मान संग्रहीत करें ताकि main_order मान को पुस्तिका में वर्णित सेक्शनों की संख्या से विभाजित किया जा सके, इस तरह: allocations = operator.floordiv(main_order, -add sections-). यह आदेश को विभाजित करता है और परिणाम को नीचे की ओर राउंड करता है। प्री-लिखित write() फ़ंक्शन का उपयोग करते हुए allocations चर के परिणाम को दर्शाएँ।
गोल्ड एक्स मार्क पर जाएँ और remainder नाम का एक चर बनाएँ, operator.mod() का परिणाम संग्रहीत करें और main_order तथा sub_order कॉन्स्टेंट्स को जोड़कर दोनों आदेशों का शेषफल निकालें। डेस्क पर, प्री-लिखित write() फ़ंक्शन का उपयोग करें और remainder चर के परिणाम को प्रदर्शित करें।
बैंगनी कार्पेट के ऊपर स्थित डार्क एक्स मार्क पर जाएँ, यहाँ हम यह सत्यापित करेंगे कि क्या निर्माण के लिए आवश्यक उपकरणों की डिलीवरी हुई। हमारे पास दो सूची कॉन्स्टेंट्स हैं, delivery_1 और delivery_2, हम यह जांचेंगे कि क्या उपकरण पहले डिलीवरी में भेजे गए थे। tools नाम का एक चर बनाएँ और operator.contains() का परिणाम संग्रहीत करें, पहले तर्क के रूप में delivery_1 सूची जोड़ें और दूसरे तर्क के रूप में स्ट्रिंग “tools” जोड़ें। यह जांचेगा कि डिलीवरी में उपकरण मौजूद हैं या नहीं, इस तरह: tools = operator.contains(delivery_1,"tools"). एक बार यह हो जाने के बाद, डेस्क पर प्री-लिखित write() फ़ंक्शन का उपयोग करते हुए tools चर के परिणाम को प्रदर्शित करें कि क्या उपकरण सफलतापूर्वक डिलीवर किए गए।
इसके बाद सभी डिलीवरी की जांच करें, सफेद कार्पेट पर स्थित डार्क एक्स मार्क पर जाएँ और materials नाम की एक सूची बनाएँ। इसका उपयोग operator.concat() का मान संग्रहीत करने के लिए करें, जिसमें delivery_1 और delivery_2 सूचियों को तर्क के रूप में पास करें। यह तेजी से दोनों सूचियों को एक एकल सूची में विलय कर देता है। डेस्क पर, प्री-लिखित write() फ़ंक्शन का उपयोग करते हुए materials सूची के परिणाम को प्रदर्शित करें, ताकि निर्माण के लिए पहले से डिलीवर की गई सभी सामग्री का विवरण मिल सके।
अंत में नारंगी कार्पेट पर स्थित डार्क एक्स मार्क पर जाएँ, यहाँ निर्माण शुरू करने के लिए कुछ पूर्वापेक्षाएँ लिखी गई हैं, मुख्य संकेतों में से एक यह है कि शुरुआत में कितना लकड़ी टन में आवश्यक है। जाँच करें कि पूरी डिलीवरी में कितनी लकड़ी डिलीवर की गई है और घोषणा करें, operator.countOf() फ़ंक्शन के साथ speak() फ़ंक्शन का उपयोग करें। पहले तर्क के रूप में आपने जो materials सूची बनाई है उसे जोड़ें और उसके बाद स्ट्रिंग “wood” जोड़ें, यह लौटाएगा कि materials सूची में कितनी बार लकड़ी मौजूद है। यह दर्शाता है कि ऑपरेटर कार्यों का उपयोग एक स्वतंत्र तरीके से किया जा सकता है बिना किसी वस्तु का उपयोग किए जिसमें इसे संग्रहीत किया जाए, इस तरह: player.speak(operator.countOf(materials,"wood")). यह लेवल पूरा करेगा।