-4

使用 python 2.7.5,解决编程类问题,其中订单总额被添加到运费中,设置运送到美国和加拿大的价格,我编写了运送到美国的代码,但需要更改值,所以如果用户选择加拿大一组不同的值应用于订单总额。加拿大运费是:小于 50.0 为 8.00,大于 50.01 - 100.0 为 12.0,100.01 - 150.0 为 15.0,我需要一种方法将这些值替换为以下代码中的美国运费:

user_order = float(input("how much is your order? "))
user_ship_area = raw_input('Are you shipping to the US or Canada?')

if user_order < 50.00 and user_ship_area == "US": #start selection with user order and shipping area. 
    #User would be given price for shipping according to order cost   
    print 'you must pay $6.00 for shipping ' #user order less than 50$ = 64 for shipping.
    user_order = user_order + 6.0

elif user_order < 100.0 > 50.01 and user_ship_area == "US": #must include range of numbers, if user order is over 50.01 but under 100.0 
    print 'you must pay $9.00 for shipping'   #they must pay 9.00 for shipping.
    user_order = user_order + 9.0

elif user_order < 150.0 > 100.01 and user_ship_area == "US": #if user order is over 100.01$ but under 150$ 
    print 'you must pay $12.00 for shipping '#12.00$ will be charged for shipping
    user_order = user_order + 12.0 
else: 
    print 'congratulations you qualify for free shipping' #since it works by checking each elif, it goes to else


print "your order total is", user_order 

#need to create option for shipping to Canada, the prices are different.
#how to repeat the above code but for different values if the user selects Canada. 
4

4 回答 4

1

当你给类似的东西

user_order < 100.0 > 50.01

到 python 它会像这样评估它

user_order < 100.0 and 100.0 > 50.01

但这不是我们想要的。我们想检查这个

user_order < 100.0 and user_order > 50.01

所以写条件的正确方法是

50.01 < user_order < 100.0

建议:

  1. 你不必使用

    float(input("how much is your order? "))
    

    任何一个

    float(raw_input("how much is your order? "))
    

    或者

    input("how much is your order? ") # Don't use this
    

    因为input会在内部做eval(whatever user inputs)。这将自动找到正确的数据类型。注意不要input在 Python2 中使用,它可能会导致潜在的安全问题。(感谢马蒂亚斯指出)

  2. 每当您发布代码时(甚至更好,在编写时)尝试正确缩进代码。这将使调试更容易。

于 2013-10-14T02:53:54.783 回答
0

您的布尔表达式不正确;Python 很自然地将它们链接起来,因此它们必须以这种方式编写。

 50.01 < user_order < 100.0
于 2013-10-14T02:47:48.453 回答
-1

看起来程序重复了两次。我清理了一下,这很有效:

user_order = float(input("how much is your order? ")) 
total = user_order

if user_order < 50.00:
    #User would be given price for shipping according to order cost   
    print 'you must pay $6.00 for shipping ' 
    total = user_order + 6.0

elif user_order < 100.0 > 50.01: 
    print 'you must pay $9.00'   #they must pay 9.00 for shipping.
    total = user_order + 9.0

elif user_order < 150.0 > 100.01: #if user order is over 100.01$ but under 150$ 
    print 'you must pay $12.00 for shipping '#12.00$ will be charged for shipping
    total = user_order + 12.0 
else: 
    print 'congratulations you qualify for free shipping'                                
    #this is where the confusion occurs, I need to have the option to ship to US or Canada               
    #the values for shipping to Canada since its different for shipping to that country 

user_ship_area = raw_input('Are you shipping to the US or Canada?')
if user_ship_area != 'US':
    print 'confirmed, we will ship to Canada '

else:
    print "confirmed, we will ship to the United States"

print "your order total is %s"%(total)
于 2013-10-14T02:52:36.213 回答
-1

这是正确的形式,请注意如何在 python 中将条件置于 if-else 下。

user_order = float(input("how much is your order? ")) 

if user_order < 50.00:
    #User would be given price for shipping according to order cost   
    print 'you must pay $6.00 for shipping ' 
    user_order = user_order + 6.0

elif user_order < 100.0 and user_order > 50.01: 
    print 'you must pay $9.00'   #they must pay 9.00 for shipping.
    user_order = user_order + 9.0

elif user_order < 150.0 and user_order > 100.01: #if user order is over 100.01$ but under   150$ 
    print 'you must pay $12.00 for shipping '#12.00$ will be charged for shipping
    user_order = user_order + 12.0 
else: 
    print 'congratulations you qualify for free shipping'                                
#this is where the confusion occurs, I need to have the option to ship to US or Canada               
#the values for shipping to Canada since its different for shipping to that country 

user_ship_area = raw_input('Are you shipping to the US or Canada?')
if user_ship_area != 'US':
    print 'confirmed, we will ship to Canada '

else:
    print "confirmed, we will ship to the United States"
    print "your order total is", user_order 

if user_order < 50.00:
#User would be given price for shipping according to order cost   
    print 'you must pay $8.00 for shipping '
    user_order = user_order + 8.0 

elif user_order < 100.0 and user_order > 50.01: 
    print 'you must pay $12.00' 
    user_order = user_order + 12.0 

elif user_order < 150.0 and user_order > 100.01: 
    print 'you must pay $15.00 for shipping '
    user_order = user_order + 15.0 
else: 
    print 'congratulations you qualify for free shipping' 
#the final output needs to be the user_order + the amount its shipping to depending on   
#the country
于 2013-10-14T03:03:54.403 回答