Microsoft Word - CSC152-05_S19__Assignment_03.docx SCSU Spring 2019 CSC 152‐05 Take Home Assignment 03 Points: 100 Due date: 04‐29‐2019 7:30pm....

1 answer below »
Are you able to get me the bonus 30 points


Microsoft Word - CSC152-05_S19__Assignment_03.docx SCSU Spring 2019 CSC 152‐05 Take Home Assignment 03                                 Points: 100              Due date:  04‐29‐2019 7:30pm.                                     Instructions: This is an individual assessment. Plagiarism will result in a zero grade.    Goal  To write a program in Python to test the user’s ability to do arithmetic operations on  fractions, and award points on correct attempts.  Description:   The program starts showing two messages to the user (see sample runs). It will have  one or more rounds, depending on whether the user decides to continue or not at  the end of each round. During each round, the program will ask the user to enter the  numerator and the denominator of the correct answer for an arithmetic operation  involving fractions. These fractions, as well as the specific operation itself (one of the  following  four:  addition,  subtraction,  multiplication,  and  division)  should  be  generated/chosen  randomly.  These  fractions  (operands)  will  always  be  positive,  however, please note that, the result might not be always positive (Note: You do NOT  need  to  reduce  any  of  the  fractions  in  this  program  to  their  lowest  terms).  The  operand fractions should always have a value less or equal to 1 when reduced (which  means  the  numerator  of  a  fraction  cannot  be  greater  than  the  corresponding  denominator).  The  range  of  values  for  the  numerators  of  the  fractions  are  determined by the difficulty level chosen by the user (1, 2, or 3) at the beginning of  each  round.  Level  1  restricts  the  denominators  to  [1,  5],  level  2  restricts  the  denominators to [6, 10], and level 3 restricts the denominators to [11, 15]. Any other  value for the difficulty level entered by the user should be considered invalid and the  user  should  be  asked  to  re‐enter  the  difficulty  level.  Once  a  problem  (two  numerators,  two denominators and  the arithmetic operation  to be performed on  them) is generated, the user is shown the problem and asked to enter the numerator  and the denominator of the estimated result (if the result is negative, enter a negative  numerator  and  positive  denominator).  If  both  of  the  entered  values  are  correct  (matches the correct numerator and denominator), the user gains points equal to the  difficulty  level  chosen  for  the problem  (the user has  zero points when  the  game  starts). At the end of each round, the user is shown the total points so far. The user  is then asked whether to continue playing or not. If the user answers affirmatively  (using either uppercase or  lowercase Yes or y), another  round begins.  If  the user  wants to leave (indicated by case insensitive an input of No or n), the program shows  how many  points  the  user  has  accumulated  so  far,  and  terminates  showing  the  parting message. For exact input prompt and output details, see the example runs.       Example runs:  ****************************************  ‐‐‐‐‐‐‐‐‐‐Welcome To Math DOJO‐‐‐‐‐‐‐‐‐‐  ****************************************                                                                          ‐‐‐‐‐‐‐‐We are Going to Do Some Arithmetic Challenges Today !‐‐‐‐‐‐‐‐‐                                                                          What Difficulty Level You Want to Play at [1/2/3] ? 3  12/13 ‐ 10/12 = ?   Enter the Numerator: 2  Enter the Denominator: 3  Sorry, wrong answer. Correct answer is: 14/156  You have total 0 points    Do you want to continue playing [Yes/Y/No/N] ? n                                            ‐‐‐‐‐You are leaving with 0 points‐‐‐‐‐‐                                            ###################################  ‐‐‐‐‐‐‐Goodbye from Math DOJO‐‐‐‐‐‐  ###################################    ****************************************  ‐‐‐‐‐‐‐‐‐‐Welcome To Math DOJO‐‐‐‐‐‐‐‐‐‐  ****************************************                                                                          ‐‐‐‐‐‐‐‐We are Going to Do Some Arithmetic Challenges Today !‐‐‐‐‐‐‐‐‐                                                                          What Difficulty Level You Want to Play at [1/2/3] ? 1  2/2 / 4/4 = ?   Enter the Numerator: 8  Enter the Denominator: 8  Correct Answer ! You got 1 points !  You have total 1 points    Do you want to continue playing [Yes/Y/No/N] ? y  What Difficulty Level You Want to Play at [1/2/3] ? 2  8/10 ‐ 8/8 = ?   Enter the Numerator: ‐16  Enter the Denominator: 8  Sorry, wrong answer. Correct answer is: ‐16/80  You have total 1 points    Do you want to continue playing [Yes/Y/No/N] ? 2  Invalid response.  Do you want to continue playing [Yes/Y/No/N] ? NM  Invalid response.  Do you want to continue playing [Yes/Y/No/N] ? y  What Difficulty Level You Want to Play at [1/2/3] ? 3  9/13 * 10/11 = ?   Enter the Numerator: 90  Enter the Denominator: 143  Correct Answer ! You got 3 points !  You have total 4 points    Do you want to continue playing [Yes/Y/No/N] ? y  What Difficulty Level You Want to Play at [1/2/3] ? 4  Invalid response.  What Difficulty Level You Want to Play at [1/2/3] ? 5  Invalid response.  What Difficulty Level You Want to Play at [1/2/3] ? 3  11/12 * 11/13 = ?   Enter the Numerator: 121  Enter the Denominator: 156  Correct Answer ! You got 3 points !  You have total 7 points    Do you want to continue playing [Yes/Y/No/N] ? n                                            ‐‐‐‐‐You are leaving with 7 points‐‐‐‐‐‐                                            ###################################  ‐‐‐‐‐‐‐Goodbye from Math DOJO‐‐‐‐‐‐  ###################################  ****************************************  ‐‐‐‐‐‐‐‐‐‐Welcome To Math DOJO‐‐‐‐‐‐‐‐‐‐  ****************************************                                                                          ‐‐‐‐‐‐‐‐We are Going to Do Some Arithmetic Challenges Today !‐‐‐‐‐‐‐‐‐                                                                          What Difficulty Level You Want to Play at [1/2/3] ? 1  1/1 + 1/2 = ?   Enter the Numerator: 3  Enter the Denominator: 2  Correct Answer ! You got 1 points !  You have total 1 points    Do you want to continue playing [Yes/Y/No/N] ? nm  Invalid response.  Do you want to continue playing [Yes/Y/No/N] ? n                                            ‐‐‐‐‐You are leaving with 1 points‐‐‐‐‐‐                                            ###################################  ‐‐‐‐‐‐‐Goodbye from Math DOJO‐‐‐‐‐‐  ###################################    Technical Requirements  1. Use the Python random library to generate the numerators, denominators, and  the arithmetic operation to be performed on the fractions (hint: you have to use  the function ‘choice’ for one of these).    2. Use at least five functions (excluding main function). The functions should be as  follows:  a. A function named show_decorated_message. It should take the following  three parameters: the message to be displayed, the length of the bars  shown above and below the message, and the character used for these  bars. This function should not return anything    b. A function named get_user_response. It should accept two parameters:  the prompt to be shown to the user, and the list of allowed (valid)  responses. This function should handle all the user input in the program,  and return the validated user response to the caller.    c. A function named validate_response. It should take the following two  parameters: the response to be validated, and the set of allowed (valid)  responses. This function returns True or False depending on whether the  response is valid or not.    d. A function named generate_problem. It should accept a single parameter:  the difficulty level. This function should generate the problem for the user  and return a tuple containing the description of the problem and the  correct answer to the caller.    e. A function named compute_correct_answer. It should accept five  parameters: the denominators and the numerators of the two fractions,  and the operation to be performed. It should return a tuple containing the  numerator and the denominator of the correct answer computed from the  parameters.     f. The main function. It should act as the glue and make calls to the  necessary functions to run the program.     3. All the user input should take place within the get_user_input function.    4. You do not have to handle malformed input (non‐numerical inputs where  numerical input is expected, and vice‐versa). However, you will have to handle  inputs that are outside valid set of inputs (e.g. anything except for 1,2, or 3 is  invalid for difficulty level input) and keep asking the user to re‐enter the input  until a valid input is entered.    5. Your program should have the same format and spacing for input prompt and  outputs as shown in the example runs.     6. Your program should be fully commented.    7. Use these formulae for computing the correct answers:     a. a/b + c/d = ( a*d + b*c )/(b*d)  b. a/b ‐ c/d = ( a*d – b*c )/(b*d)  c. a/b * c/d = (a*c)/(b*d)  d. a/b / c/d =  (a*d)/(b*c)    Program Steps  Every program in this course will require you to work on three stages. The first stage is  writing test cases, the second stage is writing designs, and the third stage is writing the  code  (implementation  of  the  design).  The  first  two  stages  are  going  to  help  you  to  understand and test the program – I recommended you to complete them before writing  your code. The last stage represents the code for the problem and that is the only part  that you need to submit.    (0 Points) Step 1: Test Case Design  One of the common mistakes of for students is to think about the code as the first step  to answer a problem. This is wrong, it is too early for the student to think about the code  as the first step to find a solution for a specific problem, instead you should think about  how the program is supposed to behave and come up with a test plan for your program.    Without writing any  line of code, think about the  input of the program and the  expected output or how  the program  is going  to behave  for certain  inputs  (for  example,  invalid  responses  for  difficulty  level  or whether  to  continue  playing,  incorrect numerator, incorrect denominator, etc.). As a first step for every program  is to make a test plan for the program.   (0 points) Step 2: Program Logic Design  Have  a  look  over  the  program  description  and  come  up  with  pseudocode  that  describes how the program is going to look.    Your  first  step  to  do  that  is  create  a  python  file  name  it  “YOURLASTNAME_CSC15205S19_PROGRAM_03.py”.    Replace the part YOURLASTNAME with your actual last name.   Write  the  program  pseudocode  (use  plain  English,  not  python  code)  as  comments inside your Python file. You should put # at the start of each line.    Write your name and date on the top of the file as comments.    After the # symbol, give every step of your design a number so you can refer  to this step later (such as 1,1.1,1.2,2, etc.).   You have to come up with a design that has at least 5 functions excluding the  main function.   The  functions will have  their  independent numbering starting  from 1 and a  name.   Whenever you use a function in other part of the design, mention it.   Once you done, save your work.     (100 Points) Coding  Use  the program design  that you  came up with  from  the previous phase and write a  python code which will work as mentioned  in  the program description. Your program  should be as follows:   Go back to your design file –the one you made from the previous step ‐ which has  the name “YOURLASTNAME_CSC15205S19_PROGRAM_03.py”.   Now go over and write an equivalent python code line(s) under every design step.    Make sure  that every variable  that you will use will have a proper name which  reflects its task (This name should not be one character)    Your program should ask the user to enter the inputs using the format provided in  the sample run, which you can find on the first page.    When you have finished coding (implementing the design), test it with the inputs  you used in Step 1 to verify that the actual outputs match the expected outputs.   Once you are ready to submit the program, attach it to an email with the subject  “YOURLASTNAME_CSC15205S19_PROGRAM_03”  and  send  it  to  me  at  [email protected]  __________________________________________________________________ BONUS: 30 Points If you can show the complete history (round number, the problems, the correct answers, user’s answers, points gained at that round, and the total points at the end of that round) of the game by storing each of these in a separate list (except for the round number) and showing to the user at the end of the game, you will get 30 bonus points. (HINTS: YOU WILL HAVE TO USE LISTS FOR THIS PART). Sample Run with bonus: **************************************** ----------Welcome To Math DOJO---------- **************************************** --------We are Going to Do Some Arithmetic Challenges Today !--------- What Difficulty Level You Want to Play at [1/2/3] ? 1 2/4 + 4/4 = ? Enter the Numerator: 24 Enter the Denominator: 16 Correct Answer ! You got 1 points ! You have total 1 points Do you want to continue playing [Yes/Y/No/N] ? y What Difficulty Level You Want to Play at [1/2/3] ? 2 9/10 / 1/6 = ? Enter the Numerator: 54 Enter the Denominator: 10 Correct Answer ! You got 2 points ! You have total 3 points Do you want to continue playing [Yes/Y/No/N] ? 3 Invalid response. Do you want to continue playing [Yes/Y/No/N] ? y What Difficulty Level You Want to Play at [1/2/3] ? 3 2/12 / 3/12 = ? Enter the Numerator: 24 Enter the Denominator: 35 Sorry, wrong answer. Correct answer is: 24/36 You have total 3 points Do you want to continue playing [Yes/Y/No/N] ? n -----You are leaving with 3 points------ ################################### -------Goodbye from Math DOJO------ ################################### Round#0 Problem: 2/4 + 4/4 = ? Correct Answer: 24/16 User's Answer: 24/16 Points Gained in Round: 1 Total Points after Round: 1 Round#1 Problem: 9/10 / 1/6 = ? Correct Answer: 54/10 User's Answer: 54/10 Points Gained in Round: 2 Total Points after Round: 3 Round#2 Problem: 2/12 / 3/12 = ? Correct Answer: 24/36 User's Answer: 24/35 Points Gained in Round: 0 Total Points after Round: 3 __________________________________________________________________ Special Instructions: 1. Use main function: a. All code should be inside “def main():” block or some function ( except for import statements) b. Make sure to invoke the main function by including “main()” 2. Follow file naming convention as mentioned to avoid getting points deducted. Clues: 1. Return tuple containing tuples from a function: def test_func(): a = 5 b = 6 c = 7 return (a, (b , c) ) 2. Retrieve the values stored in the tuples: (x, (y, z) ) = test_func() 3. Center justifying a string s to a longer string of length n and padding character c: Use s.center(n, c). Left and Right justification can be done using the functions ljust() and rjust(), which takes similar arguments as the function center(). https://docs.python.org/3/tutorial/inputoutput.html Examples: "Hello".center(15,"-") produces '-----Hello-----' "Welcome".center(20,"#") produces '######Welcome#######'
Answered Same DayApr 11, 2021

