希望我的代码和问题清楚易懂。如果不是,请提供反馈。
我对编程/编码还不是很陌生,所以我决定使用Python开发类似于披萨点餐系统的程序。我最终希望使用此代码通过Django或Flask开发网站。
我刚刚完成了该程序的第一步,我在询问用户是否要提货。根据用户选择的程序,程序会要求提供特定信息。
我觉得我最努力的领域是开发类和函数。特别是从一个函数中获取一个变量,然后在另一个函数中使用该变量。我发布了代码的过去示例,并被告知全局变量不适用于代码。因此,我非常努力地避免使用它们。
以下是参考代码:
import re
running = True
class PizzaOrderingSys():
"""order a customized pizza for take out or delivery """
def delivery_or_pickup(self): # Is the order for devilery or pickup?
print("\nWill this order be for pickup or delivery?")
self.delivery = input("P - pick up / D - delivery : ")
self.delivery = self.delivery.title()
if self.delivery == "D":
while running == True:
customerName = input("\nName for the order: ")
if not re.match("^[a-zA-Z ]*$", customerName):
print("Please use letters only")
elif len(customerName) == 0:
print("Please enter a vaild input")
else:
customerName = customerName.title()
break
while running == True:
customerPhoneNumber = input("\nEnter a phone number we can contact you at: ")
if not re.match("^[0-9 ]*$", customerPhoneNumber):
print("Please use numbers only")
elif len(customerPhoneNumber) == 0:
print("Please enter a a contact phone number")
else:
break
while running == True:
house_num = input("\nWhat is your house or unit number: ")
if not re.match("^[0-9 /]*$", house_num):
print("Please use numbers only")
elif len(house_num) == 0:
print("Please enter a valid input ")
else:
break
while running == True:
streetName = input("\nStreet name: ")
if not re.match("^[a-zA-Z ]*$", streetName):
print('Please use letters only.')
elif len(streetName) == 0:
print("Please enter a valid input")
else:
streetName = streetName.title()
break
while running == True:
city = input("\nCity: ")
if not re.match("^[a-zA-Z ]*$", city):
print("Please use letters only")
elif len(city) == 0:
print("Please enter a valid input")
else:
city = city.title()
break
while running == True:
zip_code = input("\nZip Code:")
if not re.match("^[0-9 /]*$", zip_code):
print("Please use numbers only")
elif len(zip_code) == 0 or len(zip_code) > 5:
print("Please enter a valid input")
else:
break
elif self.delivery == "P":
while running == True:
customerName = input("\nName for the order: ")
if not re.match("^[a-zA-Z ]*$", customerName):
print("Please use letters only")
elif len(customerName) == 0:
print("Please enter a valid input")
else:
customerName = customerName.title()
break
while running == True:
customerPhoneNumber = input("\nEnter a phone number we can contact you at: ")
if not re.match("^[0-9 ]*$", customerPhoneNumber):
print("Please use numbers only")
elif len(customerPhoneNumber) == 0:
print("Please enter a valid input")
else:
break
else:
print("Please enter P or D ")
delivery_or_pickup()
order = PizzaOrderingSys()
order.delivery_or_pickup()
我的问题是:我将如何使用在类的一个函数中找到的变量,并在以后的另一个函数中使用它?
例如,如果我想检索在delivery_or_pick()函数中找到的变量customerName,customerPhoneNumber,house_num,streetName,city,Zip_code并将其用于名为:
def customer_receipt():
我需要对现有代码或def customer_receipt()
函数进行哪些操作以获取该信息?
任何对我的问题的帮助或对其他任何建议都非常适合您。 这是我在Stackoverflow上发表的第二篇文章,因此,我仍不清楚正在问的内容不清楚或问题的格式可能已关闭,对此我深表歉意。 再次谢谢你。
答案 0 :(得分:0)
这里的想法是,您可以使用类变量在方法调用之间保存数据。方法是属于类的函数。例如,您可以使用Python的类初始化并创建命令字典。这是此类系统的一个简单示例,请注意self
关键字的用法。 self
引用了该类的实例,您可以使用它来访问该实例的变量或方法:
class PizzaOrderingSys:
def __init__(self):
# Initializing some class variables
self.running = True # Now you can use self.running instead of global running variable
self.orders = {}
def delivery_or_pickup(self):
# Somewhere at the end where you have collected the needed info
order = {
"zip_code": zip_code,
"city": city,
# You can enter all of the needed data similarly
}
order_id = "SomeIdHere" # ID could be anything, it just should be unique
self.orders[order_id] = order
return order_id
def customer_receipt(self, id):
# Now you can access all of the order here with self.orders
order = self.orders.get(id) # Select some specific order with id.
# Using get to avoid the situation
# where no orders or invalid id would raise an exception
if order:
receipt = f"Order {id}:\nCustomer city {order['city']}"
else:
receipt = None
return receipt
pizzasystem = PizzaOrderingSys()
order_id = pizzasystem.delivery_or_pickup()
receipt = pizzasystem.customer_receipt(order_id)
print(receipt)
# >>> Order 1235613:
# Customer city Atlantis
我建议您阅读有关类的更多信息,例如python文档对它们有很好的material。