嵌套while循环与拖车值

时间:2013-01-27 22:53:44

标签: python loops python-2.7 while-loop nested-loops

我的计划的目的是成为一名虚拟的麦当劳收银员。我的程序的第一部分让收银员接受一个客户订单。由于while循环,客户可以根据需要订购尽可能多的商品。最后它显示税收,小计和最终账单。随着用户支付的金额和他们的变化。现在我需要我的程序来完成所有的第一部分,但是我需要用户/收银员为那些排队的客户做这件事。我尝试将两个循环嵌套在一起,但我做错了,我不知道是什么。有人能帮我吗?顺便说一句,第一部分100%工作。

第一部分

num1 = 4.87
num2 = 5.03
num3 = 5.50
num4 = 9.45
num5 = 1.29
num6 = 2.19
num7 = 2.29
itemnum = 0
Subtotal = 0
tax = 0.0565
amtgiven = 0
change = 0
quantity = 0
foodprice = 0
Totalprice1 = 0
Totalprice2 = 0
Totalprice3 = 0
Totalprice4 = 0
Totalprice5 = 0
Totalprice6 = 0
Totalprice7 = 0
billtax = 0
finalbill = 0
change = 0

print "Welcome to Virtual McDonald's!"   "Would you like to order a food item"
print "Item:                     Meal/tem:                          Price:"
print "1                          Big Mac Meal                        4.87"
print "2                          Quarter Pounder Meal                5.03"
print "3                          Chicken Nuggets Meal (5 piece)      5.50"
print "4                          ChickenNuggets Meal (10 piece)      9.45"
print "5                          Apple Pie                           1.29"
print "6                          Large Drink                         2.19"
print "7                          Large Fries                         2.29"

itemnum = input("Enter the item you would like to purchase! ")
quantity = input("How many of this item do you want?")
while itemnum != -1:

    if itemnum == 1:
        foodprice = quantity * num1
        Totalprice1 = foodprice

    if itemnum == 2:
        foodprice = quantity * num2
        Totalprice2 = foodprice

    if itemnum == 3:
        foodprice = quantity * num3
        Totalprice3 = foodprice

    if itemnum == 4:
        foodprice == quantity * num4
        Totalprice4 = foodprice

    if itemnum == 5:
        foodprice = quantity * num5
        Totalprice5 = foodprice

    if itemnum == 6:
        foodprice == quantity * num6
        Totalprice6 = foodprice

    if itemnum == 7:
        foodprice = quantity * num7
        Totalprice7 = foodprice   

    subtotal = Totalprice1 + Totalprice2 + Totalprice3 + Totalprice4 + Totalprice5 + Totalprice6 + Totalprice7 
    billtax = subtotal * tax
    finalbill = subtotal + billtax
    itemnum = input("Enter the item you would like to purchase! ")
    quantity = input("How many of this item do you want?")

print "Your total bill without tax is... ", round(subtotal,2)
print "Your total tax is... ", round(billtax,2)
print "Your final bill is... ", round(finalbill,2)
amtgiven = input ("How much do you want to pay with?")
change = amtgiven - finalbill
print "Your change is... ", round(change,2)

第二部分

num1 = 4.87
num2 = 5.03
num3 = 5.50
num4 = 9.45
num5 = 1.29
num6 = 2.19
num7 = 2.29
itemnum = 0
Subtotal = 0
tax = 0.0565
amtgiven = 0
change = 0
quantity = 0
foodprice = 0
Totalprice1 = 0
Totalprice2 = 0
Totalprice3 = 0
Totalprice4 = 0
Totalprice5 = 0
Totalprice6 = 0
Totalprice7 = 0
billtax = 0
finalbill = 0
change = 0
customer = 0

print "Welcome to Virtual McDonald's!"   "Would you like to order a food item"
print "Item:                     Meal/tem:                          Price:"
print "1                          Big Mac Meal                        4.87"
print "2                          Quarter Pounder Meal                5.03"
print "3                          Chicken Nuggets Meal (5 piece)      5.50"
print "4                          ChickenNuggets Meal (10 piece)      9.45"
print "5                          Apple Pie                           1.29"
print "6                          Large Drink                         2.19"
print "7                          Large Fries                         2.29"


customer = raw_input ("Would you like to order? (If not type No)")
while customer != "No":

    while itemnum != -1: 
        itemnum = input("Enter the item you would like to purchase! ")
        quantity = input("How many of this item do you want? ")

        if itemnum == 1:
            foodprice = quantity * num1
            Totalprice1 = Totalprice1 + foodprice

        if itemnum == 2:
            foodprice = quantity * num2
            Totalprice2 = Totalprice2 + foodprice

        if itemnum == 3:
            foodprice = quantity * num3
            Totalprice3 = Totalprice3 + foodprice

        if itemnum == 4:
            foodprice = quantity * num4
            Totalprice4 = Totalprice4 + foodprice

        if itemnum == 5:
            foodprice = quantity * num5
            Totalprice5 = Totalprice5 + foodprice

        if itemnum == 6:
            foodprice = quantity * num6
            Totalprice6 = Totalprice6 + foodprice

        if itemnum == 7:
            foodprice = quantity * num7
            Totalprice7 = Totalprice7 + foodprice

    itemnum = input("Enter the item you would like to purchase! ")
    quantity = input("How many of this item do you want? ")
    subtotal = Totalprice1 + Totalprice2 + Totalprice3 + Totalprice4 + Totalprice5 + Totalprice6 + Totalprice7 
    billtax = subtotal * tax
    finalbill = subtotal + billtax        
    print "Your total bill without tax is... ", round(subtotal,2)
    print "Your total tax is... ", round(billtax,2)
    print "Your final bill is... ", round(finalbill,2)
    amtgiven = input ("How much do you want to pay with? ")
    change = amtgiven - finalbill
    print "Your change is... ", round(change,2)
    customer = raw_input ("Would you like to order? (If not type No)")

#output

当我运行第二个程序时,这就是输出:

Welcome to Virtual McDonald's!Would you like to order a food item
Item:                     Meal/tem:                          Price:
1                          Big Mac Meal                        4.87
2                          Quarter Pounder Meal                5.03
3                          Chicken Nuggets Meal (5 piece)      5.50
4                          ChickenNuggets Meal (10 piece)      9.45
5                          Apple Pie                           1.29
6                          Large Drink                         2.19
7                          Large Fries                         2.29
Would you like to order? (If not type No) yes
Enter the item you would like to purchase! 1
How many of this item do you want? 2
Enter the item you would like to purchase! 1
How many of this item do you want? 4
Your total bill without tax is...  9.74
Your total tax is...  0.55
Your final bill is...  10.29
How much do you want to pay with? 11
Your change is...  0.71
Enter the item you would like to purchase!

(输入几个菜单项后,程序停止运行循环并直接进入账单。此外,账单后它不会询问用户是否是另一个客户。)

当我运行第一部分时,这就是输出:

Welcome to Virtual McDonald's!Would you like to order a food item
Item:                     Meal/tem:                          Price:
1                          Big Mac Meal                        4.87
2                          Quarter Pounder Meal                5.03
3                          Chicken Nuggets Meal (5 piece)      5.50
4                          ChickenNuggets Meal (10 piece)      9.45
5                          Apple Pie                           1.29
6                          Large Drink                         2.19
7                          Large Fries                         2.29
Enter the item you would like to purchase! 1
How many of this item do you want?4
Enter the item you would like to purchase! 2
How many of this item do you want?1
Enter the item you would like to purchase! -1
How many of this item do you want?-1
Your total bill without tax is...  24.51
Your total tax is...  1.38
Your final bill is...  25.89
How much do you want to pay with? 26
Your change is...  0.11

我希望第二部分输出第一部分输出的内容。除了它给客户他/她的更改后,我希望它执行另一个循环,因此要求用户有另一个客户。如果用户输入“是”,则程序将再次针对另一个客户运行。只有当没有更多客户时,用户才输入“否”以结束程序。 (我去了python shell并复制了这些输出结果。右边的数字是我输入的数字。)

1 个答案:

答案 0 :(得分:1)

好的,有一些东西可以通过你的程序,语法和逻辑来修复。我继续修理它们,我会解释我做了什么以及为什么。首先,您需要另一个while循环,以满足用户指定另一个客户是否排队的需求。我创建了一个新变量来处理新的while循环。这是代码:

nextcustomer = "yes"    
while nextcustomer != "no":
    amtgiven = 0
    change = 0
    quantity = 0
    foodprice = 0
    totalprice = 0
    billtax = 0
    finalbill = 0
    itemnum = 0

然而,在这个新循环中,我们需要添加一些需要在每个客户之后重置的变量。循环外的全局变量应该是不需要从客户到客户的变量,即食品价格或税率。我们需要添加更改和总价以及那些事情,我在之前的代码中这样做了。

此外,是否会有另一个客户的问题将进入第一个while循环,之后所有其他的事情都已发生,以便它知道是否再次迭代。那个问题在这里:

while nextcustomer != "no":
    (all of the code)
    nextcustomer = raw_input("Is there another customer? (yes or no) ")

我在第二个while循环中添加了一些中断,否则它将继续迭代而无法提示用户是否要订购。

我做的另一项更改是将您的所有Totalprice1, Totalprice2 ...变量合并到一个变量totalprice中。您只需要一个变量,因为您已经在自己的变量中定义了价格(num1, num2 ...)。每个选择下的计数器变量的代码如下所示:

totalprice += foodprice

这相当于totalprice = totalprice + foodprice。这只是更好的语法。此外,您现在甚至不需要subtotal变量。

我还在他们选择的数字问题之后添加了一个if语句,如果他们输入了-1,那么你就不需要输入-1项的数量:

if itemnum == -1:
    break

我确信还有一些更改,我可能会回来编辑它以确保它已全部解释,但这是编辑后的完整程序代码:

num1 = 4.87
num2 = 5.03
num3 = 5.50
num4 = 9.45
num5 = 1.29
num6 = 2.19
num7 = 2.29
tax = 0.0565
customer = 0
nextcustomer = "yes"
while nextcustomer != "no":
    amtgiven = 0
    change = 0
    quantity = 0
    foodprice = 0
    totalprice = 0
    billtax = 0
    finalbill = 0
    itemnum = 0
    print "Welcome to Virtual McDonald's!"
    print "Item:                     Meal/item:                          Price:"
    print "1                          Big Mac Meal                        4.87"
    print "2                          Quarter Pounder Meal                5.03"
    print "3                          Chicken Nuggets Meal (5 piece)      5.50"
    print "4                          ChickenNuggets Meal (10 piece)      9.45"
    print "5                          Apple Pie                           1.29"
    print "6                          Large Drink                         2.19"
    print "7                          Large Fries                         2.29"

    customer = raw_input ("Would you like to order? (If not type no)")
    while customer != "no":

        while itemnum != -1: 
            itemnum = input("Enter the item you would like to purchase! ")
            if itemnum == -1:
                break
            quantity = input("How many of this item do you want? ")

            if itemnum == 1:
                foodprice = quantity * num1
                totalprice += foodprice

            elif itemnum == 2:
                foodprice = quantity * num2
                totalprice += foodprice

            elif itemnum == 3:
                foodprice = quantity * num3
                totalprice += foodprice

            elif itemnum == 4:
                foodprice = quantity * num4
                totalprice += foodprice

            elif itemnum == 5:
                foodprice = quantity * num5
                totalprice += foodprice

            elif itemnum == 6:
                foodprice = quantity * num6
                totalprice += foodprice

            elif itemnum == 7:
                foodprice = quantity * num7
                totalprice += foodprice

        billtax = totalprice * tax
        finalbill = totalprice + billtax        
        print "Your total bill without tax is... ", round(totalprice,2)
        print "Your total tax is... ", round(billtax,2)
        print "Your final bill is... ", round(finalbill,2)
        amtgiven = input("How much do you want to pay with? ")
        change = amtgiven - finalbill
        print "Your change is... ", round(change,2)
        break
    nextcustomer = raw_input("Is there another customer? (yes or no) ")

这会解决您的问题吗?