找零 - CS50x 2026
待解决的问题
在名为 sentimental-cash 的文件夹中一个名为 cash.py 的文件中,编写一个程序,询问用户需要找零多少钱,然后输出找零所需的最少硬币数量。这与你在 Problem Set 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