[Tutor] Fwd: Re: Passing arguments?

Ricardo Aráoz ricaraoz at gmail.com
Tue Oct 22 15:21:17 CEST 2013


- Did you notice your assignment specifically asks for a "while" loop 
for validation? That means you are expected to validate input. Run your 
program and when the program asks "Please enter the weight of the 
product in pounds: " answer "123...this is a mistake", what does it 
happen? Your program should answer "That is not a valid weight" and ask 
for the weight again. Does it? (tip: you should be using "while" and "on 
error")

- You have a function named cal_shiprate(), according to it's name this 
function should calculate the shipping rate NO MORE. But your function 
also prints not only the shipping rate but some other info too. So you 
either name your function 
cal_shiprate_and_print_with_prodname_and_weightf() or your function 
should ONLY calculate the shipping rate and you should have ANOTHER 
function to print the info. The recommended approach would be the second 
one.


El 21/10/13 23:23, Jenny Allar escribió:
> Thank you all for your help with this program. Each of your answers 
> helped me piece together an understanding of the assignment. After 
> several days and clearly over-thinking the entire process, I ended up 
> using the following code:
>
> def main ():
>     name = input("Please enter the name of the product: ")
>     weight = float(input("Please enter the weight of the product in 
> pounds: "))
>
>     cal_shiprate (name, weight)
>
> def cal_shiprate(product_name, product_weight):
>
>     if product_weight < 10:
>        ship_rate = 1.5
>     elif product_weight >= 10 and product_weight < 25:
>        ship_rate = 1.45
>     else:
>         ship_rate = 1.4
>
>     total = product_weight * ship_rate
>
>     print("")
>     print(product_name, "weight in pounds              ", format 
> (product_weight, '9,.2f'))
>     print ("Your total to ship", product_name, "is:  $", format 
> (total, '9,.2f'))
>
>
> main ()
>
>
>
>
> On Sun, Oct 20, 2013 at 6:01 PM, Ricardo Aráoz <ricaraoz at gmail.com 
> <mailto:ricaraoz at gmail.com>> wrote:
>
>     Sorry, I sent this answer to the OP directly and not to the list.
>
>     -------- Mensaje original --------
>     Asunto: 	Re: [Tutor] Passing arguments?
>     Fecha: 	Sun, 20 Oct 2013 11:25:52 -0300
>     De: 	Ricardo Aráoz <ricaraoz at gmail.com> <mailto:ricaraoz at gmail.com>
>     A: 	Jenny Allar <jennyallar at gmail.com> <mailto:jennyallar at gmail.com>
>
>
>
>     El 20/10/13 01:20, Jenny Allar escribió:
>>     I've written the code below the assignment, and I think I have
>>     everything covered in terms of asking the user for the
>>     information I need and somehow calculating costs, but I'm just
>>     ridiculously confused on the order and placement of the functions
>>     and components of this program- specifically the shiprate
>>     variable. Thank you in advance for any help.
>>
>
>     Ok, just a couple of things first.
>
>     - Your assignment specifically says 'always use "while loops" to
>     validate' but I see no loop at all in your code. You might want to
>     look into it.
>
>         - What your assignment points to when it says to use "while
>     loops" is that you should validate that what the user inputs is a
>     valid number. If the user will input something else than a number
>     as the weight then when you apply the int() function an exception
>     will be flagged and your program will terminate ungracefully. You
>     may validate input using "exceptions" and "while loops" (look it up).
>
>     - Your functions should do what their name imply, and preferably
>     do only one thing. Having a function named calc_weight_large()
>     that also prints the shipping cost is not good.
>
>     - Your if asks for >= 10 and your elif for <= 10 when the "= 10"
>     case was already handled by the first if, that is a mistake.
>     Besides which it might be better looking (though this is a matter
>     of personal preference) if you ::
>             if weight > 25
>                 # do something
>             elif weight > 10
>                 # do something else
>             else
>                 # do something entirely different
>
>     - I would structure the program in the following way ::
>             def main():
>                 product = in_product()
>                 weight = in_weight()
>
>                 if weight > 25
>                     total = calc_shipping(1.40, weight)
>                 elif weight > 10
>                     total = calc_shipping(1.45, weight)
>                 else
>                     total = calc_shipping(1.50, weight)
>                 print_data(product, weight, total)
>
>>     This is my assignment:
>>
>>     Write a program that asks a user for the name of a product that
>>     they are ordering online and its weight.  The program must
>>     calculate the cost of shipping the product using the following
>>     cost structure.  If it weighs less than 10 pounds the cost is
>>     $1.50 per pound, if it is 10 pounds or more and less than 25
>>     pounds then the cost is $1.45 per pound.  If the weight is 25
>>     pounds or more the cost is $1.40 per pound.  You may get the data
>>     from the user in main.  You must print the name of the product,
>>     the weight and the cost of shipping in a separate function.
>>
>>     *_*********NOTE: ALWAYS USE “WHILE LOOPS” To
>>     Validate*******************_*
>>
>>     # This program uses an if-else statement
>>
>>     # It asks for the name of a product and the weight of that product.
>>     # It then determines the shipping cost as defined by the weight.
>>     #
>>     # Variable          Type          Purpose
>>     # product           string          hold for name of product
>>     # weight             float           hold for weight of product
>>     #
>>
>>     def main ():
>>         product = input("Please enter the name of the product: ")
>>         weight = int(input("Please enter the weight of the product: "))
>>
>>         print('Product:', product)
>>         print('Weight:', weight)
>>
>>         if weight <= 10:
>>             shiprate = 1.5
>>             calc_weight_small(weight, shiprate)
>>         elif weight >= 10 and weight <= 25:
>>             shiprate = 1.45
>>             calc_weight_medium(weight, shiprate)
>>         else:
>>             shiprate = 1.4
>>             calc_weight_large(weight, shiprate)
>>
>>     # Calculate shipping cost for product less than 10 pounds
>>     def cacl_weight_small(weight, shiprate):
>>         shiprate = 1.5
>>         total = weight * shiprate
>
>>     # Calculate shipping cost for product between 10 and 25 pounds.
>>     def calc_weight_medium(weight, shiprate):
>>         shiprate = 1.45
>>         total = weight * shiprate
>
>>     # Calculate shipping cost for product over 25 pounds.
>>     #
>>     #This function calculates and prints the total cost
>>     # based on the weight category the product falls into
>>     # Variable            Type         Purpose
>>
>>     #  weight               float        weight of product
>>     #  shiprate            float        cost per pound
>>     #  total                   float        total cost to ship product
>>     #
>>     def calc_weight_large(weight, shiprate):
>>         shiprate = 1.4
>>         total = weight * shiprate
>>         print ()
>>         print ("The cost to ship", product, "is:      $", format
>>     (total,  '9,.2f'))
>>
>>     main ()
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20131022/de563437/attachment-0001.html>


More information about the Tutor mailing list