Fix the Infinite Loop Error in Python Code

I’m working in this Python code, the infinite loop is caused by a couple of error issues. The first problem lies in the fact that true is used instead of True for the running variable. Python is case-sensitive, so True must be used as the boolean value for running. The second issue is a missing ) in the print(str(option) + ". Quit") line, which would result in a syntax error. Correcting these issues would resolve the infinite loop and allow the program to terminate correctly when the user selects the “Quit” option. Additionally, ensuring the input handling is robust and accurate can prevent further errors.

Python Code (with Errors):

codedef save_transaction(price, credit_card, description):
file = open("transactions.txt", "a")
file.write("%s%07d%s\n" % (credit_card, price * 100, description))
file.close()

items = ['Donut','Latte','Filter','Muffin']
prices = [1.50, 2.0, 1.80, 1.20]
running = True

while running:
option = 1
for choice in items:
print(str(option) + ". " + choice)
option = option + 1
print(str(option) + ". Quit")
choice = int(input("Choose an option: "))
if choice == option:
running = False
else:
credit_card = input("Credit card number: ")
save_transaction(prices[choice - 1], credit_card, items[choice - 1])

Fixed

The infinite loop issue in the code can be fixed by correcting the boolean values (true to True and false to False), and by fixing the syntax error in the print statement by removing the extra parenthesis. These small adjustments ensure that the loop will terminate properly when the user selects the “Quit” option.

Correct Code:

codedef save_transaction(price, credit_card, description):
file = open("transactions.txt", "a")
file.write("%s %07d %s\n" % (credit_card, price * 100, description))
file.close()

items = ['Donut', 'Latte', 'Filter', 'Muffin']
prices = [1.50, 2.0, 1.80, 1.20]
running = True # Changed 'true' to 'True' to fix the error

while running:
option = 1
for choice in items:
print(str(option) + ". " + choice)
option += 1
print(str(option) + ". Quit") # Fixed extra parenthesis error here

choice = int(input("Choose an option: "))
if choice == option:
running = False # Changed 'false' to 'False' to fix the error
else:
credit_card = input("Credit card number: ")
save_transaction(prices[choice - 1], credit_card, items[choice - 1])

Resolving the Infinite Loop in Python

When learning to code, one of the most common errors you may encounter is an infinite loop. This happens when a loop doesn’t have the proper conditions to stop, leading the program to run endlessly. In this example, the issue is fairly common for beginners in Python, and it comes from small but impactful mistakes.

In the original code, the variable running was set to true, but Python requires True (with a capital “T”) for boolean values. Similarly, the loop was supposed to stop when the user chose to quit, but the condition used false instead of False. Python is case-sensitive, and these mistakes caused the loop to continue running, even when the correct condition was met.

There was also a misplaced parenthesis in the print statement for the “Quit” option, which caused a syntax error. By correcting the boolean values and fixing the print statement, the infinite loop issue is resolved, allowing the program to terminate properly when the user chooses to quit.

These small changes ensure that the logic stays intact while fixing the errors:

Fixed the extra parenthesis in the print statement.

trueTrue

falseFalse

Changes made:

  • Boolean corrections:
    • Changed true to True and false to False to adhere to Python’s case-sensitive boolean values.
  • Syntax correction in print statement:
    • Removed the extra parenthesis from the print(str(option) + ". Quit") line to fix the syntax error.
  • Improved readability:
    • Incremented option using option += 1 for better readability and code efficiency.

Related blog posts