0

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)
0

1 Answer 1

1

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.'
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you all for the suggestions. i settled for a while loop per your suggestions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.