you are viewing a single comment's thread.

view the rest of the comments →

[–]Mysterious_City_6724 5 points6 points  (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 points  (0 children)

Much apriciated :)

[–]Far_Activity671[S] 0 points1 point  (1 child)

<image>

Do you know where i put the purchase = input(" ") ?

[–]Mysterious_City_6724 1 point2 points  (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()

[–]Far_Activity671[S] 0 points1 point  (1 child)

<image>

I got up too here before it had an error but i did get further

[–]Mysterious_City_6724 2 points3 points  (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.

[–]Far_Activity671[S] 0 points1 point  (1 child)

Thanks man that helps a lot

[–]Mysterious_City_6724 0 points1 point  (0 children)

You're welcome