Skip to content

Latest commit

 

History

History
97 lines (66 loc) · 3.86 KB

File metadata and controls

97 lines (66 loc) · 3.86 KB

13.2 Birthday remaining

The problem

Calculate how many days are remaining for the next birthday.

This code is submitted by Programmer Karim.

Hints

Let’s say, you want to display 5 random numbers. You can write the code like below:

importrandomprint(random.randint(0,10)) print(random.randint(10,20)) print(random.randint(20,30)) print(random.randint(30,40)) print(random.randint(40,50))

Try it on Programming Hero

The problem is that, in every line, you have to type random.randint. As a programmer, you will be lazy. Hence, while import you can import the randint directly in your code. For that, you have to say, from random import randint. Like below:

fromrandomimportrandintprint(randint(0,10)) print(randint(10,20)) print(randint(20,30)) print(randint(30,40)) print(randint(40,50))

Try it on Programming Hero

Solution

The code below is submitted by Programmer Karim...

fromdatetimeimportdatetimeimporttimedefget_user_birthday(): date_str=input("Enter your birth date in DD/MM/YYYY: ") try: birthday=datetime.strptime(date_str, "%d/%m/%Y") exceptTypeError: birthday=datetime.datetime(*(time.strptime(date_str, "%d/%m/%Y")[0:6])) returnbirthdaydefdays_remaining(birth_date): now=datetime.now() current_year=datetime(now.year, birth_date.month, birth_date.day) days= (current_year-now).daysifdays<0: next_year=datetime(now.year+1, birth_date.month, birth_date.day) days= (next_year-now).daysreturndaysbirthday=get_user_birthday() next_birthday=days_remaining(birthday) print("Your birthday is coming in: ", next_birthday, " days")

Explanation

We imported the datetime method from the datetime module. It has a lot of good functionalities.

First, in the get_user_birthday function, we take user birthday in a format of DD/MM/YYYY. This means we are telling the user to insert the date of his/her birthday first then a forward slash followed by the month and year in four-digits.

Then, we convert the birthday in a python date by using datetime.strptime function. To that function, we have to pass the date in the string and the format of the date. The format of the date is %d/%m/%Y.

We also imported time. Sometimes, strptime gives some Type exception. For that reason, we put a try-except there.

If you convert a date string to a python date, then you can easily access the day, month and year and do some extra calculation over the date.

We have another method called days_remaining. In that method, we first get the date of now. This is actually the date of the time right now. It is the time when you run the code.

Then, you calculate the users' birthday of the current year. It’s simple...you just take the year from now (current year) with month and date from users' birthday.

The next thing is very simple...you just get the difference between the user’s birthday in the current year and now, and ultimately get the days.

If the birthday for this year is over, the difference will be negative, because the birthday for this year has already passed. Then, we get the birthday for the next year by adding one(1) with the current year and with the month and the day from the birth date.

At last, we calculate the difference.

That’s a pretty simple way to get the days remaining for your next birthday.

Isn’t it cool?

  Next Page  

tags: programming-heropythonpython3problem-solvingprogrammingcoding-challengeinterviewlearn-pythonpython-tutorialprogramming-exercisesprogramming-challengesprogramming-fundamentalsprogramming-contestpython-coding-challengespython-problem-solving

close