ट्रैक
/
Python
Python
/
अभ्यास
/
टिसबरी खज़ाने की खोज
टिसबरी खज़ाने की खोज

टिसबरी खज़ाने की खोज

सीखने का अभ्यास

परिचय

Python में टपल क्रम में रखे आइटमों का एक अपरिवर्तनीय संग्रह है। ज़्यादातर संग्रहों की तरह tuples किसी भी (या एक से अधिक) डेटा टाइप की चीज़ें रख सकते हैं, जिनमें दूसरे tuples भी शामिल हैं। टपल सामान्य अनुक्रम ऑपरेशन का समर्थन करते हैं, लेकिन परिवर्तनीय अनुक्रम ऑपरेशन का समर्थन नहीं करते।

टपल के एलिमेंट पर for item in <tuple> रचना की मदद से इटरेशन किया जा सकता है। अगर एलिमेंट का इंडेक्स और वैल्यू दोनों चाहिए, तो for index, item in enumerate(<tuple>) इस्तेमाल किया जा सकता है। किसी भी अनुक्रम की तरह tuples के अंदर के एलिमेंट तक ब्रैकेट नोटेशन से पहुँचा जा सकता है, बाईं ओर से 0-based index संख्या या दाईं ओर से -1-based index संख्या इस्तेमाल करके। टपल को पूरा या उसका कोई हिस्सा स्लाइस नोटेशन (<tuple>[<start>:<stop>:<step>]) की मदद से कॉपी भी किया जा सकता है।

टपल बनाना

टपल कई तरीकों से बनाए जा सकते हैं: या तो tuple(<iterable>) क्लास कंस्ट्रक्टर से, या tuple लिटरल डिक्लेरेशन से।

tuple() कंस्ट्रक्टर को खाली या किसी इटरेबल के साथ इस्तेमाल करना:

>>> no_elements = tuple()
()

# The constructor *requires* an iterable, so single elements must be passed in a list or another tuple.
>>> one_element = tuple([16])
(16,)

स्ट्रिंग भी इटरेबल होती हैं, इसलिए tuple() कंस्ट्रक्टर को आर्गुमेंट के तौर पर अकेली str देना चौंकाने वाले नतीजे दे सकता है:

# String elements (characters) are iterated through and added to the tuple
>>> multiple_elements_string = tuple("Timbuktu")
('T', 'i', 'm', 'b', 'u', 'k', 't', 'u')

अकेले इटरेबल के एलिमेंट एक-एक करके जोड़े जाते हैं:

>>> multiple_elements_list = tuple(["Parrot", "Bird", 334782])
("Parrot", "Bird", 334782)

>>> multiple_elements_set = tuple({2, 3, 5, 7, 11})
(2,3,5,7,11)
टपल को लिटरल के रूप में घोषित करना:

चूँकि tuple(<iterable>) कंस्ट्रक्टर आर्गुमेंट के तौर पर सिर्फ इटरेबल (या कुछ नहीं) लेता है, इसलिए एक-एलिमेंट वाला टपल लिटरल तरीके से बनाना कहीं ज़्यादा आसान है।

>>> no_elements = ()
()

>>> one_element = ("Guava",)
("Guava",)

नेस्टेड डेटा स्ट्रक्चर को tuple के एलिमेंट के रूप में शामिल किया जा सकता है, जिनमें दूसरे tuples भी शामिल हैं:

>>> nested_data_structures = ({"fish": "gold", "monkey": "brown", "parrot" : "grey"}, ("fish", "mammal", "bird"))
({"fish": "gold", "monkey": "brown", "parrot" : "grey"}, ("fish", "mammal", "bird"))

>>> nested_data_structures_1 = (["fish", "gold", "monkey", "brown", "parrot", "grey"], ("fish", "mammal", "bird"))
(["fish", "gold", "monkey", "brown", "parrot", "grey"], ("fish", "mammal", "bird"))

टपल जोड़ना

टपल को प्लस + ऑपरेटर से जोड़ा जा सकता है, जो हर tuple को खोलकर एक नया, संयुक्त tuple बनाता है।

>>> new_via_concatenate = ("George", 5) + ("cat", "Tabby")
("George", 5, "cat", "Tabby")

#likewise, using the multiplication operator * is the equivalent of using + n times
>>> first_group = ("cat", "dog", "elephant")

