2016-12-07 9 views
0

私はスーパーマーケットインターフェイスを作っています。しかし、userchoice = 2の場合、私はuserchoice = 1に戻ることはできません。私は2つまたはその後のオプションに行くことができます。私はwhileループで何か問題があったと思います。Pythonの単純whileループ

apples = 0 
mangoes = 0 
print("Welcome to the CS110 Supermarket!") 
print("1. Potatoes ($0.75 per potato") 
print("2. Tomatoes ($1.25 per tomato") 
print("3. Apples ($0.5 per apple") 
print("4. Mangoes ($1.75 per mango") 
print("5. Checkout") 
user_choice = int(input()) 
total = total + potatoes*0.75 + tomatoes*1.25 + apples*0.5 + mangoes*1.75 
while user_choice == 1: 
    potatoes = int(input("How many potatoes?")) 
    total = total + potatoes*0.75 
    print("The total cost is $", total) 
    print("Welcome to the CS110 Supermarket!") 
    print("1. Potatoes ($0.75 per potato") 
    print("2. Tomatoes ($1.25 per tomato") 
    print("3. Apples ($0.5 per apple") 
    print("4. Mangoes ($1.75 per mango") 
    print("5. Checkout") 
    user_choice = int(input()) 
while user_choice == 2: 
    tomatoes = int(input("How many tomatoes?")) 
    total = total + tomatoes*1.25 
    print("The total cost is $", total) 
    print("Welcome to the CS110 Supermarket!") 
    print("1. Potatoes ($0.75 per potato") 
    print("2. Tomatoes ($1.25 per tomato") 
    print("3. Apples ($0.5 per apple") 
    print("4. Mangoes ($1.75 per mango") 
    print("5. Checkout") 
    user_choice = int(input()) 
while user_choice == 3: 
    apples=int(input("How many apples?")) 
    total = total + apples*0.5 
    print("The total cost is $", total) 
    print("Welcome to the CS110 Supermarket!") 
    print("1. Potatoes ($0.75 per potato") 
    print("2. Tomatoes ($1.25 per tomato") 
    print("3. Apples ($0.5 per apple") 
    print("4. Mangoes ($1.75 per mango") 
    print("5. Checkout") 
    user_choice = int(input()) 
while user_choice == 4: 
    mangoes = int(input("How many mangoes?")) 
    total = total + mangoes*1.75 
    print("The total cost is $",total) 
    print("Welcome to the CS110 Supermarket!") 
    print("1. Potatoes ($0.75 per potato") 
    print("2. Tomatoes ($1.25 per tomato") 
    print("3. Apples ($0.5 per apple") 
    print("4. Mangoes ($1.75 per mango") 
    print("5. Checkout") 
    user_choice=int(input()) 
if user_choice == 5: 
    print("The total cost is $",total) 
    pay = float(input("Please enter an amount to pay for the fruits and vegetables: ")) 
    while pay < total: 
     pay = float(input("Please enter an amount more than payment: ")) 
    change = pay - total 
    print("Your change will be $", change) 
    d5 = change // 5 
    d1 = (change % 5) // 1 
    quarter = ((change % 5) % 1) // 0.25 
    dime = (((change % 5) % 1) % 0.25) // 0.1 
    nickel = ((((change % 5) % 1) % 0.25) % 0.1) // 0.05 
    penny = (((((change % 5) % 1) % 0.25) % 0.1) % 0.05) // 0.01 
    print("Give the customer", d5, "$5 note,", d1, "$1 note,", quarter, "quarter,", dime, "dime,", nickel,"nickel,", penny, "penny.") 
+5

てみてください* 1 * 'あなたのオプションのそれぞれについて、' if'とwhile'ループ。 –

答えて

-1

user_inputをループの先頭に置いて無限ループを使用できます。 if条件を使う必要があります。現在、パラメータごとに1つのループを使用しています。他の選択肢を処理するためにループを抜け出せないので、これはうまくいきません。

while True: 
    print("Welcome to the CS110 Supermarket!") 
    print("1. Potatoes ($0.75 per potato") 
    print("2. Tomatoes ($1.25 per tomato") 
    print("3. Apples ($0.5 per apple") 
    print("4. Mangoes ($1.75 per mango") 
    print("5. Checkout") 

    user_choice = int(input()) 
    if user_choice==1: 
     potatoes=int(input("How many potatoes?")) 
     total=total+potatoes*0.75 

    elif user_choice==2: 
     tomatoes=int(input("How many tomatoes?")) 
     total=total+tomatoes*1.25 

    elif user_choice==3: 
     apples=int(input("How many apples?")) 
     total=total+apples*0.5 


    elif user_choice==4: 
     mangoes=int(input("How many mangoes?")) 
     total=total+mangoes*1.75 


    if user_choice==5: 
     print("The total cost is $",total) 
     pay=float(input("please enter an amount to pay for the fruits and vegetables: ")) 
     while pay<total: 
      pay=float(input("please enter an amount more than payment: ")) 
     change=pay-total 
     print("your change will be $",change) 
     d5 = change // 5 
     d1 = (change % 5) // 1 
     quarter = ((change % 5) % 1) // 0.25 
     dime = (((change % 5) % 1) % 0.25) // 0.1 
     nickel = ((((change % 5) % 1) % 0.25) % 0.1) // 0.05 
     penny = (((((change % 5) % 1) % 0.25) % 0.1) % 0.05) // 0.01 
     print("Give the customer", d5, "$5 note,", d1, "$1 note,", quarter, "quarter,", dime, "dime,", nickel,"nickel,", penny, "penny.") 
     break 
+0

また、ちょうどコードダンプの代わりに、あなたがしたことについて自分自身を説明し、OPが間違っていたのでしょうか? – MooingRawr

+0

@MooingRawrこれは私がやったことです。 – user312016

+0

ありがとう!これは多くの助けになります! – jjjdada

2

あなたが必要以上に多いwhileを使用しています。むしろ、各オプションのwhileよりも、オプション1つのだけのループ、およびいくつかのif秒を使用します。

while True: 
    user_choice=int(input()) 
    if user_choice == 1: 
    ... 
    if user_choice == 2: 
    ... 
    ... 
    if user_choice == 5: 
    break # exit the loop with break