Apr-09-2024, 08:15 PM
I am trying to make a UK grading system. The console based app will take name and grade as inputs, save it into a list of dictionaries, convert that list of dictionaries to add a key value pair that represents what grade the student got from. so above 70% is first, above 60% is 2:1 etc. WHat i have problem is with my process name function. basically it takes an input and if the input contains characters that are not part of the english alphabet then it loops and asks for a new name but not before printing an appropriate error message. It keeps looping until the name input contains only letters of the english alphabet. When that occurs the function returns the name. my code follows
def process_name(): ALPHABET = ["a","b","c","d","e","f","g", "h","i","j","k","l","m","n", "o","p","q","r","s","t","u", "v","w","y","y","z"] detected=True while True: name=input("What is the student's name?\n").lower() for char in name: if char not in ALPHABET: detected=False if detected==True: return name else: print(f"{name} contains characters that are not part of the English alphabet!!\n" f"Please enter a valid name!!\n")the problem is that it doesn't always work correctly. It always gives the error and loops if the name input has symbols or numbers but sometimes a clean input like "jim" or "tim" still causes the loop to keep going. as you can see i have the f string to inform the user that the input has characters that are not a part of the alphabet and even if i give it appropriate input it still gives me the error message and loops instead of returning the input to the main function of the program. Sorry if its confusing im just dazzled by the result. i tried setting the alphabet as a string or a list and it still sometimes does not work appropriately. Please help