我的更多Python代码不会做它应该做的事情,有什么不对?

时间:2014-08-14 15:28:27

标签: python python-2.7 variables

money = 170
KitKat = 90
choice1 = raw_input("Choose a snack: ")

选择零食:KitKat

if choice1 < money:
    print ("Enjoy your snack")
else:
    print ("You cannot afford ") + (choice1)

你买不起KitKat

这是我正在研发的自动售货机程序的缩短版本。你有一定数量的硬币,它要求你选择一个小吃。在这个缩短的程序中,你总是有170个硬币,你只能选择KitKat。然后通过比较变量来检查你是否能买得起KitKat:&#34; money&#34;和&#34; choice1&#34;看哪个更大。如果&#34;钱&#34;更大,它应该说&#34;享受你的零食&#34;。但如果&#34; choice1&#34;更大,它应该说&#34;你买不起KitKat&#34;。

问题是,当我测试它时,它总是认为&#34; choice1&#34;大于&#34;钱&#34;告诉我,我&#34;买不起KitKat&#34;。

我想也许当我输入&#34; KitKat&#34;它不会将其识别为变量并比较单词&#34; KitKat&#34;变量&#34; money&#34;而不是比较变量&#34; KitKat&#34;对变量&#34; money&#34;但我不确定。我出错了什么想法?

3 个答案:

答案 0 :(得分:5)

为什么不用各种小吃的价格字典。

,而不是

KitKat=90

price ={}

price["KitKat"]=90

然后你可以改变线

if choice1 < money:

if price[choice1] < money:

答案 1 :(得分:0)

我建议使用@ user3684792的答案,但如果您想这样做,可以使用

choice1 = globals()[raw_input("Choose a snack: ")]

但我不建议。我想如果用户输入意想不到的东西会导致问题。

答案 2 :(得分:0)

您的选择可能是KitKat,但它仍然只是一个字符串'KitKat',并且无论如何都没有链接到变量KitKat。

如果您避免使用词典(最好的方法),您可以使用if函数。

它很乱,但可以工作。

#define all prices
price_kitkat = 90
price_lolly = 12
price_twirl = 100

#define amount of money
money = 170

#Make your choice
choice1 = raw_input("Choose a snack: ")

#Find price of choice
if choice1 == 'KitKat':
    price = price_kitkat
elif choice1 == 'Lolly':
    price = price_lolly
elif choice1 == 'Twirl':
    price = price_twirl
elif choice1 == '':
    print "You didn't choose a snack!"
else:
    print "Your snack doesn't exist!"

#can you afford it?
if price <= money:
    print "You purchased a snack!
else:
    print "You can't afford that!"