>>> multiplied_group = first_group * 3
('cat', 'dog', 'elephant', 'cat', 'dog', 'elephant', 'cat', 'dog', 'elephant')

टपल के अंदर के एलिमेंट तक पहुँचना

tuple के अंदर के एलिमेंट तक ब्रैकेट नोटेशन से पहुँचा जा सकता है, बाईं ओर से 0-based index संख्या या दाईं ओर से -1-based index संख्या इस्तेमाल करके।

student_info = ("Alyssa", "grade 3", "female", 8 )

#gender is at index 2 or index -2
>>> student_gender = student_info[2]
'female'

>>> student_gender = student_info[-2]
'female'

#name is at index 0 or index -4
>>> student_name = student_info[0]
Alyssa

>>> student_name = student_info[-4]
Alyssa

टपल के एलिमेंट पर इटरेशन करना

tuple के अंदर के एलिमेंट पर लूप में for item in <tuple> सिंटैक्स की मदद से इटरेशन किया जा सकता है। अगर इंडेक्स और वैल्यू दोनों चाहिए, तो for index, item in enumerate(<tuple>) इस्तेमाल किया जा सकता है।

>>> student_info = ("Alyssa", "grade 3", "female", 8 )
>>> for item in student_info:
...   print(item)

...
Alyssa
grade 3
female
8

>>> for index, item in enumerate(student_info):
...  print("Index is: " + str(index) + ", value is: " + str(item) +".")

...
Index is: 0, value is: Alyssa.
Index is: 1, value is: grade 3.
Index is: 2, value is: female.
Index is: 3, value is: 8.

टपल में सदस्यता की जाँच

tuple में सदस्यता जाँचने के लिए in ऑपरेटर इस्तेमाल किया जा सकता है।

>>> multiple_elements_list = tuple(["Parrot", "Bird", 334782])
("Parrot", "Bird", 334782)

>>> "Parrot" in multiple_elements_list
True

निर्देश

अज़ारा और रुई साथी हैं, जो समुद्री डाकुओं की थीम वाली एक खज़ाने की खोज में हिस्सा ले रहे हैं। एक के पास नक्शे के निर्देशांकों के साथ खज़ानों की सूची है, और दूसरे के पास नक्शे के निर्देशांकों के साथ जगहों के नामों की सूची है। उन्हें खाली नक्शे भी दिए गए हैं, जिन पर शुरुआत की जगह YOU ARE HERE लिखकर चिह्नित है।


अज़ारा की सूची रुई की सूची
खज़ाना निर्देशांक
Amethyst Octopus 1F
Angry Monkey Figurine 5B
Antique Glass Fishnet Float 3D
Brass Spyglass 4B
Carved Wooden Elephant 8C
Crystal Crab 6A
Glass Starfish 6D
Model Ship in Large Bottle 8A
Pirate Flag 7F
Robot Parrot 1C
Scrimshawed Whale Tooth 2A
Silver Seahorse 4E
Vintage Pirate Hat 7E
जगह का नाम निर्देशांक चतुर्थांश
Seaside Cottages ("1", "C") Blue
Aqua Lagoon (Island of Mystery) ("1", "F") Yellow
Deserted Docks ("2", "A") Blue
Spiky Rocks ("3", "D") Yellow
Abandoned Lighthouse ("4", "B") Blue
Hidden Spring (Island of Mystery) ("4", "E") Yellow
Stormy Breakwater ("5", "B") Purple
Old Schooner ("6", "A") Purple
Tangled Seaweed Patch ("6", "D") Orange
Quiet Inlet (Island of Mystery) ("7", "E") Orange
Windswept Hilltop (Island of Mystery) ("7", "F") Orange
Harbor Managers Office ("8", "A") Purple
Foggy Seacave ("8", "C") Purple

लेकिन चीज़ें थोड़ी बिखरी हुई हैं: अज़ारा के निर्देशांक रुई के निर्देशांकों से अलग ढंग से फॉर्मेट और क्रमबद्ध किए गए लगते हैं, और यह पता लगाने के लिए कि कौन-सा खज़ाना किस जगह के साथ जाता है, उन्हें बार-बार एक सूची से दूसरी सूची में देखना पड़ता है। नए-नए pythonista होने के नाते, वे अपनी खोज की जानकारी को बेहतर ढंग से व्यवस्थित करने के लिए एक छोटा-सा प्रोग्राम (वास्तव में कुछ फंक्शन) लिखने में मदद के लिए आपके पास आए हैं।