Answer To: Microsoft Word - CSC152-05_S19__Assignment_03.docx...

Abhishek answered on Apr 14 2021
137 Votes
38779 - Python/Problem/p3skeletoncode-k1z2pnrw.py
from random import randint, choice
def show_decorated_message(messsage, message_len, decorator_char):
pass

def validate_response(valid_responses, response):
pass
def get_user_response(prompt, valid_responses):
pass
def compute_correct_answer(n1,d1,n2,d2,operation):
pass

def generate_problem(difficulty_level):
pass
def show_history(problem_list, correct_answer_list, user_answer_list, points_gained_in_round_list, total_points_after_round_list):
pass
def main():
pass
main()
38779 - Python/Problem/csc152-05s19assignment03-zv5anqkh.pdf
SCSU Spring 2019 CSC 152‐05 Take Home Assignment 03
Points: 100
Due date:  04‐29‐2019 7:30pm.
Instructions: This is an individual assessment. Plagiarism will result in a zero grade.
Goal 
To write a program in Python to test the user’s ability to do arithmetic operations on 
fractions, and award points on correct attempts. 
Description:
The program starts showing two messages to the user (see sample runs). It will have 
one or more rounds, depending on whether the user decides to continue or not at 
the end of each round. During each round, the program will ask the user to enter the 
numerator and the denominator of the correct answer for an arithmetic operation 
involving fractions. These fractions, as well as the specific operation itself (one of the 
following  four:  addition,  subtraction,  multiplication,  and  division)  should  be 
generated/chosen  randomly.  These  fractions  (operands)  will  always  be  positive, 
however, please note that, the result might not be always positive (Note: You do NOT 
need  to  reduce  any  of  the  fractions  in  this  program  to  their  lowest  terms).  The 
operand fractions should always have a value less or equal to 1 when reduced (which 
means  the  numerator  of  a  fraction  cannot  be  greater  than  the  corresponding 
denominator).  The  range  of  values  for  the  numerators  of  the  fractions  are 
determined by the difficulty level chosen by the user (1, 2, or 3) at the beginning of 
each  round.  Level  1  restricts  the  denominators  to  [1,  5],  level  2  restricts  the 
denominators to [6, 10], and level 3 restricts the denominators to [11, 15]. Any other 
value for the difficulty level entered by the user should be considered invalid and the 
user  should  be  asked  to  re‐enter  the  difficulty  level.  Once  a  problem  (two 
numerators,  two denominators and  the arithmetic operation  to be performed on 
them) is generated, the user is shown the problem and asked to enter the numerator 
and the denominator of the estimated result (if the result is negative, enter a negative 
numerator  and  positive  denominator).  If  both  of  the  entered  values  are  correct 
(matches the correct numerator and denominator), the user gains points equal to the 
difficulty  level  chosen  for  the problem  (the user has  zero points when  the  game 
starts). At the end of each round, the user is shown the total points so far. The user 
is then asked whether to continue playing or not. If the user answers affirmatively 
(using either uppercase or  lowercase Yes or y), another  round begins.  If  the user 
wants to leave (indicated by case insensitive an input of No or n), the program shows 
how many  points  the  user  has  accumulated  so  far,  and  terminates  showing ...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here