Cash - CS50x 2026
Vấn đề cần giải quyết
Trong một tệp có tên là cash.py nằm trong thư mục sentimental-cash, hãy viết một chương trình hỏi người dùng số tiền thối còn nợ là bao nhiêu, sau đó in ra số lượng đồng xu tối thiểu cần thiết để trả lại số tiền đó. Bạn có thể thực hiện bài này tương tự như cách bạn đã làm trong Problem Set 1, ngoại trừ việc chương trình lần này phải được viết bằng Python và bạn nên giả định rằng người dùng sẽ nhập số tiền thối bằng đô la (ví dụ: 0.50 đô la thay vì 50 cent).
Demo
Yêu cầu kỹ thuật
Sử dụng hàm
get_floattừ Thư viện CS50 để lấy đầu vào của người dùng và hàmprintđể in ra câu trả lời của bạn. Giả định rằng các loại tiền xu có sẵn là quarters (25¢), dimes (10¢), nickels (5¢) và pennies (1¢).- Chúng tôi yêu cầu bạn sử dụng
get_floatđể bạn có thể xử lý cả đô la và cent, mặc dù không có ký hiệu đô la. Nói cách khác, nếu một khách hàng được thối $9.75 (như trong trường hợp một tờ báo có giá 25¢ nhưng khách hàng thanh toán bằng tờ $10), hãy giả định rằng đầu vào của chương trình sẽ là9.75chứ không phải$9.75hay975. Tuy nhiên, nếu khách hàng được thối chính xác $9, hãy giả định rằng đầu vào của chương trình sẽ là `9.00` hoặc chỉ `9` nhưng, nhắc lại, không phải `$9hay900. Tất nhiên, theo bản chất của các giá trị số thực dấu phẩy động, chương trình của bạn cũng có thể hoạt động với các đầu vào như9.0và9.000`; bạn không cần lo lắng về việc kiểm tra xem đầu vào của người dùng có được “định dạng” đúng như tiền tệ hay không.
- Chúng tôi yêu cầu bạn sử dụng
Nếu người dùng không nhập một giá trị không âm, chương trình của bạn nên yêu cầu người dùng nhập lại một số tiền hợp lệ cho đến khi người dùng tuân thủ.
Ngoài ra, để chúng tôi có thể tự động hóa một số thử nghiệm cho mã nguồn của bạn, chúng tôi yêu cầu dòng đầu ra cuối cùng của chương trình chỉ chứa số lượng đồng xu tối thiểu có thể: một số nguyên theo sau bởi một dòng mới.
Cách kiểm tra
Mặc dù check50 có sẵn cho bài toán này, bạn nên tự mình kiểm tra mã nguồn trước cho mỗi trường hợp sau đây.
- Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập0.41và nhấn enter. Chương trình của bạn sẽ in ra4. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập0.01và nhấn enter. Chương trình của bạn sẽ in ra1. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập0.15và nhấn enter. Chương trình của bạn sẽ in ra2. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập1.60và nhấn enter. Chương trình của bạn sẽ in ra7. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập23và nhấn enter. Chương trình của bạn sẽ in ra92. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập4.2và nhấn enter. Chương trình của bạn sẽ in ra18. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhập-1và nhấn enter. Chương trình của bạn sẽ từ chối đầu vào này vì không hợp lệ và yêu cầu người dùng nhập lại một số khác. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Nhậpfoovà nhấn enter. Chương trình của bạn sẽ từ chối đầu vào này vì không hợp lệ và yêu cầu người dùng nhập lại một số khác. - Chạy chương trình bằng lệnh
python cash.pyvà đợi thông báo nhập dữ liệu. Không nhập gì cả và nhấn enter. Chương trình của bạn sẽ từ chối đầu vào này vì không hợp lệ và yêu cầu người dùng nhập lại một số khác.
Độ chính xác
check50 cs50/problems/2026/x/sentimental/cash
Phong cách
style50 cash.py
Cách nộp bài
Trong terminal của bạn, thực hiện lệnh dưới đây để nộp bài, đồng thời trả lời các câu hỏi hiện ra.
submit50 cs50/problems/2026/x/sentimental/cash