
समय-समय पर, हमारे संपादकीय कार्यालय को पत्र भेजे जाते हैं, जिसमें पूछा जाता है कि क्या एम। डॉसन की पुस्तक "पायथन में प्रोग्रामिंग" का एक नया संस्करण होगा या नहीं। इस तथ्य के बावजूद कि मूल "पायथन प्रोग्रामिंग फॉर द एब्सोल्यूट शुरुआत, तीसरा संस्करण" 2010 में जारी किया गया था, यह अभी भी
amazon.com पर सबसे अच्छा है। पुस्तक की सामग्री प्रोग्रामिंग के व्यावहारिक उदाहरणों पर आधारित है सरल गेम। हम पेशेवरों की राय जानने के लिए बहुत इच्छुक हैं, जो हमें यह तय करने की अनुमति देगा कि पुस्तक प्रकाशित करना है या नहीं।
सामग्री की पूरी तालिका
यहां देखी जा सकती
है ।
अध्याय 5 से अंश। सूचियाँ और शब्दकोष। खेल "जल्लाद"
ट्यूपल्स एक क्रम में विभिन्न प्रकार के तत्वों में हेरफेर करने का एक अच्छा तरीका है। लेकिन इस तथ्य से कि ट्यूपल अपरिवर्तनीय है, कभी-कभी असुविधाएं होती हैं। सौभाग्य से, एक अलग तरह के अनुक्रम हैं, तथाकथित सूचियां, जो ट्यूपल्स के समान काम करती हैं, और इससे भी अधिक - बस इसलिए कि सूची में परिवर्तनशील है। इसके तत्वों को हटाया जा सकता है, साथ ही नए जोड़े जा सकते हैं। आप सूची को सॉर्ट भी कर सकते हैं। मैं आपको अन्य प्रकार के दृश्यों - शब्दकोशों से परिचित कराऊंगा। यदि सूची को मूल्यों के एक समूह के रूप में व्यवस्थित किया जाता है, तो शब्दकोश मूल्यों के जोड़े का एक समूह है। बुकशेल्फ़ से अपने नाम की तरह, शब्दकोश आपको किसी अन्य से मेल खाने वाले मान को खोजने की अनुमति देता है। अधिक विस्तार से, इस अध्याय में आप सीखेंगे कि निम्नलिखित कैसे करें:
• सूची बनाएं, उन्हें अनुक्रमित करें और स्लाइस बनाएं;
• सूची आइटम जोड़ें और निकालें;
• सूची विधियों को लागू करें जो आपको सूची को सॉर्ट करने और अंत में एक मूल्य जोड़ने की अनुमति देता है;
• नेस्टेड सीक्वेंस लागू करें जिसके साथ किसी भी जटिलता के डेटा का प्रतिनिधित्व किया जा सकता है;
• मूल्यों के जोड़े के साथ काम करने के लिए शब्दकोशों का उपयोग करें;
• शब्दकोश आइटम जोड़ें और निकालें।
खेल "जल्लाद" के साथ परिचित
इस चैप्टर का फोकस हैंगमैन प्रोजेक्ट पर है। उपयोगकर्ता से गुप्त रूप से, कंप्यूटर एक शब्द का चयन करता है, और खिलाड़ी को पत्रों में अपनी मान्यताओं को व्यक्त करके इसका अनुमान लगाने का प्रयास करना चाहिए। जब भी खिलाड़ी कोई गलती करता है, तो कंप्यूटर स्क्रीन पर फिगर के नीचे की छवि को खींचता है। यदि आवंटित प्रयासों में खिलाड़ी शब्द का अनुमान लगाने में विफल रहता है, तो "लटका हुआ" मर जाता है। अंजीर में। ५.१-५.३ अपनी समस्त भव्यता में गेमप्ले दिखाता है।
खेल न केवल अपने आप में दिलचस्प है। यह भी उल्लेखनीय है कि इस अध्याय के अंत तक आप सीखेंगे कि गेम का अपना संस्करण कैसे बनाया जाए। उदाहरण के लिए, आप अपनी "गुप्त" शब्दों की अपनी व्यक्तिगत सूची प्राप्त कर सकते हैं या मेरे आदिम चित्र को अधिक प्रभावशाली लोगों के साथ बदल सकते हैं।

