Posts: 3
Threads: 1
Joined: May 2018
I am new to programming and need help writing the below piece of code in switch-case.
Please HELP.
Thanks in Advance
def pick_day():
'''Inputs day of week and returns the specified day.
'''
day_of_week = input('\nInput Day of the Week as Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, or Sunday?\n').title()
if day_of_week == 'Monday':
return 0
elif day_of_week == 'Tuesday':
return 1
elif day_of_week == 'Wednesday':
return 2
elif day_of_week == 'Thursday':
return 3
elif day_of_week == 'Friday':
return 4
elif day_of_week == 'Saturday':
return 5
elif day_of_week == 'Sunday':
return 6
else:
print("\nInvalid Entry, Please try again")
return pick_day()
Posts: 2,128
Threads: 11
Joined: May 2017
There is no case statement in Python. We have good data structures.
You can use for example a dict:
def get_weekday_number(day):
"""
The function returns the number of weekday for given day.
Lower case and upper case are allowed.
"""
days = {
'Friday': 4,
'Monday': 0,
'Saturday': 5,
'Sunday': 6,
'Thursday': 3,
'Tuesday': 1,
'Wednesday': 2,
}
return days[day.title()]
Posts: 1,150
Threads: 42
Joined: Sep 2016
Next time post your code in Python code tags, and if you get errors post full error traceback message in error tags, you can find help here.
What is the problem you are facing with the code?
A common solution for this is to use a dictionary in place of switch-case.
Posts: 3
Threads: 1
Joined: May 2018
j.crater
How do I use dictionary to get the same result.
Thanks for your help.
Posts: 7,324
Threads: 123
Joined: Sep 2016
May-26-2018, 04:03 PM
(This post was last modified: May-26-2018, 04:03 PM by snippsat.)
(May-26-2018, 01:53 PM)pyhelp Wrote: How do I use dictionary to get the same result. You use code bye @ DeaD_EyE,and add your input line as a argument to the function.
def get_weekday_number(day):
"""
The function returns the number of weekday for given day.
Lower case and upper case are allowed.
"""
days = {
'Friday': 4,
'Monday': 0,
'Saturday': 5,
'Sunday': 6,
'Thursday': 3,
'Tuesday': 1,
'Wednesday': 2,
}
return days.get(day.title(), 'Day not found')
day_of_week = input('\nInput Day of the Week as Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, or Sunday?\n')
print(get_weekday_number(day_of_week)) Slightly modified with get() method,
the can catch error in input and return Day not found .
Posts: 3
Threads: 1
Joined: May 2018
Thank You for your HELP,
The below code works fine but how to handle the error, if a user inputs any month or type anything other than the months listed below.
def pick_month():
'''returns number for the month given
'''
input_month = input('\nInput Month as January, February, March, April, May, or June?\n').title()
month_of_year = {
'January': '01',
'February': '02',
'March': '03',
'April': '04',
'May': '05',
'June': '06'
}
return month_of_year.get(input_month.title(), 'Month not found')
Posts: 7,324
Threads: 123
Joined: Sep 2016
(May-28-2018, 06:41 PM)pyhelp Wrote: The below code works fine but how to handle the error, if a user inputs any month or type anything other than the months listed below. You use the same get() method as i showed in previous post you,so it handles error.
A run of your code:
>>> pick_month()
Input Month as January, February, March, April, May, or June?
April
04
Input Month as January, February, March, April, May, or June?
car
Month not found
>>> pick_month()
Input Month as January, February, March, April, May, or June?
12345
Month not found
>>> pick_month()
Input Month as January, February, March, April, May, or June?
June
06
Posts: 8,168
Threads: 160
Joined: Sep 2016
(Nov-11-2018, 07:02 AM)MeenakshiAgarwal Wrote: There is one more elegant way to achieve the switch-case effect in Python, i.e., using the OOPs concept. Frankly, both examples are overcomplicated implementation for something that can be written in few lines.
Posts: 536
Threads: 0
Joined: Feb 2018
Nov-11-2018, 08:53 PM
(This post was last modified: Nov-11-2018, 08:53 PM by woooee.)
Quote:Frankly, both examples are overcomplicated
Yes, a simple list will do. This omits the input portion of the code as that is not part of the "case statement".
day_of_week=["Sunday". "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"]
if input_day in day_of_week:
return day_of_week.index(input_day)
else:
print("\nInvalid Entry, Please try again")
|