পরিচয়..
ধরে নিন ব্যবহারকারীর কাছ থেকে টেনিস গ্র্যান্ডস্লাম শিরোনামের সংখ্যা গ্রহণ করতে এবং সেগুলি প্রক্রিয়া করার জন্য আপনাকে একটি প্রোগ্রাম কোড করতে বলা হয়েছে। আমরা ইতিমধ্যেই জানি, ফেদেরার এবং নাদাল টেনিসে সর্বাধিক গ্র্যান্ডস্লাম খেতাব ভাগ করে নিয়েছেন যা 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 নম্বর থেকে বেছে নিতে হবে অথবা আর্গপার্স একটি ত্রুটির সাথে বন্ধ হয়ে যাবে।
অবশেষে, আপনার কাছে একটি প্রোগ্রামও থাকতে পারে যা স্ট্রিং পছন্দ গ্রহণ করে।
উদাহরণ
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.