payment by upi: sinhamit@icici or payment by bank account name: amit kumar sinha, account number: 2646728782 IFSC code: KKBK0005660 SWIFT: KKBKINBB

Please support if you like my work by payment through upi: sinhamit@icici or payment by bank

account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB


match case keywords   in Category: पाइथन   by amit

🕙 Posted on 2023-09-20 at 01:30:21


कुछ आरक्षित कीवर्ड

    आप पहले ही विभिन्न आरक्षित कीवर्ड्स देख चुके हैं, उदाहरण के लिए, and, or, not, is, in, for, while, if, elif, else, break, continue, del और import। आरक्षित कीवर्ड्स और अंतर्निहित (built-in) फ़ंक्शन्स पायथन प्रोग्रामिंग के मूल (कार्यक्षमताएं) हैं। जब आपने पायथन सॉफ़्टवेयर स्थापित किया, तो बहुत से मॉड्यूल्स, जैसे math, operator, random, turtle, tkinter इत्यादि पहले से ही इंस्टॉल हो गए हैं, लेकिन ये मॉड्यूल संचालन या उपयोग के लिए स्वचालित रूप से उपलब्ध नहीं हैं।

    मूल (core) पायथन एप्लिकेशन से विभिन्न मॉड्यूल्स का यह पृथक्करण आपकी स्क्रिप्ट्स (yourFileName.py फ़ाइल में लिखे गए कोड) के अनुकूलन (optimization) और अन्य मॉड्यूल्स के अनावश्यक समावेशन से बचने के लिए किया जाता है। किसी भी मॉड्यूल के बारे में अधिक जानने के लिए, आपको पहले उस मॉड्यूल को आयात (import) करना होगा, और उसके बाद, आप dir( name_of_module )   या print( dir( name_of_module ) )   को पायथन सीएलआई >>> में टाइप कर सकते हैं, या अपने ऑपरेटिंग सिस्टम के कमांड प्रॉम्प्ट/टर्मिनल से (yourFileName.py फ़ाइल में सहेजा गया) स्क्रिप्ट निष्पादित कर सकते हैं। साथ ही, आप help( name_of_module.name_of_method ) टाइप करके उस मॉड्यूल की किसी भी विधि/फ़ंक्शन का सहायता दस्तावेज़ प्राप्त कर सकते हैं।

उदाहरण 1

import keyword

print( dir(keyword) )   # यह जानने के लिए कि एक मॉड्यूल में कितनी और कौन सी विधियाँ उपलब्ध हैं। आउटपुट नीचे दिखाया गया है।

print()   # यह ऊपर और नीचे के कथनों के बीच एक नई लाइन बनाता है।
print( keyword.kwlist, '\n', type(keyword.kwlist), '\n')   # यह सूची डेटा-प्रकार में सभी आरक्षित कीवर्ड दिखाता है, आउटपुट नीचे दिखाया गया है।

print( keyword.softkwlist, '\n', type(keyword.softkwlist), '\n' )   # यह सूची डेटा-प्रकार में संदर्भ कीवर्ड दिखाता है, आउटपुट नीचे दिखाया गया है।

print( dir(keyword.kwlist) )   # यह कीवर्ड की सूची नहीं दिखाता है, बल्कि आउटपुट डेटा-प्रकार, यानी सूची (list) की सभी विधियाँ दिखाता है।

