Package: ask-question
Ask QuestionDescriptionThis is a python package I created in order to simplify the boiling process when asking the user a question via TTY.Table of Contentask_questionDescriptionTable of ContentInstallationUsing pipUsing pythonUsageImportingInitialisingCalling the pause functionAsking a questionWhere do you live ?How old are you ?Do you like sugar ?Available boilingChange the initialisation contentChanging the forbidden charactersChanging the descriptionChanging bothAuthorVersionInstallationUsing pippipinstall-Uask-questionUsing pythonUnder windows:py -m pip install -U ask-questionUnder Linux/Mac OS:python3-mpipinstall-Uask-questionUsageImportingimportask_questionasaqInitialisingThe generic class is:AskQuestion(human_type:dict={}, illegal_characters_nb:str="")AQI=aq.AskQuestion()Calling the pause functionThe generic function is:pause(self,pause_message:str="Press enter to continue...")The output is: NoneAQI.pause("Press enter to continue ...")Asking a QuestionThe generic function to ask a question is:ask_question(self,question:str,answer_type:str)The outputs of this functions can be:str   = a stringint   = a whole numberfloat = a floating numberWhere do you liveanswer=AQI.ask_question("Where are you from? ","str")print(f"You live in{answer}!")How old are youanswer=AQI.ask_question("How old are you?","uint")ADD_S=""ifanswer>1:ADD_S="s"print(f"You are{answer}year{ADD_S}old !")Do you like sugaranswer=AQI.ask_question("Do you like sugar? [(Y)es/(n)o]: ","bool")ifanswer==True:print("You like sugar !")else:print("You do not like sugar.")Available boilingHere are all the available boiling options and their explanation:int = whole number (-1, 0, 1, 2, 3, etc...)float = floating number (-1.2, 0.1, 1.2, etc...)uint = whole positive number (0, 1, 2, etc...)ufloat = whole positive floating number (0.1, 1.2, etc ...)num = numeric (numbers from 0 onwards)alnum = alphanumeric (only numbers and the alphabet)isalpha = alphabet (from a to z and A to Z)char = alphabet (from a to z and A to Z)ascii = ascii Tablestr = string (any character you can type)version = version (numbers seperated by '.' characters)ver = version (numbers seperated by '.' characters)bool = boolean (yes/True/1 or no/False/0 answer type)Change the initialisation contentWhen initialising the class it is possible to change the forbidden characters and/or the descriptions of the available types.changing the forbidden charactersimportask_questionasaqillegal_characters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\\t\\n\\r\\x0b\\x0c"illegal_characters=illegal_characters.replace("0123456789","")AQI=aq.AskQuestion(dict(),illegal_characters)This initialisation has changed the characters that will be allowed for the number conversion in the 'int' and 'float' options.Changing the descriptionsimportask_questionasaqhuman_type={"int":"whole number (-1, 0, 1, 2, 3, etc...)","float":"floating number (-1.2, 0.1, 1.2, etc...)","uint":"whole positive number (0, 1, 2, etc...)","ufloat":"whole positive floating number (0.1, 1.2, etc ...)","num":"numeric (numbers from 0 onwards)","alnum":"alphanumeric (only numbers and the alphabet)","isalpha":"alphabet (from a to z and A to Z)","char":"alphabet (from a to z and A to Z)","ascii":"ascii Table","str":"string (any character you can type)","version":"version (numbers seperated by '.' characters)","ver":"version (numbers seperated by '.' characters)","bool":"boolean (yes/True/1 or no/False/0 answer type)",}AQI=aq.AskQuestion(human_type)This initialisation has changed the descriptions for the types.
When the user will enter a wrong answer, the description displayed for the type you were expecting will be taken from the human_type dictionnary you have entered.Changing bothimportask_questionasaqillegal_characters="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\\t\\n\\r\\x0b\\x0c"illegal_characters=illegal_characters.replace("0123456789","")human_type={"int":"whole number (-1, 0, 1, 2, 3, etc...)","float":"floating number (-1.2, 0.1, 1.2, etc...)","uint":"whole positive number (0, 1, 2, etc...)","ufloat":"whole positive floating number (0.1, 1.2, etc ...)","num":"numeric (numbers from 0 onwards)","alnum":"alphanumeric (only numbers and the alphabet)","isalpha":"alphabet (from a to z and A to Z)","char":"alphabet (from a to z and A to Z)","ascii":"ascii Table","str":"string (any character you can type)","version":"version (numbers seperated by '.' characters)","ver":"version (numbers seperated by '.' characters)","bool":"boolean (yes/True/1 or no/False/0 answer type)",}AQI=aq.AskQuestion(human_type)You have now impacted the int and float typing as well as the 'type' descriptions.AuthorThis module was written by (c) Henry Letellier
Attributions are appreciated.Quick way (I assume you have already initialised the class):print(f"AskQuestion is written by{AQI.author}")VersionThe current version is 1.0.0An easy way to display the version is:importask_questionasaqprint(f"Version :{aq.__Version__}")