अंजीर। 5.1। हम "जल्लाद" खेलते हैं। उम ... उसने किस तरह का शब्द बनाया?

अंजीर। 5.2। मैंने यह गेम जीत लिया!

अंजीर। 5.3। और यह खेल सबसे अच्छे तरीके से समाप्त नहीं हुआ, खासकर छद्म भौगोलिक छोटे आदमी के लिए
सूचियों का उपयोग करना
सूचियाँ, टुपल्स की तरह, अनुक्रम हैं। लेकिन सूची परस्पर हैं। उनके तत्व परिवर्तनीय हैं। यही कारण है कि सूचियों में ट्यूपल्स के समान कार्यक्षमता है और कुछ और कर सकते हैं। ट्यूपल्स के साथ काम करने के बारे में आप जो पहले से जानते हैं, वह सूचियों पर भी लागू होता है, जिसका अर्थ है कि उनका उपयोग करना सीखना आपके लिए मुश्किल नहीं है।
एक हीरो 3.0 कार्यक्रम के शस्त्रागार के साथ परिचित
यह कार्यक्रम पहले के खेल "हीरो आर्सेनल 2.0" पर आधारित है, जो हमें अध्याय 4 में मिला था। यहां, सूचियों का उपयोग नायक के शस्त्रागार पर डेटा संग्रहीत करने के लिए किया गया था, सूचियों पर नहीं। हीरो आर्सेनल 3.0 का प्रारंभिक हिस्सा पहले वाले संस्करण के समान परिणाम तैयार करता है। और इसमें कोड लगभग समान है; एकमात्र अंतर यह है कि सूचियों का उपयोग टुपल्स के बजाय किया जाता है। अंजीर में। 5.4 इस पहले भाग को पूरा करने के बाद प्रोग्राम विंडो दिखाता है। इसके बाद वाला कोड अनुक्रम के साथ काम करने के लिए सूची में परिवर्तनशीलता और कुछ नई तकनीकों के उपयोगी परिणामों को प्रदर्शित करता है। कार्यक्रम के इस हिस्से के कार्यान्वयन परिलक्षित होता है।
अंजीर में। 5.5।

अंजीर। 5.4। अब नायक के शस्त्रागार को एक सूची द्वारा दर्शाया गया है। प्रोग्राम विंडो में, सब कुछ लगभग वैसा ही दिखता है जैसा कि संस्करण 2.0 में देखा गया था, जहां ट्यूपल का उपयोग किया गया था
सूची निर्माण
कोड की पहली पंक्ति एक नई सूची बनाती है, जो इन्वेंट्री चर का मूल्य बन जाती है; सिस्टम स्क्रीन पर सूची आइटम प्रदर्शित करता है। हीरो आर्सेनल 2.0 से एकमात्र अंतर यह है कि मैंने सूची आइटम को वर्ग कोष्ठक में और कोष्ठक में नहीं संलग्न किया और एक सूची मिली, न कि टपल। आप अध्याय 5 फ़ोल्डर में सहायक प्रोग्राम (पाठ्यक्रम) पर इस कार्यक्रम के लिए कोड पा सकते हैं। फ़ाइल को हीरो का_इनवेंटरी 3 डीआरएम कहा जाता है।