['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'iskeyword', 'issoftkeyword', 'kwlist', 'softkwlist']

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
  <class 'list'>

['_', 'case', 'match']
  <class 'list'>

    पिछले पृष्ठ में दिए गए निर्देशों के अनुसार, पायथन एप्लिकेशन इंस्टॉल करते समय, जैसा कि आपने Documentation (दस्तावेज़ीकरण) विकल्प पर जाँच की है। इस प्रकार, आप doc फ़ोल्डर के अंदर, जहां (जिस फ़ोल्डर में) आपने पायथन सॉफ़्टवेयर स्थापित किया है Python3109.chm फ़ाइल (Python 3.10.9 के लिए) या Python3913.chm फ़ाइल (Python 3.9.13 के लिए) या html फ़ोल्डर (Python 3.11.5 के लिए) प्राप्त सकते हैं। आपको वांछित पायथन संस्करणों के दस्तावेज़ीकरण के लिए आधिकारिक https://doc.python.org वेब-पेज पर भी जाना चाहिए।

    मैंने अपने पीसी (स्थानीय कंप्यूटर) में पायथन सॉफ़्टवेयर के कम से कम तीन संस्करण स्थापित किए हैं, अर्थात् Python 3.9.13, Python 3.10.11, और Python 3.11.5। जब आप क्लाउड कंप्यूटिंग, मशीन लर्निंग सीखेंगे, या अपने परिष्कृत वेब-एप्लिकेशन को किसी इंस्टेंस (instance − आपके द्वारा विभिन्न क्लाउड सेवा प्रदाता के रिमोट सर्वर में इंस्टॉल किया गया रिमोट ओएस) पर तैनात करेंगे, तो आपको अपने रिमोट सर्वर/पीसी या अपने स्थानीय कंप्यूटर में पायथन के विभिन्न संस्करण इंस्टॉल करने पड़ सकते हैं।

    चूँकि आरक्षित कीवर्ड पायथन सॉफ़्टवेयर के मूल में हैं, आप उपरोक्त परिणाम में देख सकते हैं कि केवल kwlist और softkwlist उपलब्ध विधियाँ हैं। साथ ही, यह जांचने के लिए iskeyword और issoftkeyword विधियां भी उपलब्ध हैं कि कोई स्ट्रिंग शाब्दिक (literal) आरक्षित/सॉफ्ट कीवर्ड है या नहीं। यदि आप निम्नलिखित उदाहरण में सिंगल कोट्स की जोड़ी को हटा दें, तो आपको SyntaxError: invalid syntax (सिंटैक्स त्रुटी: अमान्य सिंटैक्स) मिलेगा, यहां तक ​​कि else कीवर्ड पर भी। match case कीवर्ड्स को पायथन 3.10 में पेश किया गया है, और यह अन्य प्रोग्रामिंग भाषाओं में switch स्टेटमेंट के समान है।

उदाहरण 2

import keyword   # आपको किसी फ़ाइल में किसी मॉड्यूल को केवल एक बार आयात करना चाहिए।
print( keyword.iskeyword('else') )        # आउटपुट True है।
print( keyword.iskeyword('match') )    # आउटपुट False है।

print( keyword.issoftkeyword('match') )   # आउटपुट True है, (पायथन 3.10 में पेश किया गया, पिछले संस्करणों में False आउटपुट देता है।)


import keyword   # keyword मॉड्यूल बिल्कुल वैसा ही है, जैसा कि builtins मॉड्यूल, दोनों का उपयोग आरक्षित कीवर्ड के नाम, अंतर्निहित फ़ंक्शन और उनके संबंधित दस्तावेज़ को प्रदर्शित करने के लिए किया जाता है।

print( help( yield ) )   # आउटपुट त्रुटि है, हालाँकि आपने import keyword अपनी फ़ाइल new.py में शीर्ष पर लिखा है।

    # कुछ कीवर्ड, जैसे कि None, True इत्यादि, त्रुटि नहीं दिखाएगें, और उनके बारे में दस्तावेज प्रदर्शित करेंगे, जब आप help( None )   या help( True )   निष्पादित करेंगे लेकिन अधिकांश आरक्षित कीवर्ड को help() के अंदर रखेंगे तो SyntaxError: invalid syntax त्रुटि दिखाया जाएगा।

print( help( keyword.yield ) )   # यहां भी त्रुटि आउटपुट करता है

उदाहरण 3

import keyword
j = 0
for i in keyword.kwlist:
    print( str(j) + ' ' + i )
    j = j + 1

    उदाहरण 3 का आउटपुट प्रत्येक कीवर्ड के पहले उनका इंडेक्स नंबर दिखाता है। वांछित (आरक्षित) कीवर्ड का सहायता दस्तावेज़ प्राप्त करने के लिए आपको संबंधित सूचकांक संख्याओं का उपयोग करना चाहिए।

0 False
1 None
2 True
3 and
4 as
5 assert
6 async
7 await
8 break
9 class
10 continue
11 def
12 del
13 elif
14 else
15 except
16 finally
17 for
18 from
19 global
20 if
21 import
22 in
23 is
24 lambda
25 nonlocal
26 not
27 or
28 pass
29 raise
30 return
31 try
32 while
33 with
34 yield

उदाहरण 4

import keyword
print( help( keyword.kwlist[34] ) )

The "yield" statement
*********************

    yield_stmt ::= yield_expression

A "yield" statement is semantically equivalent to a yield expression.
The yield statement can be used to omit the parentheses that would
otherwise be required in the equivalent yield expression statement.
For example, the yield statements

    yield <expr>
    yield from <expr>

are equivalent to the yield expression statements

    (yield <expr>)
    (yield from <expr>)

Yield expressions and statements are only used when defining a
*generator* function, and are only used in the body of the generator
function. Using yield in a function definition is sufficient to cause
that definition to create a generator function instead of a normal
function.

For full details of "yield" semantics, refer to the Yield expressions
section.

None

match case

    इसी तरह आप ऊपर दिए गए किसी भी आरक्षित कीवर्ड के बारे में जान सकते हैं। हालाँकि, कुछ नए कीवर्ड, अर्थात्, match और case पायथन 3.10 में पेश किए गए हैं। match case ब्लॉक में, एक वेरिएबल नाम (संख्या, स्ट्रिंग, बूलियन, या None के साथ निर्दिष्ट) को match कीवर्ड के बाद रखा जाता है, और इसे प्रत्येक case (विकल्प) के साथ जांचा जाता है। if elif else कोड के ब्लॉक के विपरीत, match case ब्लॉक केवल एक बार शाब्दिक (literal) की जांच करता है। match case ब्लॉक का सिंटेक्स इस प्रकार है:

उदाहरण 5

name = "user"
match name:
    case "user":
        print(f"Welcome {name}, you are in the class.")
    case "public":
        print("Sorry, you have to login first.")
    case "unknown":
        print("You have not registered to our class.")

एक सरल सीएलआई ऐप

    निम्नलिखित उदाहरण में, इंडेंटेशन के संबंधित स्तर के क्रम में  दो , चार, छह, आठ, दस रिक्त स्थान छोड़े गए हैं। टेक्स्ट रैंगलर (मैक ओएस में) या नोटपैड (एमएस विंडोज ओएस में), या अन्य साधारण टेक्स्ट-संपादकों में कोड लिखते समय अपने कीबोर्ड में Tab कुंजी का उपयोग न करें। इसके कारण IndentationError या SyntaxError हो सकता है। आपके सरल सीएलआई ऐप में नोट्स जोड़ने के लिए एक खाली सूची बनाई जाती है, और इसे वेरिएबल नाम, my_notes को निर्दिष्ट किया गया है। इसके बाद, एक अनंत while लूप हर बार आपकी कार्रवाई के बारे में पूछेगा। आप मिलान (matching) के लिए पूर्णांक विकल्प के बजाय, जैसा कि ऊपर दिए गए उदाहरण 5 में बताया गया है, स्ट्रिंग शाब्दिक का भी उपयोग कर सकते हैं।

    आपको पहले input() फ़ंक्शन के आउटपुट को पूर्णांक (int) डेटा-प्रकार में टाइप-कास्ट करना चाहिए, अन्यथा TypeError दिखाया जा सकता है। आपको पहले (isnumeric() स्ट्रिंग विधि के साथ) यह जांचना होगा कि इनपुट (input) डेटा संख्यात्मक डेटा-प्रकार है या नहीं। उपयोगकर्ता बिना कोई नंबर डाले Enter या Return कुंजी दबा सकता है। यह आउटपुट को वेरिएबल नाम user_action के लिए एक खाली स्ट्रिंग निर्दिष्ट करेगा। फिर, यदि (if) उपयोगकर्ता कोई फ्लोटिंग (दशमलव) संख्या इनपुट करता है, तो int() अंतर्निहित फ़ंक्शन संख्यात्मक डेटा-प्रकार को पूर्णांक में छोटा (truncate) कर देगा। (पहले) else के अंतर्गत दिया गया continue कथन, while लूप को छोड़ (skip) देगा, और उपयोगकर्ता को एक संख्यात्मक मान दर्ज करने के लिए फिर से कहेगा।

    इसके बाद, match ब्लॉक शुरू होता है, और आपको प्रत्येक case विकल्प को अन्य मामलों (cases) से अलग पढ़ना चाहिए। इस तरह, आपको निम्नलिखित उदाहरण में एक बहुत ही सरल सीएलआई ऐप मिलेगा, जिसे अगले अध्यायों में संशोधित किया जाएगा। अधिक अंतर्निहित फ़ंक्शन और def कीवर्ड की सहायता से कुछ कस्टम फ़ंक्शन जोड़े जाएंगे। पहले दो मामले (cases) बहुत सरल हैं, और वे my_notes सूची में आइटम जोड़ते (add) और दिखाते (show) हैं। तीसरे और चौथे मामले में NESTED for लूप भी शामिल है, जो प्रत्येक आइटम से पहले एक संख्या दिखाता है। उपयोगकर्ता वांछित आइटम के लिए नंबर इनपुट करेगा, और इसे my_notes सूची से संपादित या हटा दिया जाएगा।

उदाहरण 6

my_notes = []
while True:
  user_action = input("Press 1 to add, 2 to show, 3 to edit, 4 to delete a note: ")
  if user_action.isnumeric():
    take_action = int(user_action)
  else:
    continue
  match take_action:
    case 1:
      add_note = input("Enter your note here (when complete, press Enter or Return key): \n")
      my_notes.append( add_note )
    case 2:
      print( "\n".join(my_notes) )
    case 3:
      if my_notes == []:
        print("Your notebook is empty. Please add something.")
      else:
        for index, item in enumerate(my_notes):
          print( index + 1, item )
        edit_num = int(input("Enter the number of item to be edited: "))
        my_notes[edit_num - 1] = input("Write something to edit: ")
    case 4:
      if my_notes == []:
        print("Your notebook is empty. Please add something.")
      else:
        for index, item in enumerate(my_notes):
          print( index + 1, item )
        del_num = int(input("Enter the number of item to be deleted: "))
        del my_notes[del_num - 1]
        print( "\n".join(my_notes) )   # Or, you can display the deleted item here!
    case _:
      break

    अन्य विकल्पों (default) का चयन करने के लिए case कीवर्ड के बाद _ (अंडरस्कोर) प्रतीक रखा जाता है, जिनका पिछले मामलों में उल्लेख नहीं किया गया है, और उपयोगकर्ता ने गलती से या जानबूझकर इसे चुना है। हालाँकि, उपरोक्त उदाहरण में, चूंकि स्ट्रिंग शाब्दिक पहले (already) से ही पहले (first) if ब्लॉक द्वारा पार्स किए गए हैं, उपयोगकर्ता सभी विकल्पों के लिए केवल संख्यात्मक मान इनपुट कर सकता है। जब उपयोगकर्ता 5 या 1, 2, 3, 4 के अतिरिक्त कोई भी संख्या देता (enters) है, तो उपरोक्त उदाहरण (program) पूरा (complete या समाप्त terminate) हो जायेगा।

    उपरोक्त उदाहरण सरल सीएलआई ऐप का अंतिम (finished) संस्करण नहीं है, और आप देख सकते हैं कि जब उपयोगकर्ता my_notes सूची के उपलब्ध आइटमों को संपादित करने या हटाने के लिए उनके अलावा कोई अन्य संख्या दर्ज करता है, तो त्रुटि दिखाई जाएगी। आपको यह जांचने के लिए कि उपयोगकर्ता द्वारा प्रदान किया गया इनपुट संख्यात्मक है या नहीं, if else ब्लॉक डालने का प्रयास करना चाहिए। साथ ही, आपको यह जांचने का प्रयास करना चाहिए कि उपयोगकर्ता द्वारा प्रदान किया गया नंबर सूची के अंतिम सूचकांक संख्या से अधिक तो नहीं है। आप इसे len() बिल्ट-इन फ़ंक्शन की मदद से कर सकते हैं।

    अगले पृष्ठों में, आप कस्टम फ़ंक्शंस बनाना सीखेंगे, और अपनी नोटबुक (अर्थात, my_notes सूची के प्रत्येक आइटम के लिए उपयोगकर्ता द्वारा लिखे गए टेक्स्ट) को .txt के साथ एक फ़ाइल में सहेजना सीखेंगे। आशा है, आपको उपरोक्त उदाहरण पसंद आया होगा और यह कठिन नहीं प्रतीत हुआ होगा। यदि आपके पास इसके संबंध में कोई प्रश्न है, तो आप मुझे help@ribhu.org पर मेल कर सकते हैं।


Leave a Comment: