CndRocker
CndRocker

Reputation: 21

python check user input is day of the week

I am attempting to define a function that asks the user which days of the week they are available. I need their input to be saved into a list for future use. I want to ensure they are entering the day of the week properly and that it is in the correct format. I have tried various ways but cannot seem to get it to work correctly.

Here is what I have so far:

daysWeek = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]

def daysInput(message):
    print(daysWeek)
    z = False
    while z == False:
        i = list(input(message).strip().title().replace(",", " ").split(" "))
        print(i)
        varify = 0
        for day in i:
            for dow in daysWeek:
                if day == dow:
                    varify += 1
                else:
                    varify = 0
        if varify == 0:
            print("Invalid entry")
        else:
            z = True
            return i

Upvotes: 0

Views: 545

Answers (1)

trincot
trincot

Reputation: 350770

When varify += 1 is executed, and a next iteration executes, varify is set back to 0 even though the input day had matched with a correct day in the previous iteration. That means that unless you enter only the last day (Sun), the input will be rejected.

Secondly, if a day is found, and the next day from the input is checked, you'll destroy the previous result, by clearing varify again, even though a match will be found in a next iteration.

You need to implement the logic that for all inputs, some day of the week should match with it. You can do this a lot easier with the all function and the in operator:

daysWeek = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]

def daysInput(message):
    print(daysWeek)
    while True:
        inp = list(input(message).strip().title().replace(",", " ").split(" "))
        print(inp)
        if all(day in daysWeek for day in inp):
            return inp
        print("Invalid entry")

daysInput("Enter some days of the week: ")

Upvotes: 1

Related Questions