Practice 1
  Write the function rps_string(integer) that returns the
  string 'rock', 'paper', 'scissors', or 'error' depending on the
  value of the specified integer.  If integer is 0, the
  function should return 'rock'.  If integer is 1, the
  function should return 'paper'.  If integer is 2, the
  function should return 'scissors'.  If integer is not
  0, 1, or 2, the function should return 'error'.  Use chained
  conditionals to simplify the code.
Practice 2
  Write the function normalize(integer) that returns the
  clamped normalization of the specified integer.
  If integer is less than 0, the function should return
  0.0.  If integer is greater than 100, the function
  should return 1.0.  If integer is in the range [0,
  100], the function should return integer / 100.0.  Use
  chained conditionals to simplify the code.
You would think students would be used to the letter grade system. However, I still have students ask how their letter grade is relates to their numeric grade. Let's write a program to help these students, applying what you just learned about conditionals.
Details
  In a file called grades.py, write a function
  called convert_grade(numeric).  This function takes an
  integer which should be greater than 0, and represents some students'
  grades.  Your function should return a string with a single
  character, either 'A', 'B', 'C', 'D', or 'F'.  Use the following
  scale for your conversions.  Do not use any logical
  operators for this exercise.
- A
- \([90, 100]\)
- B
- \([80, 90)\)
- C
- \([70, 80)\)
- D
- \([60, 70)\)
- F
- \([0, 60)\)
Note that square brackets mean inclusive, and parenthesis means exclusive.
Make sure to test your function by calling the function multiple times with different parameters. Make sure your code follows the course's code conventions.
Test Cases
| Function Parameters | Expected Output | 
|---|---|
| 95 | A | 
| 90 | A | 
| 89 | B | 
| 80 | B | 
| 79 | C | 
| 70 | C | 
| 69 | D | 
| 60 | D | 
| 59 | F | 
Hint
Make sure you pay attention to order. If you chose your order carefully (such as starting at the F range) you can simplify your conditions greatly.
Syntatically we don't care about having multiple returns in a function. However, stylistically we want to limit the number of return statements. For the time being, only use one return statement. To do so, store what you are returning in a variable, that you create at the beginning of the function.
Challenge
Most users like more levels of specification. For example, on the Roanoke College campus we use the +/- system as well. Add code to your function so that it can also output A+'s and D-'s. Recall that there is no such thing as an F+ or F-.
For all levels (except for F), you get a + if the 1's place is 7 or greater. You get a - if the 1's place is 3 or less.
One of the most confusing aspects of validating dates is accounting for the number of leap years in that period. Every year, there is roughly an extra \(\frac{1}{4}\) day. To account for this, almost every 4 years we add an additional day to the month of Februray. The rules for this are straight-forward, but the reasoning and implementation of them is sometimes confusing.
Details
  In a file called date_validation.py, write a set of test
  cases to ensure your is_leap_year(year) function
  operates under the following specification.
  A leap year occurs almost every 4 years.  All leap years are
  divisible by 4, but not all years divisible by 4 are leap years.
  A year is a leap year if it is divisible by 4, unless it is
  divisible by 100 and not divisible by 400.
  
    Your function should return True if the
  year parameter is a leap year, and False otherwise.
Sample Test Cases
| Function Parameters | Expected Output | 
|---|---|
| 1900 | False | 
| 2000 | True | 
| 1996 | True | 
| 2015 | False | 
Hint
- 
	You can use the %(mod) operator to test divisibility. Ifyear % 4is 0, then year is divisible by 4.
- 
	Dont forget that you can use your logical constructs to reduce the complexity of the condition checks. 
Challenge
Another approach to testing is exhaustive enumeration. There have been 2015 years since the beginning of the common era. Write code that checks all of the years since 0 A.D. Compute the total number of leap years in that time frame.
Submission
Please show your source code and run your programs for the instructor or lab assistant. Only a programs that have perfect style and flawless functionality will be accepted as complete.