परिचय
मान लीजिए आपको एक प्रोग्राम लिखना है जो उपयोगकर्ता से टेनिस ग्रैंड स्लैम खिताब की संख्या स्वीकार करे। हम जानते हैं कि फेडरर और नडाल के पास अधिकतम 20 खिताब हैं (2020 तक), जबकि न्यूनतम 0 है।
आइए एक प्रोग्राम बनाएं जो खिताब की संख्या स्वीकार करे।
नोट - प्रोग्राम को टर्मिनल से चलाएं।
बिना प्रतिबंध के संस्करण
import argparse
def get_args():
parser = argparse.ArgumentParser(
description='एक स्थानिक आर्गुमेंट का उदाहरण',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('titles', metavar='titles', type=int, help='ग्रैंड स्लैम खिताब')
return parser.parse_args()
def main(titles):
print(f" *** खिलाड़ी ने {titles} ग्रैंड स्लैम खिताब जीते।")
if __name__ == '__main__':
args = get_args()
main(args.titles)
आउटपुट:
>>> python test.py 20
*** खिलाड़ी ने 20 ग्रैंड स्लैम खिताब जीते।
>>> python test.py 50
*** खिलाड़ी ने 50 ग्रैंड स्लैम खिताब जीते।
>>> python test.py -1
*** खिलाड़ी ने -1 ग्रैंड स्लैम खिताब जीते।
समस्या: प्रोग्राम अमान्य मान (नकारात्मक, 20 से अधिक) स्वीकार कर लेता है।
choices विकल्प के साथ प्रतिबंधित संस्करण
import argparse
def get_args():
parser = argparse.ArgumentParser(
description='एक स्थानिक आर्गुमेंट का उदाहरण',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
# choices में range(0, 20) का उपयोग करें (0 से 19 तक)
parser.add_argument('titles', metavar='titles', type=int,
choices=range(0, 20), help='ग्रैंड स्लैम खिताब')
return parser.parse_args()
def main(titles):
print(f" *** खिलाड़ी ने {titles} ग्रैंड स्लैम खिताब जीते।")
if __name__ == '__main__':
args = get_args()
main(args.titles)
आउटपुट:
>>> python test.py 30
usage: test.py [-h] titles
test.py: error: argument titles: invalid choice: 30 (choose from 0, 1, 2, ... 19)
>>> python test.py 10
*** खिलाड़ी ने 10 ग्रैंड स्लैम खिताब जीते।
>>> python test.py -1
usage: test.py [-h] titles
test.py: error: argument titles: invalid choice: -1 (choose from 0, 1, 2, ... 19)
स्ट्रिंग choices के साथ उदाहरण
import argparse
def get_args():
parser = argparse.ArgumentParser(
description='खिलाड़ी और खिताब का उदाहरण',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('player', metavar='player', type=str,
choices=['federer', 'nadal', 'djokovic'],
help='टेनिस खिलाड़ी')
parser.add_argument('titles', metavar='titles', type=int,
choices=range(0, 20),
help='ग्रैंड स्लैम खिताब')
return parser.parse_args()
def main(player, titles):
print(f" *** {player} ने {titles} ग्रैंड स्लैम खिताब जीते।")
if __name__ == '__main__':
args = get_args()
main(args.player, args.titles)
आउटपुट:
>>> python test.py "federer" 30
error: argument titles: invalid choice: 30
>>> python test.py "murray" 5
error: argument player: invalid choice: 'murray' (choose from 'federer', 'nadal', 'djokovic')
>>> python test.py "djokovic" 17
*** djokovic ने 17 ग्रैंड स्लैम खिताब जीते।
निष्कर्ष
choicesविकल्प मान्य मानों की सूची लेता है। argparse प्रोग्राम रोक देता है यदि उपयोगकर्ता अमान्य मान देता है।choicesमें कोई भी पुनरावृत्त योग्य (iterable) दे सकते हैं: सूची, टपल, range, सेट।- यह इनपुट सत्यापन का सरल और प्रभावी तरीका है।