Cash
要解决的问题
在名为 sentimental-cash 的文件夹中名为 cash.py 的文件中,编写一个程序,询问用户欠多少找零,然后输出可以用最少多少个硬币来找零。你可以像在问题集 1 中那样做,只不过这次你的程序应该用 Python 编写,并且你应该假设用户会以美元为单位输入找零金额(例如,0.50 美元而不是 50 美分)。
演示
规格说明
- 使用 CS50 库中的
get_float获取用户输入,并使用print输出你的答案。假设唯一可用的硬币是 25 美分 (quarters) 、10 美分 (dimes) 、5 美分 (nickels) 和 1 美分 (pennies) 。- 我们要求你使用
get_float,这样你就可以处理美元和美分,只是不带美元符号。换句话说,如果某位顾客应被找回 $9.75(例如一份报纸售价 25 美分但顾客支付了 $10 纸币的情况),假设你的程序输入将是9.75而不是$9.75或975。然而,如果某位顾客应被找回恰好 $9,假设你的程序输入将是9.00或仅仅是9,但同样不是$9或900。当然,由于浮点值的特性,你的程序很可能也能处理9.0和9.000这样的输入;你无需担心检查用户的输入是否像钱一样”格式化”。
- 我们要求你使用
- 如果用户未能提供一个非负值,你的程序应该反复重新提示用户输入有效金额,直到用户遵守为止。
- 顺便说一下,为了让我们能够自动化测试你的代码,我们要求你的程序的最后一行输出仅为可能的最少硬币数量:一个整数后跟一个换行符。
如何测试
虽然 check50 可以用于此问题,但我们鼓励你先自行针对以下每一项测试你的代码。
- 以
python cash.py运行你的程序,等待提示输入。输入0.41并按回车。你的程序应该输出4。 - 以
python cash.py运行你的程序,等待提示输入。输入0.01并按回车。你的程序应该输出1。 - 以
python cash.py运行你的程序,等待提示输入。输入0.15并按回车。你的程序应该输出2。 - 以
python cash.py运行你的程序,等待提示输入。输入1.60并按回车。你的程序应该输出7。 - 以
python cash.py运行你的程序,等待提示输入。输入23并按回车。你的程序应该输出92。 - 以
python cash.py运行你的程序,等待提示输入。输入4.2并按回车。你的程序应该输出18。 - 以
python cash.py运行你的程序,等待提示输入。输入-1并按回车。你的程序应该拒绝此无效输入,并重新提示用户输入另一个数字。 - 以
python cash.py运行你的程序,等待提示输入。输入foo并按回车。你的程序应该拒绝此无效输入,并重新提示用户输入另一个数字。 - 以
python cash.py运行你的程序,等待提示输入。不输入任何内容,直接按回车。你的程序应该拒绝此无效输入,并重新提示用户输入另一个数字。
正确性
check50 cs50/problems/2026/x/sentimental/cash
代码风格
style50 cash.py
如何提交
在终端中执行以下命令提交你的作业,并按提示完成操作。
submit50 cs50/problems/2026/x/sentimental/cash