Tôi chưa quen với Python và muốn tạo ra một hệ thống đặt hàng pizza bằng Python, trông giống như thế này.
1 Hawaiian $7.50
2 Champagne Ham & Cheese $7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
Sau đó, tôi muốn khách hàng có thể chọn các loại pizza khác nhau dựa trên số để họ không phải gõ Hawaii, thay vào đó họ có thể loại 1. Tôi đã thử cả từ điển và danh sách nhưng luôn dẫn đến vấn đề này:
1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
Trường hợp giá sẽ "bám vào tên pizza" và tên của pizza 10 trở đi đã được thụt vào bởi một nhân vật. Việc đặt không gian thủ công dường như không phải là cách hiệu quả nhất về vấn đề của tôi. ví dụ
standardprice = "$7.50"
deluxeprice = "13.50"
print [
"""
1 Hawaiian %s
2 Champagne Ham & Cheese %s
3 Beef & Onion %s
4 Pepperoni %s
5 Simply Cheese %s
6 Bacon & Mushroom %s
7 Italiano %s
8 The Deluxe %s
9 Ham, Egg & Hollandaise %s
10 Americano %s
11 Mr Wedge %s
12 BBQ Meatlovers %s
""" % [standardprice, standardprice, standardprice, standardprice,
standardprice, standardprice, standardprice,deluxeprice,
deluxeprice,deluxeprice, deluxeprice, deluxeprice]
]
Có cách nào dễ dàng hơn để giải quyết vấn đề của tôi không? Cũng như một câu hỏi phụ khi in có một cách mà biến "StandardPrice" áp dụng cho 7 yếu tố đầu tiên và giá sang trọng áp dụng cho 8-12, thay vì cách thô thiển mà tôi đã thực hiện.
Ở đây có một vấn đề hơi tương tự nhưng trang này không giúp ích gì. Tôi rất mới với Python, vì vậy giải thích như tôi biết không có gì rất hữu ích
Tìm hiểu Python trong khi thực hiện một chương trình nhận đơn đặt hàng của bạn!
Xin chào lần nữa! Chào mừng bạn đến với Phần 3 trong một loạt cho Begin Python! Trong Phần 2, chúng tôi đề cập đến các hằng số, chức năng, danh sách và định dạng chuỗi. Hôm nay chúng tôi sẽ tạo ra một người dùng đơn hàng đơn giản chỉ bằng một vài khái niệm mới. Nếu bạn hoàn toàn mới đối với Python, hãy xem Phần 1 để bắt đầu hành trình của bạn!
Chủ đề hôm nay: Đặt hàng Bot Bot
Các khái niệm chúng ta sẽ học:
Tạo nhiều chức năng
Bộ
cho vòng lặp
trong khi lặp lại
Tăng lỗi
Thành lập
Giống như lần trước, chúng ta sẽ bắt đầu với một số mã giới thiệu trong chương trình:
MENU = {"soda", "fries", "burger", "shake", "cookie", "chicken strips"}
def main[]:
pass
if __name__ == "__main__":
main[]
Bộ
cho vòng lặp
trong khi lặp lại
Tăng lỗi
Thành lập
MENU = {"soda", "fries", "burger", "shake", "cookie", "chicken strips"}
def get_order[]:
current_order = []
while True:
print["What can I get for you?"]
order = input[]
if order in MENU:
current_order.append[order]
else:
print["I'm sorry, we don't serve that."]
def main[]:
order = get_order[]
if __name__ == "__main__":
main[]
Giống như lần trước, chúng ta sẽ bắt đầu với một số mã giới thiệu trong chương trình:
Chú ý một cái gì đó khác biệt với hằng số MENU
của chúng tôi? Nó sử dụng dấu ngoặc xoăn thay vì các dấu ngoặc mà chúng tôi đã sử dụng cho các danh sách trong Phần 2! Bằng cách sử dụng dấu ngoặc xoăn và vẫn có các giá trị phân tách dấu phẩy bên trong, chúng tôi đang khởi tạo một tập hợp. Các bộ khác với danh sách theo một số cách nhưng đáng chú ý nhất là chúng nhanh hơn để tìm kiếm và chỉ có thể chứa các giá trị duy nhất.
Hãy để tập trung vào sự khác biệt đầu tiên: Tìm kiếm một giá trị. Với dự án hôm nay, chúng tôi sẽ nhận đơn đặt hàng từ đầu vào của bạn và kiểm tra xem những gì bạn đặt hàng có thực sự có trong menu không. Nếu MENU
là một danh sách, và chúng tôi đã đặt hàng một cái lắc, nó sẽ đi qua danh sách, kiểm tra xem soda, khoai tây chiên, burger và cuối cùng lắc đều phù hợp với những gì chúng tôi đã đặt hàng. Vì MENU
là một tập hợp, nó có thể thay vào đó kiểm tra xem băm hay một số duy nhất của giá trị nằm trong tập hợp, tìm thấy lắc ngay lập tức.
Nói một cách ít kỹ thuật hơn, một danh sách tương đương với việc có một bộ bài chơi úp xuống và cần phải lật từng thẻ để xem nó có thẻ mà bạn đang tìm kiếm không. Một bộ tương đương với việc có tất cả các thẻ trải ra và đối mặt, cho phép bạn nhanh chóng tìm thấy thẻ bạn đang tìm kiếm. Điều này không quan trọng ngay bây giờ với 6 giá trị nhưng biết cấu trúc dữ liệu tốt nhất cho một nhiệm vụ hiện tại là rất quan trọng, như bạn có được thuê quan trọng hay không.
Trong khi lặp lại
Thoát khỏi vòng lặp trong khi
Để thoát khỏi vòng lặp thời gian, chúng tôi có 3 tùy chọn:
1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
5 đưa chúng tôi ra khỏi chức năng, đặt điều kiện thành sai [không thể ở đây vì nó đúng] hoặc sử dụng một lệnh mới gọi là 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
6. Có hai lệnh mới trong các vòng lặp mà chúng tôi đã thảo luận: 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
7 và 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
6. 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
7 là tự giải thích: Dừng lại nơi chúng ta đang ở và quay trở lại đỉnh của vòng lặp. 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
6 cắt chúng ta ra khỏi vòng lặp và cho phép chúng ta di chuyển trong chức năng, qua vòng lặp trong khi. Trong dự án này, chúng tôi sẽ đảm bảo rằng chúng tôi đã hoàn thành đơn đặt hàng và trở lại với biến 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
4 của chúng tôi. Hãy xem:MENU = {"soda", "fries", "burger", "shake", "cookie", "chicken strips"}
def get_order[]:
current_order = []
while True:
print["What can I get for you?"]
order = input[]
if order in MENU:
current_order.append[order]
else:
print["I'm sorry, we don't serve that."]
continue
if is_order_complete[]:
return current_order
def is_order_complete[]:
print["Anything else? yes/no"]
choice = input[]
if choice == "no":
return True
elif choice == "yes":
return False
else:
raise Exception["invalid input"]
def main[]:
order = get_order[]
if __name__ == "__main__":
main[]
Một chức năng mới đã được thêm vào được gọi là
standardprice = "$7.50"
deluxeprice = "13.50"
print [
"""
1 Hawaiian %s
2 Champagne Ham & Cheese %s
3 Beef & Onion %s
4 Pepperoni %s
5 Simply Cheese %s
6 Bacon & Mushroom %s
7 Italiano %s
8 The Deluxe %s
9 Ham, Egg & Hollandaise %s
10 Americano %s
11 Mr Wedge %s
12 BBQ Meatlovers %s
""" % [standardprice, standardprice, standardprice, standardprice,
standardprice, standardprice, standardprice,deluxeprice,
deluxeprice,deluxeprice, deluxeprice, deluxeprice]
]
2 và nó hỏi người dùng nếu họ kết thúc với đơn đặt hàng của họ. Nếu chúng là, thì chúng ta sẽ trả lại đơn đặt hàng hiện tại của chúng ta cho standardprice = "$7.50"
deluxeprice = "13.50"
print [
"""
1 Hawaiian %s
2 Champagne Ham & Cheese %s
3 Beef & Onion %s
4 Pepperoni %s
5 Simply Cheese %s
6 Bacon & Mushroom %s
7 Italiano %s
8 The Deluxe %s
9 Ham, Egg & Hollandaise %s
10 Americano %s
11 Mr Wedge %s
12 BBQ Meatlovers %s
""" % [standardprice, standardprice, standardprice, standardprice,
standardprice, standardprice, standardprice,deluxeprice,
deluxeprice,deluxeprice, deluxeprice, deluxeprice]
]
3. Nếu không, thì chúng tôi tiếp tục trong vòng lặp trong khi. Nếu người dùng nhập bất cứ thứ gì khác ngoài Có/Không, thì chúng tôi sẽ gây ra lỗi hoặc về cơ bản lật bảng trên chương trình và thoát với thông báo vào đầu vào không hợp lệ. Chương trình của chúng tôi không lộn xộn với việc xử lý đầu vào! Quay trở lại 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
0, chúng tôi kiểm tra xem standardprice = "$7.50"
deluxeprice = "13.50"
print [
"""
1 Hawaiian %s
2 Champagne Ham & Cheese %s
3 Beef & Onion %s
4 Pepperoni %s
5 Simply Cheese %s
6 Bacon & Mushroom %s
7 Italiano %s
8 The Deluxe %s
9 Ham, Egg & Hollandaise %s
10 Americano %s
11 Mr Wedge %s
12 BBQ Meatlovers %s
""" % [standardprice, standardprice, standardprice, standardprice,
standardprice, standardprice, standardprice,deluxeprice,
deluxeprice,deluxeprice, deluxeprice, deluxeprice]
]
2 đã trả về đúng hay sai và trả lại 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
4 nếu vậy. Lưu ý 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
7 ngay phía trên nó? Nếu người dùng đặt hàng một cái gì đó không có trong menu, chúng tôi không muốn hỏi thì đó là tất cả? Nhưng thay vào đó, khởi động lại vòng lặp và hỏi những gì họ muốn đặt hàng.Cho vòng lặp
Sau khi người dùng của chúng tôi đã đặt hàng những gì họ muốn từ menu, tất cả những gì cần thiết bây giờ là đọc lại những gì họ đã đặt hàng và đưa họ đến cửa sổ tiếp theo. Điều đó có nghĩa là một chức năng nữa và chúng tôi đã hoàn thành! Kiểm tra nó:
MENU = {"soda", "fries", "burger", "shake", "cookie", "chicken strips"}
def get_order[]:
current_order = []
while True:
print["What can I get for you?"]
order = input[]
if order in MENU:
current_order.append[order]
else:
print["I'm sorry, we don't serve that."]
continue
if is_order_complete[]:
return current_order
def is_order_complete[]:
print["Anything else? yes/no"]
choice = input[]
if choice == "no":
return True
elif choice == "yes":
return False
else:
raise Exception["invalid input"]
def output_order[order_list]:
print["Okay, so you want"]
for order in order_list:
print[order]
def main[]:
order = get_order[]
output_order[order]
print["Please drive through to the second window."]
if __name__ == "__main__":
main[]
Lặp lại đơn đặt hàng
Đến thời điểm này trong chương trình của chúng tôi, chúng tôi đã hoàn thành việc nhận đơn đặt hàng và trở lại
standardprice = "$7.50"
deluxeprice = "13.50"
print [
"""
1 Hawaiian %s
2 Champagne Ham & Cheese %s
3 Beef & Onion %s
4 Pepperoni %s
5 Simply Cheese %s
6 Bacon & Mushroom %s
7 Italiano %s
8 The Deluxe %s
9 Ham, Egg & Hollandaise %s
10 Americano %s
11 Mr Wedge %s
12 BBQ Meatlovers %s
""" % [standardprice, standardprice, standardprice, standardprice,
standardprice, standardprice, standardprice,deluxeprice,
deluxeprice,deluxeprice, deluxeprice, deluxeprice]
]
3, đã đặt danh sách 1 Hawaiian $7.50
2 Champagne Ham & Cheese$7.50
3 Beef & Onion $7.50
4 Pepperoni $7.50
5 Simply Cheese $7.50
6 Bacon & Mushroom $7.50
7 Italiano $7.50
8 The Deluxe $13.50
9 Ham, Egg & Hollandaise $13.50
10 Americano $13.50
11 Mr Wedge $13.50
12 BBQ Meatlovers $13.50
4 của chúng tôi vào biến MENU = {"soda", "fries", "burger", "shake", "cookie", "chicken strips"}
def main[]:
pass
if __name__ == "__main__":
main[]
0. Bây giờ chúng tôi có chức năng MENU = {"soda", "fries", "burger", "shake", "cookie", "chicken strips"}
def main[]:
pass
if __name__ == "__main__":
main[]
1 để chọn thứ tự đó, in được ổn, vì vậy bạn muốn và in từng mục trong danh sách đơn hàng đó. Nếu bạn không chú ý, các tên biến giữa những gì đi vào đối số chức năng và những gì được sử dụng trong chính hàm không phải giống nhau. Những gì cũng mới là For Loop. A For Loop cho phép chúng tôi đi qua từng giá trị trong cấu trúc dữ liệu [List/Set/Et.], gán giá trị cho một biến và thực hiện logic trên từng bản riêng lẻ. Vòng lặp này giống như vòng lặp trong khi, ngoại trừ việc nó bị ràng buộc với cấu trúc dữ liệu được lặp qua, kết thúc một khi giá trị cuối cùng đã được đọc. Như bạn thấy ở đây, tất cả những gì chúng tôi làm là in từng mục đặt hàng, một trên mỗi dòng.
Ý bạn là bạn không bán chuối !?
Cuối cùng, chúng tôi in ra để lái xe đến cửa sổ tiếp theo, và chúng tôi đã hoàn thành! Hãy chơi xung quanh với các mục menu khác nhau hoặc mở rộng nó để bao gồm giá cả! Làm sao? Từ điển tất nhiên! Từ điển là gì? Tìm hiểu trong Phần 4. Xem YA ở đó!