Как задать числовое значение дней недели

#python

Вопрос:

У меня есть задача присвоить каждому дню недели числовое значение. Например, если день один, программа вернется в понедельник. Все, что у меня есть прямо сейчас, работает, за исключением воскресенья, или 7-го дня. Я попытался изменить код, но ничего не работает.

 def dayOfWeek(day): 
    if day not in range(1, 7):
        return "Unknown"
    elif day == 1:
        return "Monday"
    elif day == 2:
        return "Tuesday"
    elif day == 3:
        return "Wednesday"
    elif day == 4:
        return "Thursday"
    elif day == 5:
        return "Friday"
    elif day == 6:
        return "Saturday"
    elif day == 7:
        return "Sunday"


assert (dayOfWeek(0) == "Unknown")
assert (dayOfWeek(7) == "Sunday")
assert (dayOfWeek(1) == "Monday")
assert (dayOfWeek(3) == "Wednesday"
 

)

Комментарии:

1. Функция диапазона является исключительной (например, диапазон(m, n) позволяет использовать все числа от m до n-1)

2. Если вам нужен диапазон от 1 до 7, вам нужно будет сделать диапазон(1,8).

Ответ №1:

Это предлагается только в качестве будущей альтернативы. Функционально нет никакой разницы.

Вы также можете установить словарь значений

 def dayOfWeek(day):
        days = {
            1: 'Monday',
            2: 'Tuesday',
            3: 'Wednesday',
            4: 'Thursday',
            5: 'Friday',
            6: 'Saturday',
            7: 'Sunday'
        }

        return days[day] if day in days else 'Unknown'
 

Ответ №2:

 def dayOfWeek(day): 
    if day not in range(1, 8):
        return "Unknown"
    elif day == 1:
        return "Monday"
    elif day == 2:
        return "Tuesday"
    elif day == 3:
        return "Wednesday"
    elif day == 4:
        return "Thursday"
    elif day == 5:
        return "Friday"
    elif day == 6:
        return "Saturday"
    elif day == 7:
        return "Sunday"


assert (dayOfWeek(0) == "Unknown")
assert (dayOfWeek(7) == "Sunday")
assert (dayOfWeek(1) == "Monday")
assert (dayOfWeek(3) == "Wednesday")
 

Используйте диапазон от 1 до 8, потому что python отсекает последнее число.

Ответ №3:

В функции диапазона python оставляет последнее число, т. Е. Если это диапазон(a,b), то диапазон изменяется от a до b-1. Таким образом, ваш правильный диапазон будет (1,8), как сказал Ведант Мехта. Если вы путаете с диапазоном, то используйте else оператор. Ваш код:

 def dayOfWeek(day): 
    if day == 1:
        return "Monday"
    elif day == 2:
        return "Tuesday"
    elif day == 3:
        return "Wednesday"
    elif day == 4:
        return "Thursday"
    elif day == 5:
        return "Friday"
    elif day == 6:
        return "Saturday"
    elif day == 7:
        return "Sunday"
    else:
        return "Unknown"


assert (dayOfWeek(0) == "Unknown")
assert (dayOfWeek(7) == "Sunday")
assert (dayOfWeek(1) == "Monday")
assert (dayOfWeek(3) == "Wednesday")