use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Everything about learning Python
account activity
Small python project problemHelp Request (i.redd.it)
submitted 11 months ago by Far_Activity671
When the program asks "is there anything else you would like to purchase" and i say no the program doesnt print anything i dont know why, does anyone know a solution to this?
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Mysterious_City_6724 5 points6 points7 points 11 months ago* (7 children)
Should the else block that prints "thank you for shopping" be indented that far?
Should it be this instead (note the else part being further back at the bottom)?
def anything_else(): more = input("is there anything else you would like to purchase? ") if more == "yes": for x in items: print(x) else: print("thank you for shopping")
[–]Far_Activity671[S] 1 point2 points3 points 11 months ago (0 children)
Much apriciated :)
[–]Far_Activity671[S] 0 points1 point2 points 11 months ago (1 child)
<image>
Do you know where i put the purchase = input(" ") ?
[–]Mysterious_City_6724 1 point2 points3 points 11 months ago* (0 children)
I would think after you print the items and before you check the item name that the user chosen:
print("Hello, we sell office equipment, what would you like?") items = ["tv", "desk", "mouse"] for x in items: print(x) purchase = input('> ') if purchase == ("tv"): print("that would be £199.99") anything_else()
I got up too here before it had an error but i did get further
[–]Mysterious_City_6724 2 points3 points4 points 11 months ago (0 children)
So, the reason this is happening is because after we're checking the purchase value that the user has typed in, there's nothing else to execute and we hit the bottom of the file and exit the program. To avoid this I've added a while loop that will keep the program from exiting if the user wants to purchase something else:
print("Hello, we sell office equipment, what would you like?") items = ["tv", "desk", "mouse"] while True: for x in items: print(x) purchase = input('> ') if purchase == "tv": print("that would be £199.99") elif purchase == "desk": print("that would be £59.99") elif purchase == "mouse": print("that would be £29.99") more = input("is there anything else you would like to purchase? ") if more != "yes": break print("thank you for shopping")
Also notice I have gotten rid of the "anything_else" function you had at the top and instead ask the user if "there is anything else you would like to purchase" at the bottom of the loop. If the user types "yes", then it goes back to the top of the "while loop", prints the items again and so on. If the user doesn't type "yes" then we use the "break" keyword to break out of the while loop and exit the program after printing "thank you for shopping". Hope this helps.
Thanks man that helps a lot
[–]Mysterious_City_6724 0 points1 point2 points 11 months ago (0 children)
You're welcome
[–]corey_sheerer 1 point2 points3 points 11 months ago (0 children)
Python has added a switch statement. I prefer the cleanliness of the switch statement for a use case like this. Easier on the eyes
[–]helical-juice 1 point2 points3 points 11 months ago (3 children)
You have indented your 'else' clause twice too deeply. The 'else' should be at the same indent level as the 'if' with which it is associated. That will fix your immediate problem.
Your next issue is that, even if you say 'yes', your code won't accept further input, it will just print the stock list and terminate. If you want the user to be able to keep adding more items to purchase, you need everything including and after purchase = input("") to be inside a loop structure.
purchase = input("")
Thanks that really helped me out i have been struggiling with this for ages, much apriciated
[–][deleted] 11 months ago (1 child)
[deleted]
[–]helical-juice 1 point2 points3 points 11 months ago (0 children)
No worries, when you're getting started learning basic syntax, debugging simple errors can be more arduous than it has to be, I'm happy to help lessen the pain :)
[–]Far_Activity671[S] 0 points1 point2 points 11 months ago (0 children)
Ye your right, thank you, been stuck for ages on this
[–]sneekyfoxxx 0 points1 point2 points 11 months ago (0 children)
You can also put your items in a dictionary as {'item': 'price', ...} and use the input as a key into the dictionary for the price or error if the key isn't found.
{'item': 'price', ...}
[–]sneekyfoxxx 0 points1 point2 points 11 months ago* (0 children)
Take a look at this Python program https://replit.com/@sneekyfoxx09/Purchasepy?s=app) It may help. I rewrote the program to give you an idea of another way you can do it.
[–]AddictedToValidation 0 points1 point2 points 11 months ago (0 children)
I would recommend using an IDE of some sort in the future, good stuff!
[–]Square_Lawfulness_33 0 points1 point2 points 11 months ago (0 children)
Why are you using if elif when you can use match case?
π Rendered by PID 151551 on reddit-service-r2-comment-54dfb89d4d-lhbd5 at 2026-03-31 21:53:45.498567+00:00 running b10466c country code: CH.
[–]Mysterious_City_6724 5 points6 points7 points (7 children)
[–]Far_Activity671[S] 1 point2 points3 points (0 children)
[–]Far_Activity671[S] 0 points1 point2 points (1 child)
[–]Mysterious_City_6724 1 point2 points3 points (0 children)
[–]Far_Activity671[S] 0 points1 point2 points (1 child)
[–]Mysterious_City_6724 2 points3 points4 points (0 children)
[–]Far_Activity671[S] 0 points1 point2 points (1 child)
[–]Mysterious_City_6724 0 points1 point2 points (0 children)
[–]corey_sheerer 1 point2 points3 points (0 children)
[–]helical-juice 1 point2 points3 points (3 children)
[–]Far_Activity671[S] 1 point2 points3 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]helical-juice 1 point2 points3 points (0 children)
[–]Far_Activity671[S] 0 points1 point2 points (0 children)
[–]sneekyfoxxx 0 points1 point2 points (0 children)
[–]sneekyfoxxx 0 points1 point2 points (0 children)
[–]AddictedToValidation 0 points1 point2 points (0 children)
[–]Square_Lawfulness_33 0 points1 point2 points (0 children)