Cash - CS50x 2023
编写程序,计算找零所需的最少硬币数。
$ python cash.py
Change owed: 0.41
4
开始
登录 cs50.dev,点击你的终端窗口,然后单独执行 cd
。 你应该会看到终端提示符如下所示:
接下来执行
wget https://cdn.cs50.net/2022/fall/psets/6/sentimental-cash.zip
以便将名为 sentimental-cash.zip
的 ZIP 文件下载到你的 codespace。
然后执行
unzip sentimental-cash.zip
来创建一个名为 sentimental-cash
的文件夹。 你不再需要此 ZIP 文件,可以执行以下命令
并在提示符后输入 y
并按回车键,删除已下载的 ZIP 文件。
现在输入
然后按回车键进入该目录。 现在你的提示符应该如下所示。
单独执行 ls
,你应该看到 cash.py
。 如果你遇到任何问题,请再次按照这些相同的步骤操作,看看你是否能确定你哪里出错了!
规范
- 在
cash.py
文件中编写一个程序,首先询问用户应找零多少,然后输出组成该零钱的最少硬币数。 你可以参考问题集 1的做法,但这次你的程序需要用 Python 编写,并假设用户以美元输入找零金额(例如,0.50 美元,而不是 50 美分)。 - 使用 CS50 库中的
get_float
获取用户的输入,并使用print
输出你的答案。 假设唯一可用的硬币是 25 美分(quarter)、10 美分(dime)、5 美分(nickel)和 1 美分(penny)。- 我们要求使用
get_float
来处理美元和美分,即使没有美元符号。 也就是说,如果顾客欠款 9.75 美元(例如,报纸 25 美分,顾客支付 10 美元),程序应接收9.75
作为输入,而不是$9.75
或975
。 同样,如果顾客正好欠 9 美元,程序应接收9.00
或9
,而不是$9
或900
。 - 由于浮点数的特性,程序可能也能处理
9.0
和9.000
这样的输入;你无需验证用户输入的金额格式是否正确。
- 我们要求使用
- 如果用户输入的不是非负值,程序应反复提示用户输入有效的金额,直到输入正确为止。
- 为了方便自动化测试,程序最后一行输出应仅包含最少硬币数量,即一个整数,后跟一个换行符。
用法
你的程序的行为应符合以下示例。
$ python cash.py
Change owed: 0.41
4
测试
虽然可以使用 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
评估代码的正确性。 别忘了自己编译并测试!
check50 cs50/problems/2023/x/sentimental/cash
执行以下命令,使用 style50
评估代码的风格。
如何提交
在终端中执行以下命令,提交你的作品。
submit50 cs50/problems/2023/x/sentimental/cash