Cách tính thay đổi trong python

Tiền tệ của Mỹ có các đồng xu có mệnh giá 1 [đồng xu], 5 [nickel], 10 [dimes] và 25 cent [quý]. Hãy tưởng tượng rằng chúng tôi đang lập trình một máy tính tiền để phân phát tiền lẻ chính xác. Trong bài tập này, chúng ta sẽ cần tính số lượng của mỗi đồng xu cho một lượng thay đổi nhất định

Mô tả bài tập

Viết hàm makeChange[] với tham số số tiền. Tham số amount chứa một số nguyên của số xu để thực hiện thay đổi cho. Ví dụ: 30 sẽ đại diện cho 30 xu và 125 sẽ đại diện cho 1 đô la. 25. Hàm này sẽ trả về một từ điển có các khóa 'quarters', 'dimes', 'nickels' và 'penny', trong đó giá trị của khóa là một số nguyên của loại tiền này

Giá trị cho khóa của một đồng xu không bao giờ được 0. Thay vào đó, khóa không nên có trong từ điển. Ví dụ: makeChange[5] sẽ trả về {'nickels'. 1} chứ không phải {'phần tư'. 0, 'đồng xu'. 0, 'nickel'. 1, 'đồng xu'. 0}

Ví dụ: makeChange[30] sẽ trả về từ điển {'quarters': 1, 'nickels': 5} để đại diện cho các đồng xu được sử dụng để đổi 30 xu. Chức năng nên sử dụng số lượng tiền tối thiểu. Ví dụ: makeChange[10] sẽ trả về {'dimes': 1} chứ không phải {'nickels'. 2}, mặc dù cả hai đều cộng lại tới 10 xu

Các câu lệnh amount0 Python này dừng chương trình nếu điều kiện của chúng là amount1. Sao chép chúng vào cuối chương trình giải pháp của bạn. Giải pháp của bạn là đúng nếu tất cả các điều kiện của câu lệnh amount0 sau đây đều đúng

khẳng định makeChange[30] == {'quý'. 1, 'nickel'. 1}

khẳng định makeChange[10] == {'dimes'. 1}

khẳng định makeChange[57] == {'quý'. 2, 'nickel'. 1, 'đồng xu'. 2}

khẳng định makeChange[100] == {'quý'. 4}

khẳng định makeChange[125] == {'quý'. 5}

Cố gắng viết một giải pháp dựa trên thông tin trong mô tả này. Nếu bạn vẫn gặp khó khăn khi giải bài tập này, hãy đọc phần Thiết kế giải pháp và Các trường hợp đặc biệt và Gotchas để biết thêm gợi ý

khái niệm tiên quyết. toán tử modulo, phép chia số nguyên

giải pháp thiết kế

Đầu tiên, hàm makeChange[] của chúng ta sẽ tạo một từ điển trống trong một biến có tên là amount4 để lưu kết quả trả về. Tiếp theo, chúng ta cần xác định số lượng của từng loại tiền xu, bắt đầu với mệnh giá lớn nhất [25 phần tư xu] đến nhỏ nhất [đồng xu 1 xu]. Bằng cách này, chúng tôi không vô tình sử dụng nhiều hơn số lượng xu tối thiểu bằng cách xác định chúng tôi cần, chẳng hạn như hai xu 5 xu thay vì một xu 10 xu

Hãy bắt đầu với quý. Trước khi thực hiện bất kỳ phép tính nào, nếu lượng thay đổi cần thực hiện nhỏ hơn 25, thì chúng ta có thể bỏ qua phép tính này hoàn toàn vì không có phần tư nào. Mặt khác, nếu lượng thay đổi cần thực hiện chia hết cho 25, giả sử tham số amountamount6, thì chúng ta có thể xác định số phần tư bằng cách chia amount cho amount8. 125/25 đánh giá là amount9

Tuy nhiên nếu nó không chia hết cho 25 thì kết quả của ta sẽ có phần phân số. 300 đánh giá là 5. 4. Chúng tôi chỉ có thể thêm số nguyên của phần tư vào thay đổi của mình, không phải 0. 4 quý. Sử dụng toán tử chia số nguyên 301, chúng tôi có thể đảm bảo rằng chúng tôi chỉ đưa toàn bộ số xu vào từ điển thay đổi của mình. cả 302 và 135 // 25 đánh giá bằng 303

