[英]What's wrong with this python program?
我正在嘗試制作Derp Simulator小游戲,因為我很無聊,並且出現了一個問題,如果您嘗試購買貓糧,它會將貓糧添加到庫存中,但不會將其添加到貓糧數量中,並且不會帶走錢。 我在商店使用的模塊與實際游戲文件不同,因此,如果有人可以嘗試找出問題所在,我將不勝感激。
我這樣稱呼商店功能: shop(inv, balance, catfood, liqpota)
店鋪代碼:
from functions import *
def shop(inv, balance, catfood, liqpota):
while True:
print "Welcome to the shop."
print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
print "( To purchase an item; enter the letter of the item. )"
print "( If you want to exit; enter 'back'. )"
print "A] $5 Cat Food - 'Not Just For Cats'"
print "B] $7 Liquified Potatoes - 'Who Would Want These?'"
print
com = raw_input("Purchase: ")
divider()
if com == "back" or com == "Back":
break
elif com == "a" or com == "A":
if "Cat Food" in inv:
if balance < 7:
print "You have insufficient funds."
elif balance > 7 or balance == 7:
catfood = catfood + 1
balance = balance - 7
print "Purcahse succcessful."
return catfood
return liqpota
if not "Cat Food" in inv:
if balance < 7:
print "You have insufficient funds."
elif balance > 7 or balance == 7:
catfood = catfood + 1
balance = balance - 7
inv.append("Cat Food")
print "Purchase successful."
return catfood
return liqpota
elif com == "b" or com == "B":
print "WIP"
break
else:
print "Invalid Item/Command."
divider()
主代碼:(庫存部分)
elif com == "inventory" or com == "Inventory":
tmp_invnum = 1
print "Cat Food = " + str(catfood)
print "Liquified Potatoes = " + str(liqpota)
print
for invf in inv:
print str(tmp_invnum) + "] " + invf
tmp_invnum += 1
永遠不會執行第二個return語句(return liqpota),因為您的函數在遇到的第一個返回處結束。 您可以在單個語句中返回所有值,然后在函數調用中解壓縮它們。 我在下面提供了一個示例。
def divider():
print '*' * 80
def shop(inv, balance, catfood, liqpota):
while True:
print "Welcome to the shop."
print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
print "( To purchase an item; enter the letter of the item. )"
print "( If you want to exit; enter 'back'. )"
print "A] $5 Cat Food - 'Not Just For Cats'"
print "B] $7 Liquified Potatoes - 'Who Would Want These?'"
print
com = raw_input("Purchase: ")
divider()
if com == "back" or com == "Back":
break
elif com == "a" or com == "A":
if "Cat Food" in inv:
if balance < 7:
print "You have insufficient funds."
elif balance > 7 or balance == 7:
catfood = catfood + 1
balance = balance - 7
print "Purcahse succcessful."
# return all four variables at once
return (catfood,liqpota,inv,balance)
if not "Cat Food" in inv:
if balance < 7:
print "You have insufficient funds."
elif balance > 7 or balance == 7:
catfood = catfood + 1
balance = balance - 7
inv.append("Cat Food")
print "Purchase successful."
# return all four variables at once
return (catfood,liqpota,inv,balance)
elif com == "b" or com == "B":
print "WIP"
break
else:
print "Invalid Item/Command."
divider()
return (catfood,liqpota,inv,balance)
catfood = 0
liquified_potatoes = 0
balance = 30
inv = []
print 'catfood %s potatoes %s inventory %s balance %s' % (catfood,liquified_potatoes,inv,balance)
catfood, liquified_potatoes, inv, balance = shop(inv, balance, catfood, liquified_potatoes)
print 'catfood %s potatoes %s inventory %s balance %s' % (catfood,liquified_potatoes,inv,balance)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.