Python Forum

Full Version: Help!! Please
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I've tried everything to write this program and I keep getting stuck and getting a syntax error. Can someone please tell me how they would tackle this problem? Thank you


[Image: media%2Fd70%2Fd70806bb-1b47-4d5d-9b47-5f...kvKqAD.png]
(Jan-28-2019, 05:15 AM)leokraz Wrote: [ -> ]I've tried everything to write this program and I keep getting stuck and getting a syntax error.

Please, post your code in python tags, full traceback in error tags and ask questions about where you feel stuck.
We are glad to help and guide you, but we are not going to write it for you.

The last three sentences are pretty clear what needs to be done step by step
and use a meaningful subject title. It should summarize your main question
I apologize, after messing around a little with the code I got it to work the only problem now is that. My code is displaying both results. Standard Shipping and Express shipping at the same time. What am I doing wrong?

 
print ("Welcome to Delivery Express please enter S for Standard shipping or E for Express")
shipping_option = input("Delivery Option:")
shipping_option = shipping_option.upper()
if shipping_option == "S" or "E":
        pounds = float(input("Please Enter Weight:"))
if pounds <= 4:
    pounds = pounds * 1.05
    print (pounds)
elif pounds == 5 or pounds == 7 or pounds == 8:
    pounds = pounds * 0.95
    print (pounds)
elif pounds ==  9 or pounds == 10 or pounds == 11 or pounds == 12 or pounds ==13 or pounds == 14 or pounds ==15:
    pounds = pounds * 0.85
    print (pounds)
elif pounds >= 16:
    pounds = pounds * 0.80
    print (pounds)
else:
    if shipping_option == "S" or "E":
        pounds = float(input("Please Enter Weight:"))
if pounds <= 2:
        pounds = pounds * 3.25
        print(pounds)
elif pounds == 3 or pounds == 4 or pounds == 5:
        pounds = pounds * 2.95
        print(pounds)
elif pounds == 6 or pounds == 7 or pounds == 8 or pounds == 9 or pounds == 10:
        pounds = pounds * 2.75
        print(pounds)
elif pounds >= 11:
        pounds = pounds * 2.55
        print(pounds)
There are two central problems:
  1. The conditional to check delivery option is repeated twice. If the user selects either option, both conditionals are true.
  2. The nesting is incorrect. The second check of shipping option is in the else clause of the if statement and the second check of pounds is not under the else clause.

Also, the logic statements can be simplified. Instead of using "or" repeatedly, these can be written to check the pounds against the smallest and largest figures only.

print ("Welcome to Delivery Express please enter S for Standard shipping or E for Express")
shipping_option = input("Delivery Option:")
shipping_option = shipping_option.upper()

pounds = float(input("Please Enter Weight:"))

if shipping_option == "S":
    if pounds <= 4:
        pounds *= 1.05
    elif 5 <= pounds <= 8:
        pounds *= 0.95
    elif 9 <= pounds <= 15:
        pounds *= 0.85
    elif pounds >= 16:
        pounds *= 0.80

if shipping_option == "E":
    if pounds <= 2:
            pounds *= 3.25
    elif 3 <= pounds <= 5:
            pounds *= 2.95
    elif 6 <= pounds <= 10:
            pounds *= 2.75
    elif pounds >= 11:
            pounds *= 2.55

print(pounds)