Python自动售货机小吃和饮料

时间:2014-05-21 18:30:59

标签: python

大家好,我一直在尝试创建一个有效的python自动售货机一个多月了,看起来我没有取得任何进展。如果有人可以帮助我,那可能会很棒:)这是我的计划到目前为止:

print ("Welcome to the Vending Machine\n")

total = 0
dr = 1
sn = 3
money=int(input("How much money do you want to insert"))
print ("Prices: Drinks: £1, Snacks: £3\n")
Drinks = {'Coke','Pepsi','Orange Juice', 'Apple Juice','Water'}
Snacks = {'Chocolate', 'Snickers','Twix','Peanuts','Crisp'}

state = 'subtotal'
while total <= money:
    if state != 'total':
    print('')
    print('')
    print ("\nDrinks Menue:")
    print(Drinks)
    print ("Snacks Menue:")
    print(Snacks)
    choice = input("\nEnter the item of your choice: ")
    if choice in Drinks: 
        total += dr
    elif choice in Snacks:
        total += sn
    else:
        state = 'total'
    print("\n\nThat will be a",state,"of £",total)
else:
    print("You have exceeded your inserted money good bye")

我正在尝试让代码拒绝无效输入,并在用户超出其支出限额时停止。

1 个答案:

答案 0 :(得分:2)

运行此操作时,只有一个问题。所以,这里有一些解释,所以你可以学到一些东西。这似乎是一个简单的错误,但我们都会在某些时候制造它们,最终,缩进将成为第二天性。

<强>缩进

与某些语言不同,在Python中缩进很重要。很多。让我们看看你的第一个if声明。

    if state != 'total':
    print('')
    print('')
    print ("\nDrinks Menue:")
    print(Drinks)
    print ("Snacks Menue:")
    print(Snacks)
    choice = input("\nEnter the item of your choice: ")

你能看到问题吗?在if语句之后,或者更准确地说,在:之后,我们需要缩进我们想要由if语句执行的所有其他操作,否则Python将不知道在哪里停止!所以通过这个简单的改变:

if state != 'total':
    print('')
    print('')
    print ("\nDrinks Menue:")
    print(Drinks)
    print ("Snacks Menue:")
    print(Snacks)

我们没有更多错误,您的程序现在运行。注意缩进?只要检查它们是否总是正确的。