1. निर्देशांक निकालिए

get_coordinate() फंक्शन बनाइए, जो अज़ारा की सूची से एक (treasure, coordinate) जोड़ा लेता है और सिर्फ नक्शे से निकाला गया निर्देशांक लौटाता है।

>>> get_coordinate(('Scrimshawed Whale Tooth', '2A'))
2A

2. निर्देशांक का प्रारूप बदलिए

convert_coordinate() फंक्शन बनाइए, जो "2A" प्रारूप वाला एक निर्देशांक लेता है और ("2", "A") प्रारूप में एक टपल लौटाता है।

>>> convert_coordinate("2A")
("2", "A")

3. निर्देशांकों का मिलान कीजिए

compare_records() फंक्शन बनाइए, जो एक (treasure, coordinate) जोड़ा और एक (location, coordinate, quadrant) रिकॉर्ड लेता है और दोनों के निर्देशांकों की तुलना करता है। अगर निर्देशांकों का "मिलान" होता है, तो True लौटाइए, और अगर मिलान नहीं होता, तो False लौटाइए। सही तुलना के लिए ज़रूरत पड़ने पर निर्देशांक का प्रारूप बदल लीजिए।

>>> compare_records(('Brass Spyglass', '4B'), ('Seaside Cottages', ('1', 'C'), 'blue'))
False

>>> compare_records(('Model Ship in Large Bottle', '8A'), ('Harbor Managers Office', ('8', 'A'), 'purple'))
True

4. मिलान वाले रिकॉर्ड जोड़िए

create_record() फंक्शन बनाइए, जो अज़ारा की सूची से एक (treasure, coordinate) जोड़ा और रुई की सूची से एक (location, coordinate, quadrant) रिकॉर्ड लेता है और अगर निर्देशांकों का मिलान होता है तो (treasure, coordinate, location, coordinate, quadrant) लौटाता है। अगर निर्देशांकों का मिलान नहीं होता, तो स्ट्रिंग "not a match" लौटाइए। सही तुलना के लिए ज़रूरत पड़ने पर निर्देशांक का प्रारूप बदल लीजिए।

>>> create_record(('Brass Spyglass', '4B'), ('Abandoned Lighthouse', ('4', 'B'), 'Blue'))
('Brass Spyglass', '4B', 'Abandoned Lighthouse', ('4', 'B'), 'Blue')

>>> create_record(('Brass Spyglass', '4B'), ('Seaside Cottages', ('1', 'C'), 'blue'))
"not a match"

5. "सफाई" कीजिए और सभी रिकॉर्ड की रिपोर्ट बनाइए

अज़ारा और रुई के जोड़े गए रिकॉर्ड को ऐसे साफ कीजिए कि हर रिकॉर्ड में निर्देशांकों का सिर्फ एक समूह रहे। एक रिपोर्ट बनाइए, ताकि वे एक ही सूची में देख सकें कि उन्हें अपने नक्शों पर क्या-क्या डालना है। clean_up() फंक्शन बनाइए, जो टपलों का एक टपल लेता है (दोनों सूचियों की सारी चीज़ें), बाहरी टपल पर लूप चलाता है, हर अंदरूनी टपल से अनचाहे निर्देशांक हटाता है और हर एक को एक 'report' में जोड़ता है। 'report' को ऐसे रूप में लौटाइए कि हर पंक्ति में एक साफ किया गया रिकॉर्ड हो।

>>> clean_up((('Brass Spyglass', '4B', 'Abandoned Lighthouse', ('4', 'B'), 'Blue'), ('Vintage Pirate Hat', '7E', 'Quiet Inlet (Island of Mystery)', ('7', 'E'), 'Orange'), ('Crystal Crab', '6A', 'Old Schooner', ('6', 'A'), 'Purple')))

"""
('Brass Spyglass', 'Abandoned Lighthouse', ('4', 'B'), 'Blue')\n
('Vintage Pirate Hat', 'Quiet Inlet (Island of Mystery)', ('7', 'E'), 'Orange')\n
('Crystal Crab', 'Old Schooner', ('6', 'A'), 'Purple')\n
"""
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Python Exercism

टिसबरी खज़ाने की खोज शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।