Dwarf_Class
Dwarf_Class

Reputation: 21

Python 3 How to Ask user for specific input and reject invalid inputs

I have a question on how to check a user's input and make sure they are returning a specific string. Currently, the function when called will ask the user for their input. However, if they choose a string that is not part of the function, the else statement will execute and continue the code. I am trying to figure out how to loop this function, until a user inputs one of the strings that the function is looking for. Can anyone help me with this? I am new to python and would appreciate any help.

def dwarf_class_definer(dwarf_class):
    if dwarf_class == "Thane":
        print("'Ahhh Nobility'")
    elif dwarf_class == "Mekanik":
        print("'Interesting a Mechanic'")
    elif dwarf_class == "Ancestrite":
        print("'A spiritualist. I see...'")
    elif dwarf_class == "Prisoner":
        print("'Never met a gen-u-ine 'Last chancer.'")
    elif dwarf_class == "Civilian":
        print("'ehhh a civilian? Wut you doing here?'")
    else:
        print("You aren't choosing a valid class.")
dwarf_class = input("Which Class will you choose?: ")
dwarf_class_definer(dwarf_class)

Upvotes: 0

Views: 797

Answers (1)

Cohan
Cohan

Reputation: 4544

A while loop will keep going until you tell it not to anymore. You can see when an expected value is supplied, the break command will terminate the while loop. A dictionary can also make your code a lot cleaner and easier to maintain compared to a bunch of if statements.

dwarf_classes = {
    "Thane": "'Ahhh Nobility'",
    "Mekanik": "'Interesting a Mechanic'",
    "Ancestrite": "'A spiritualist. I see...'",
    "Prisoner": "'Never met a gen-u-ine 'Last chancer.'",
    "Civilian": "'ehhh a civilian? Wut you doing here?'",
}

while True:
    dwarf_class = input("Which Class will you choose?: ")

    if dwarf_class in dwarf_classes.keys():
        print(dwarf_classes[dwarf_class])
        break

    print("You aren't choosing a valid class.")

example:

$ python3 so.py 
Which Class will you choose?: Python!
You aren't choosing a valid class.
Which Class will you choose?: Prisoner
'Never met a gen-u-ine 'Last chancer.'

Upvotes: 1

Related Questions