अंजीर। 5.5। चूंकि नायक का शस्त्रागार एक सूची है, इसके तत्वों को जोड़ा, संशोधित और हटाया जा सकता है।
# 3.0
#
# for-
inventory = [“”, “”, “”, “ ”]
print(“\n, :”)
for item in inventory:
print(item)
input(“\n Enter, .”)
सूची में लेन () फ़ंक्शन लागू करना
निम्न कोड वस्तुतः हीरो आर्सेनल 2.0 में समान कोड से मेल खाता है। Len () फ़ंक्शन ट्यूपल्स के साथ उसी तरह सूचियों के साथ काम करता है।
#
print(“ ”, len(inventory), “/-.”)
input(“\n Enter, .”)
ऑपरेटर को सूचियों में लागू करना
इस कोड को भी पिछले संस्करण से बदलाव के बिना उधार लिया गया है। ऑपरेटर को टपल और सूची के बीच अंतर दिखाई नहीं देता है।
# in
if “ ” in inventory:
print(“ .”)
सूची अनुक्रमण
फिर से, संस्करण 2.0 की तुलना में कुछ भी नया नहीं है। सूची आइटम तक पहुंचने के लिए, पहले की तरह, आपको वर्ग कोष्ठक में उस स्थान की संख्या को जोड़ना होगा जिसमें आइटम स्थित है।
#
index = int(input(“\n : “))
print(“ ”, index, “ ”, inventory[index])
सूची के स्लाइस
क्या आप यह मानने के लिए तैयार हैं कि कटा हुआ सूची कटा हुआ टुपल्स के समान है? फिर से, वर्ग कोष्ठक में बृहदान्त्र के माध्यम से शुरू और समाप्त होने वाले पदों को इंगित करें:
#
start = int(input(“\n : “))
finish = int(input(“ : “))
print(“ inventory[“, start, “:”, finish, “] – ”, end=” “)
print(inventory[start:finish])
input(“\n Enter, .”)
सूचियाँ जोड़ना
टंकियों को जोड़ने से सूचियों को जोड़ना अलग नहीं है। यहां अंतर केवल यह होगा कि चर छाती को निर्दिष्ट करने में मैंने सूची तय की थी, न कि टपल। यह एक छोटा लेकिन महत्वपूर्ण अंतर है, क्योंकि केवल एक ही प्रकार के दृश्यों को संघनन के अधीन किया जा सकता है।
#
chest = [“”, “ ”]
print(“ . :”)
print(chest)
print(“ .”)
inventory += chest
print(“ :”)
print(inventory)
input(“\n\n Enter, .”)
सूची परिवर्तनशीलता
संभवतः, आप पहले से ही अनगिनत वाक्यांशों से थक चुके हैं, जिसका सामान्य अर्थ यह है कि सूची उसी तरह से काम करती है जैसे कि एक टपल। अब तक, कोष्ठक के स्थान पर वर्ग को बदलने के अलावा, सूचियाँ टुपल्स की तुलना में कुछ भी नई साबित नहीं हुई हैं। लेकिन अभी भी एक अंतर है, और यह बहुत बड़ा है। मैं दोहराता हूं: सूचियां परस्पर हैं। यह इस प्रकार है कि सूचियों के साथ आप कई चालें कर सकते हैं जिनके लिए ट्यूपल्स अनुपयुक्त हैं।
सूचकांक द्वारा चुनी गई वस्तु को एक नया मूल्य सौंपना
चूंकि सूची परिवर्तनशील है, एक नया मान इसके किसी भी तत्व को सौंपा जा सकता है:
#
print(“ .”)
inventory[0] = “”
print(“ :”)
print(inventory)
input(“\n Enter, .”)
inventory, 0,
“”:
inventory[0] = “”
यह नया स्ट्रिंग मान पूर्व ("तलवार") को बदल देता है। प्रिंट फ़ंक्शन दिखाता है कि सूची कैसे दिखना शुरू हुई, जिसके साथ इन्वेंट्री का एक नया संस्करण प्रदर्शित होता है।
जाल
आप किसी मौजूदा सूची आइटम को इंडेक्स द्वारा चुनकर एक नया मान प्रदान कर सकते हैं, लेकिन आप इस तरह से एक नया आइटम नहीं बना सकते। पहले मौजूद नहीं थे एक तत्व के लिए एक मूल्य आवंटित करने का प्रयास एक त्रुटि फेंक देंगे।
एक सूची स्लाइस को नए मान असाइन करना
यह न केवल एक सूची आइटम के लिए एक नया मान असाइन करने की अनुमति है, लेकिन यह भी एक टुकड़ा करने के लिए। मैंने इन्वेंट्री को सौंपा [4: 6] स्लाइस को एकल-आइटम सूची मूल्य ["मैजिक क्रिस्टल"]:
#
print(“ , .”)
inventory[4:6] = [“ ”]
print(“ :”)
print(inventory)
input(“\n Enter, .”)
सूची में दो आइटम - इन्वेंट्री [4] और इन्वेंट्री [5] -एक एकल स्ट्रिंग मान "मैजिक क्रिस्टल" असाइन किया गया है। चूंकि सिंगलटन सूची एक दो-तत्व स्लाइस का मान बन गई है, इन्वेंट्री अनुक्रम की लंबाई एक से कम हो गई है।