Viết một hàm gọi là Tham số Tham số "chèn_coins" là một danh sách Khi hàm insert_coin [] được gọi, giá trị "xu" được gắn vào tham số insert_coins. Viết một hàm gọi là Buy_Product có hai đối số: một đối số được gọi là "Sản phẩm" và cái còn lại được gọi là "Cân bằng". Đối số sản phẩm có thể là một trong những giá trị sau: "Uống", "kẹo", "chip". Bất kỳ giá trị nào khác sẽ tăng ngoại lệ Khi hàm Nếu số dư của các đồng tiền được chèn nhỏ hơn chi phí của sản phẩm, một ngoại lệ tùy chỉnh gọi là Máy bán hàng tự động
Yêu cầu chương trình
1. Chèn tiền
insert_coin
có hai đối số: một đối số được gọi là coin
và một đối số khác được gọi là inserted_coins
.coin
sẽ chấp nhận các giá trị bất kỳ giá trị nào sau đây: 5, 10, 25, 100, 200. Các giá trị này đại diện cho xu. Bất kỳ giá trị nào khác sẽ tăng ngoại lệ ValueError
.2. Mua một sản phẩm
ValueError
.balance
là một số nguyên đại diện cho số dư hiện tại của các quỹ có sẵnbuy_product
được gọi, giá của sản phẩm được chọn được so sánh với số dư.InsufficientFunds
nên được tăng lên.
Nếu số dư bằng hoặc vượt quá chi phí của sản phẩm, thì chức năng sẽ trả lại số dư trừ đi chi phí của sản phẩm đã mua.
Chi phí sản phẩm là:
- Uống: $ 2,75
- Chip: $ 2,25
- Candy: $ 3,15
3. Trả lại thay đổi
Viết một hàm gọi là return_change có một đối số duy nhất gọi là "cân bằng".
Nếu số dư lớn hơn 0, hãy trả lại danh sách các đồng tiền [có thể là bất kỳ sự kết hợp nào của 5, 10, 25, 100, 200] sẽ tổng hợp lên đến số dư.
Nếu vì bất kỳ lý do gì, số dư không phải là bội số 5, thì tổng số tiền được trả lại phải được làm tròn xuống bội số gần nhất của 5 và không vượt quá số dư.
Các đồng tiền được trả lại phải là lớn nhất đầu tiên, sau đó là nhỏ nhất.
Hướng dẫn này xem xét lại một ví dụ trước đó và sử dụng các mô hình lập trình hướng đối tượng để thể hiện các khái niệm liên quan đến máy bán hàng tự động. Chúng ta sẽ thấy các lớp và đối tượng sẽ giúp chúng ta thể hiện tốt hơn "thế giới thực" và giúp chúng ta theo dõi trạng thái: Hãy bắt đầu bằng cách thiết kế máy bán hàng tự động của chúng tôi bằng cách mô hình hóa các đối tượng khác nhau. Đầu tiên, chúng tôi có:Máy bán hàng tự động - Take 2: Sử dụng OOP
Thiết kế
- đồng xu
- Các sản phẩm
- Máy bán hàng tự động
Chúng ta có thể coi đây là các lớp / khái niệm trừu tượng. Trong thực tế, chúng tôi có các đồng tiền cụ thể như Quarters, Loonies & Toonies. Đối với các sản phẩm, chúng tôi có khoai tây chiên, kẹo và đồ uống-những thứ này có thể được chia thành các sản phẩm cụ thể như "coca-Cola có thể" 355ml ". Đây được coi là các lớp cụ thể mà tất cả đều chia sẻ các thuộc tính chung cho các đồng tiền và sản phẩm tóm tắt.
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó:
insert_coin
0insert_coin
1insert_coin
2insert_coin
3
Mô hình
đồng xu
Máy bán hàng tự động |
Chúng ta có thể coi đây là các lớp / khái niệm trừu tượng. Trong thực tế, chúng tôi có các đồng tiền cụ thể như Quarters, Loonies & Toonies. Đối với các sản phẩm, chúng tôi có khoai tây chiên, kẹo và đồ uống-những thứ này có thể được chia thành các sản phẩm cụ thể như "coca-Cola có thể" 355ml ". Đây được coi là các lớp cụ thể mà tất cả đều chia sẻ các thuộc tính chung cho các đồng tiền và sản phẩm tóm tắt. |
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó: |
Mô hình
Đồng tiền | insert_coin 4 |
insert_coin 5 | insert_coin 6 |
Đồng tiền | insert_coin 4 |
insert_coin 5 | insert_coin 6 |
Đồng tiền | insert_coin 4 |
insert_coin 5 | insert_coin 6 |
Đồng tiền | insert_coin 4 |
insert_coin 5 | insert_coin 6 |
Đồng tiền | insert_coin 4 |
insert_coin 5 | insert_coin 6 |
Các sản phẩm
Chúng ta có thể coi đây là các lớp / khái niệm trừu tượng. Trong thực tế, chúng tôi có các đồng tiền cụ thể như Quarters, Loonies & Toonies. Đối với các sản phẩm, chúng tôi có khoai tây chiên, kẹo và đồ uống-những thứ này có thể được chia thành các sản phẩm cụ thể như "coca-Cola có thể" 355ml ". Đây được coi là các lớp cụ thể mà tất cả đều chia sẻ các thuộc tính chung cho các đồng tiền và sản phẩm tóm tắt. |
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó: |
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó: |
Mô hình | Đồng tiền |
insert_coin 4 | insert_coin 5 |
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó: | Mô hình |
Mô hình | Đồng tiền |
insert_coin 4 | insert_coin 5 |
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó: | Mô hình |
Mô hình | Đồng tiền |
insert_coin 4 | insert_coin 5 |
insert_coin 5 | insert_coin 6 |
Máy bán hàng tự động
Chúng tôi cũng phải mô hình hóa máy bán hàng tự động của mình và xác định các hành động trên đó: |
Mô hình |
Đồng tiền |
insert_coin 4 |
insert_coin 5 |
insert_coin 6 |
Các lớp sau được kế thừa từ lớp phụ huynh insert_coin
7. Kế thừa đạt được bằng cách cung cấp dấu ngoặc đơn xung quanh định nghĩa lớp và cung cấp [các] lớp phụ huynh làm đối số.
giá trị
insert_coin
8
insert_coin
9
coin
0not their instances.E.g.
machine = VendingMachine[] machine.buy_product[products.Drink] # Good: This is a type machine.buy_product[products.Drink[]] # Bad: This is an instance
coin
1coin
3coin
4
coin
6
coin
7coin
9inserted_coins
0
inserted_coins
2
Sản phẩm
inserted_coins
3inserted_coins
4inserted_coins
6Scenarios:
inserted_coins
7inserted_coins
8inserted_coins
9coin
1- Khi số dư là 265, một toonie, hai phần tư, một xu và một niken nên được trả lại
- Khi số dư là 7, một niken nên được trả lại
- Khi sự cân bằng là âm, không có gì được trả lại
Giải quyết
- Bắt đầu bằng cách xây dựng các lớp Coin, tiếp theo là sản phẩm. Các bài kiểm tra bắt đầu đã được cung cấp cho các lớp này.
- Bắt đầu viết các xét nghiệm cho các phương pháp Vendingmachine, theo thứ tự được xác định ở trên.