我正在制作幾個函式,用于將比薩資訊包含在一個函式中,然后使用該資訊來計算另一個函式中的價格。但是,當我運行它時,即使在運行之后,在其中一個函式中定位屬性也有問題。
def calc_pizza_charge(size_cost, meats_cost, veg_cost, num_cost):
get_pizza_info.size = range(1, 4)
num_cost = get_pizza_info.quantity
total = (size_cost meats_cost veg_cost) * get_pizza_info.quantity
if get_pizza_info.size == 1:
size_cost = 6.50
if get_pizza_info.size == 2:
size_cost = 9.50
if get_pizza_info.size == 3:
size_cost = 11.50
meats_cost = (get_pizza_info.meats - 1) * 3.50
veg_cost = (get_pizza_info.veg - 1) * 1.50
print("Your total is $", "{:,.2f}".format(total))
def get_pizza_info(size, meats, veg, quantity):
size = int(input("Enter size from 1-3: "))
meats = int(input("Enter number of meat toppings "))
veg = int(input("Enter number of non-meat toppings "))
quantity = int(input("Enter number of these pizzas "))
if size >= 4:
size = 3
if size <= 1:
size = 1
if meats <= 1:
meats = 1
if veg <= 1:
veg = 1
uj5u.com熱心網友回復:
老實說,當我看到你的代碼時,我非常困惑。我認為你應該回顧一下函式是如何作業的。無論如何,幾點提示:
- 在
get_pizza_info您本質上要求訂單詳細資訊:將其存盤在某種資料結構中(我使用字典) - 在 中
get_pizza_charge,您需要使用訂單詳細資訊來計算比薩餅的價格。
我已經包括了我對你的代碼的重寫:
def calc_pizza_charge():
pizza_info = get_pizza_info()
num_cost = pizza_info["quantity"]
size_cost = get_size_cost(pizza_info["size"])
meats_cost = (pizza_info["meats"] - 1) * 3.50
veg_cost = (pizza_info["veg"] - 1) * 1.50
total = (size_cost meats_cost veg_cost) * pizza_info["quantity"]
print("Your total is $", "{:,.2f}".format(total))
def get_size_cost(size):
if size == 1:
return 6.5
elif size == 2:
return 9.5
elif size == 3:
return 11.50
def get_pizza_info():
size = int(input("Enter size from 1-3: "))
meats = int(input("Enter number of meat toppings "))
veg = int(input("Enter number of non-meat toppings "))
quantity = int(input("Enter number of these pizzas "))
pizza_info = {}
pizza_info["size"] = max(min(size, 3), 1)
pizza_info["meats"] = max(1, meats)
pizza_info["veg"] = max(1, veg)
pizza_info["quantity"] = max(0, quantity)
return pizza_info
calc_pizza_charge()
uj5u.com熱心網友回復:
您已經在get_pizza_info函式中定義了所有屬性變數,并試圖在calc_pizza_charge函式中訪問它們。在函式中宣告的變數對該函式來說是區域的,并且不能被該函式之外的任何物體訪問。
對于您的問題,我建議定義一個包含這兩個函式的新類。
class Pizza:
def calc_pizza_charge(self):
num_cost = self.quantity
if self.size == 1:
size_cost = 6.50
if self.size == 2:
size_cost = 9.50
if self.size == 3:
size_cost = 11.50
else:
size_cost = 10
meats_cost = (self.meats - 1) * 3.50
veg_cost = (self.veg - 1) * 1.50
total = (size_cost meats_cost veg_cost) * self.quantity
print("Your total is $", "{:,.2f}".format(total))
def get_pizza_info(self):
self.size = int(input("Enter size from 1-3: "))
self.meats = int(input("Enter number of meat toppings "))
self.veg = int(input("Enter number of non-meat toppings "))
self.quantity = int(input("Enter number of these pizzas "))
if self.size >= 4:
self.size = 3
if self.size <= 1:
self.size = 1
if self.meats <= 1:
self.meats = 1
if self.veg <= 1:
self.veg = 1
piz = Pizza()
piz.get_pizza_info()
piz.calc_pizza_charge()
這段代碼運行良好,就像您希望它作業一樣。您的代碼中有許多基本錯誤。我建議您學習 Python 中函式和類的基礎知識。
uj5u.com熱心網友回復:
由于您對其他答案不滿意,這是對您的代碼進行最少修改的作業代碼
def calc_pizza_charge():
size, meats, veg, quantity = get_pizza_info()
if size == 1:
size_cost = 6.50
elif size == 2:
size_cost = 9.50
else:
size_cost = 11.50
meats_cost = (meats - 1) * 3.50
veg_cost = (veg - 1) * 1.50
total = (size_cost meats_cost veg_cost) * quantity
print("Your total is $", "{:,.2f}".format(total))
def get_pizza_info():
size = int(input("Enter size from 1-3: "))
meats = int(input("Enter number of meat toppings "))
veg = int(input("Enter number of non-meat toppings "))
quantity = int(input("Enter number of these pizzas "))
if size >= 4:
size = 3
elif size <= 1:
size = 1
if meats <= 1:
meats = 1
if veg <= 1:
veg = 1
return size, meats, veg, quantity
if __name__ == '__main__':
calc_pizza_charge()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334862.html
上一篇:我想我用scanf做對了……但它帶來了C4477并崩潰了
下一篇:嘗試在React中進行階乘
