Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में पसंद विकल्पों का उपयोग करके तर्क मूल्यों को कैसे प्रतिबंधित करें?

परिचय..

मान लें कि आपको उपयोगकर्ता से टेनिस ग्रैंडस्लैम खिताबों की संख्या को स्वीकार करने और उन्हें संसाधित करने के लिए एक प्रोग्राम को कोड करने के लिए कहा गया है। हम पहले से ही जानते हैं, फेडरर और नडाल टेनिस में अधिकतम ग्रैंडस्लैम खिताब साझा करते हैं जो कि 20 है (2020 तक) जबकि न्यूनतम 0 है, बहुत सारे खिलाड़ी अभी भी अपना पहला ग्रैंडस्लैम खिताब पाने के लिए लड़ रहे हैं।

आइए हम शीर्षकों को स्वीकार करने के लिए एक प्रोग्राम बनाएं।

नोट - प्रोग्राम को टर्मिनल से निष्पादित करें।

उदाहरण

import argparse

def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(
description='Example for one positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player titles of type int
parser.add_argument('titles',
metavar='titles',
type=int,
help='GrandSlam Titles')

return parser.parse_args()

# define main
def main(titles):
print(f" *** Player had won {titles} GrandSlam titles.")

if __name__ == '__main__':
args = get_args()
main(args.titles)

आउटपुट

हमारा कार्यक्रम अब शीर्षकों को स्वीकार करने के लिए तैयार है। तो चलिए तर्क के रूप में किसी भी संख्या (फ्लोट नहीं) को पास करते हैं।

<<< python test.py 20
*** Player had won 20 GrandSlam titles.
<<< python test.py 50
*** Player had won 50 GrandSlam titles.
<<< python test.py -1
*** Player had won -1 GrandSlam titles.
<<< python test.py 30
*** Player had won 30 GrandSlam titles.

जबकि कोड के साथ कोई तकनीकी समस्या नहीं है, निश्चित रूप से एक कार्यात्मक समस्या है क्योंकि हमारा कार्यक्रम नकारात्मक शीर्षकों सहित किसी भी ग्रैंडस्लैम खिताब को स्वीकार कर रहा है।

ऐसे मामलों में जहां हम ग्रैंडस्लैम खिताब के विकल्पों को प्रतिबंधित करना चाहते हैं, हम विकल्प विकल्प का उपयोग कर सकते हैं।

निम्नलिखित उदाहरण में, हम शीर्षकों को एक श्रेणी (0, 20) तक सीमित रखते हैं।

उदाहरण

import argparse
def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

4. choices - pre defined range of choices a user can enter to this program

"""

parser = argparse.ArgumentParser(
description='Example for one positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player titles of type int
parser.add_argument('titles',
metavar='titles',
type=int,
choices=range(0, 20),
help='GrandSlam Titles')

return parser.parse_args()

# define main
def main(titles):
print(f" *** Player had won {titles} GrandSlam 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, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
<<< python test.py 10
*** Player had won 10 GrandSlam titles.
<<< python test.py -1
usage: test.py [-h] titles
test.py: error: argument titles: invalid choice: -1 (choose from 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
<<< python test.py 0
*** Player had won 0 GrandSlam titles.
<<< python test.py 20
usage: test.py [-h] titles
test.py: error: argument titles: invalid choice: 20 (choose from 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)

निष्कर्ष:

  • विकल्प विकल्प मूल्यों की एक सूची लेता है। यदि उपयोगकर्ता इनमें से किसी एक की आपूर्ति करने में विफल रहता है, तो argparse प्रोग्राम को रोक देता है।

  • उपयोगकर्ता को 0-19 नंबरों में से चुनना होगा या argparse एक त्रुटि के साथ रुक जाएगा।

अंत में, आपके पास एक प्रोग्राम भी हो सकता है जो स्ट्रिंग विकल्पों को स्वीकार करता है।

उदाहरण

import argparse

def get_args():
""" Function : get_args
parameters used in .add_argument
1. metavar - Provide a hint to the user about the data type.
- By default, all arguments are strings.

2. type - The actual Python data type
- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

4. choices - pre defined range of choices a user can enter to this program

"""

parser = argparse.ArgumentParser(
description='Example for one positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player names of type str.
parser.add_argument('player',
metavar='player',
type=str,
choices=['federer', 'nadal', 'djokovic'],
help='Tennis Players')

# Adding our second argument player titles of type int
parser.add_argument('titles',
metavar='titles',
type=int,
choices=range(0, 20),
help='GrandSlam Titles')

return parser.parse_args()

# define main
def main(player,titles):
print(f" *** {player} had won {titles} GrandSlam titles.")

if __name__ == '__main__':
args = get_args()
main(args.player,args.titles)

आउटपुट

<<< python test.py
usage: test.py [-h] player titles
test.py: error: the following arguments are required: player, titles
<<< python test.py "federer" 30
usage: test.py [-h] player titles
test.py: error: argument titles: invalid choice: 30 (choose from 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
<<< python test.py "murray" 5
usage: test.py [-h] player titles
test.py: error: argument player: invalid choice: 'murray' (choose from 'federer', 'nadal', 'djokovic')
<<< python test.py "djokovic" 17
*** djokovic had won 17 GrandSlam titles.

  1. आप पाइथन का उपयोग करके MySQL में किसी तालिका में कुछ मानों को कैसे अपडेट कर सकते हैं?

    तालिका में डेटा पुराना हो सकता है और हमें कुछ समय बाद डेटा को बदलने की आवश्यकता हो सकती है। मान लीजिए, हमारे पास छात्रों की एक तालिका है और छात्रों में से एक ने अपना पता बदल दिया है। गलत डेटा के कारण भविष्य में किसी भी समस्या से बचने के लिए हमें डेटाबेस में छात्र का पता बदलना होगा। MySQL में “UPDAT

  1. पायथन में Cerberus का उपयोग करके डेटा को कैसे सत्यापित करें

    परिचय अजगर में Cerberus मॉड्यूल शक्तिशाली लेकिन हल्के डेटा सत्यापन कार्य प्रदान करता है। इसे इस तरह से डिज़ाइन किया गया है कि आप इसे विभिन्न एप्लिकेशन और कस्टम सत्यापन तक बढ़ा सकते हैं। हम पहले एक स्कीमा को परिभाषित करते हैं और फिर योजना के खिलाफ डेटा को मान्य करते हैं और जांचते हैं कि यह प्रदान क

  1. पायथन में स्किकिट-लर्न का उपयोग करके किसी छवि के पिक्सेल मानों को कैसे देखें?

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