Cody Denisa - 2 months ago 7
Python Question

# While loop does not recognise if statement and variables?

I'm doing a code for a school project and I tried to include a while loop but the if statement that is inside this loop is not recognised and the program does not recognise the variable Correct_Weight under each statement and instead it takes it as 0 which causes a division by zero error.

the code is this:

``````Coin_Grams = 0
Correct_Weight = 0
Difference = 0
Total_Coins_Removed = []
Coins_To_Remove = 0
Number_Of_Bags_Checked = 0
Continue = "y"

print ("Welcome to our program!")

while Continue == "y":
Type_Of_Coin = input("Please enter the type of coin in the bag")
break
if Type_Of_Coin == "1 pence":
Coin_Grams = 3.56
Correct_Weight = Coin_Grams * 100
elif Type_Of_Coin == "2 pence":
Coin_Grams = 7.12
Correct_Weight = Coin_Grams * 50
elif Type_Of_Coin == "5 pence":
Coin_Grams = 3.25
Correct_Weight = Coin_Grams * 100
elif Type_Of_Coin == "10 pence":
Coin_Grams = 6.50
Correct_Weight = Coin_Grams * 50
elif Type_Of_Coin == "20 pence":
Coin_Grams = 5.00
Correct_Weight = Coin_Grams * 50
elif Type_Of_Coin == "50 pence":
Coin_Grams = 8.00
Correct_Weight = Coin_Grams * 20
elif Type_Of_Coin == "1 pound":
Coin_Grams = 9.50
Correct_Weight = Coin_Grams * 20
elif Type_Of_Coin == "2 pounds":
Coin_Grams = 12.00
Correct_Weight = Coin_Grams * 10
else:
print ("Type of coin is wrong please try again")

Current_Weight = int(input("How much does the bag weight?"))

Difference = Current_Weight - Correct_Weight
print ("The difference is" ,Difference, "grams")

if Difference <= 0:
elif Difference >= 0:
Coins_To_Remove = Difference / Coin_Grams
Total_Coins_Removed.append(Coins_To_Remove)
print ("You need to remove" ,round(Coins_To_Remove), "coins")
else:
print ("You don't need to remove or add any coins")
Number_Of_Bags_Checked = Number_Of_Bags_Checked + 1

Continue = input("Do you have any more bags to check? please answer as y or n")
print ("\n")

if Continue == "n":
print("\n")
print (Number_Of_Bags_Checked,"bags have been checked")
print ("\n")
print (Total_Coins_Removed,"coins have been removed in total")
print ("\n")
``````

and the error is this:

At the top, `Coin_Grams` is set to 0:

``````Coin_Grams = 0
``````

and you never set it to something else, because you break out of the loop immediately:

``````while Continue == "y":
Type_Of_Coin = input("Please enter the type of coin in the bag")
break
``````

It doesn't matter what other code is in the loop past that point, because you told Python to ignore it.

So you end up with `Coint_Grams` still set to `0` and that gives you a division by zero exception.

Put the `break` at the end of the loop, and use `continue` in the `else:` block:

``````while True:
Type_Of_Coin = input("Please enter the type of coin in the bag")
if Type_Of_Coin == "1 pence":
# etc.

else:
print ("Type of coin is wrong please try again")
# when you get here the type of coin was incorrect, start again
continue

break  # when you get here the type of coin was correct, so break out
``````

I also replaced the `while` condition; your `==` test is always true, and you don't need to change the value of the `Continue` variable, so you may as well just test for `while True` here.