Để khấu trừ số tiền thay đổi được giữ trong các quý, chúng tôi có thể đặt thay đổi thành số tiền còn lại sau khi loại bỏ 25 xu gia số. Từ “còn lại” gợi ý rằng chúng ta nên sử dụng toán tử modulo 304. Ví dụ: nếu chúng tôi cần đổi 135 xu và sử dụng 5 phần tư cho 125 xu trong số đó, thì chúng tôi sẽ cần sử dụng các đồng xu khác cho 135 % 25 hoặc 305 xu còn lại

Điều này xử lý tính toán số phần tư được sử dụng để thực hiện thay đổi. Sau đó, chúng tôi sẽ sao chép-dán mã này và thực hiện các sửa đổi đối với hào, biệt hiệu và đồng xu [theo thứ tự đó]. Khi chúng tôi xử lý xong số lượng đồng xu, tham số amount sẽ là 0 và từ điển amount4 sẽ chứa số tiền chính xác của mỗi đồng xu

Trường hợp đặc biệt và Gotchas

Bởi vì bài tập này xác định rằng tiền lẻ phải được thực hiện từ số lượng tiền xu tối thiểu, nên chỉ có một câu trả lời đúng cho bất kỳ lượng tiền lẻ nào. Điều quan trọng nhất cần làm đúng trong thuật toán này là tính toán các đồng xu theo thứ tự từ lớn nhất đến nhỏ nhất, nếu không, bạn sẽ rơi vào tình huống chẳng hạn như bạn sử dụng hai đồng xu thay vì một đồng xu

Ngoài ra, hãy nhớ sử dụng toán tử chia số nguyên 301 thay vì toán tử chia 309 để tính số xu. Toán tử chia thông thường của Python đánh giá các số dấu phẩy động, có thể chứa một phần phân số. [Ngay cả khi không, Python vẫn đánh giá kết quả là float. 125/25 đánh giá số float amount9 chứ không phải số nguyên 303. ] Phép chia số nguyên luôn đánh giá thành số nguyên và không có vấn đề tiềm ẩn này

Vì đồng xu đại diện cho 1 xu, nên bạn có thể đặt số lượng đồng xu thay đổi thành bất kỳ giá trị nào của tham số amount ở cuối hàm miễn là nó lớn hơn 0

Bây giờ hãy thử viết một giải pháp dựa trên thông tin trong các phần trước. Nếu bạn vẫn gặp khó khăn khi giải bài tập này, hãy đọc phần Mẫu giải pháp để biết thêm gợi ý

Mẫu giải pháp

Trước tiên hãy thử viết một giải pháp từ đầu. Nhưng nếu bạn gặp khó khăn, bạn có thể sử dụng chương trình một phần sau đây làm nơi bắt đầu. Sao chép đoạn mã sau từ https. //invpy. com/makechange-mẫu. py và dán nó vào trình chỉnh sửa mã của bạn. Thay thế dấu gạch dưới bằng mã để tạo chương trình hoạt động

def makeChange[số tiền]

thay đổi = ____

nếu số tiền >= ____

thay đổi['quý'] = số tiền // ____

số tiền = số tiền % ____

nếu số tiền >= ____

thay đổi['dimes'] = ____ // ____

số tiền = ____ % ____

nếu số tiền >= ____

thay đổi['nickels'] = ____ // ____

số tiền = ____ % ____

nếu số tiền >= 1

thay đổi[____] = số tiền

đổi trả

Giải pháp hoàn chỉnh cho bài tập này được đưa ra trong Phụ lục A và https. //invpy. com/makechange. py. Bạn có thể xem từng bước của chương trình này khi nó chạy dưới trình gỡ lỗi tại https. //invpy. com/makechange-debug/

Tính toán được thực hiện như thế nào trong Python?

Đối với các phép tính toán học đơn giản trong Python, bạn có thể sử dụng các toán tử toán học tích hợp sẵn, chẳng hạn như phép cộng [ + ], phép trừ [ - ], phép chia [ / ] và phép nhân . Tuy nhiên, các phép toán nâng cao hơn, chẳng hạn như hàm mũ, logarit, lượng giác hoặc lũy thừa, không được tích hợp sẵn. . But more advanced operations, such as exponential, logarithmic, trigonometric, or power functions, are not built in.

Làm cách nào để tính tỷ lệ phần trăm trong Python?

Ví dụ đầu tiên cho thấy tỷ lệ phần trăm tăng từ 60 lên 30 là 100 %. .
Sử dụng phép chia / toán tử để chia một số cho một số khác
Nhân thương số với 100 để có được tỷ lệ phần trăm
Kết quả cho biết số thứ nhất bằng bao nhiêu phần trăm so với số thứ hai

Chủ Đề