-5

我在 python 课上,对 python 知之甚少。我遇到了一些问题,正在尝试解决这些问题。请注意,我不是要代码解决方案。我只是在寻找反馈和帮助。

我坚持的部分是我不知道如何制作一个代码来输入购买的总成本和支付的金额。

我被这个任务的最后一部分困住了:

教科书的清单 3.4:ComputeChange.py,接受一美元和美分的金额,并输出由便士、镍币、一角硬币、四分之一和 Sacagawea 组成的硬币的多集(可以包含多个元素副本的集合)具有最小基数的美元。你的任务是修改这个程序如下:
1)你的程序必须输入两个数字:购买的总成本和支付的金额。两个输入均以英镑为单位,保留两位小数。
2) 输出具有最小基数的多组硬币,其价值等于使用上图所示的八个支配所导致的零钱。注意:在现代英国系统中,1 磅等于 100 便士。
3) 以下面指定的格式输出结果。

你的总变化是:£□□□□.□□

其中:
a) 上面的空框由正确的到期总零钱的数字(或空格)代替。
b) >1 的数字在 4 个空格的字段内右对齐。
c) 必须显示小数点后两位数,即使是零。

好的,所以在我的教科书中,我编写了教科书代码,但是用美元、一角硬币、四分之一硬币和镍币代替了它们的英国货币等价物。到目前为止,这是我的代码:

#9/11/2013
#The Pound Is Sinking

# Receive the amount
amount = float(input("Enter the amount"))

# convert the amount to pence
remainingamount = int(amount * 100)

# find the number of two pounds
numberOfTwoPounds = remainingAmount // 200
remainingAmount = remainingAmount % 200

# find the number of one pound
numberOfOnePounds = remainingAmount // 100
remainingAmount = remainingAmount % 100

# find the number of fifty pence
numberOfFiftyPence = remainingAmount // 50
remainingAmount = remainingAmount % 50

# find the number of twenty pence
numberOfTwentyPence = remainingAmount // 20
remainingAmount = remainingAmount % 20

# find the number of ten pence
numberOfTenPence = remainingAmount // 10
remainingAmount = remainingAmount % 10

# find the number of five pence
numberOfFivePence = remainingAmount // 5
remainingAmount = remainingAmount % 5

# find the number of two pence in the remaining amount
numberOfTwoPence = remainingAmount // 2
remainingAmount = remainingAmount % 2
4

3 回答 3

4

这是另一个建议。与许多计算机语言不同,python 可以帮助您编写程序。

首先,键入“python”或“python3”,具体取决于您要使用的版本。然后,您将看到一条消息,告诉您正在使用的版本和“>>>”。每次收到其中一个“>>>”提示时,您都可以输入一些内容。所以进入后

>>> amount = float(input("Enter the amount: "))
Enter the amount: 14
>>> amount
14.0
>>>

所以你看到你可以试验和学习事情是如何运作的。例如,您可以输入“1R”而不是“14”。你知道,手指粗的人可能会这样做。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '1R'
>>>

所以基本上,您可以“单步”完成,跟踪哪些有效,哪些无效,将有效的内容放入您正在编写的程序中。

于 2013-09-10T20:56:45.543 回答
3

这是另一个提示,如果您遵循它,您会发现它很有帮助。您经常会遇到需要编写程序的问题。不要开始编写程序来解决问题。很多人——即使是非常有经验的程序员也是这样工作的。这是解决问题的最慢方法。

相反,只考虑问题的一小部分,然后解决它。例如,您需要两个数字,然后才能进行更改。但这仍然不是要解决的问题。要解决的第一个问题是输入一个数字。如果你能解决那个简单的问题,你可以重复使用这个解决方案,只需稍加改动即可解决更大问题的另一半。

接下来你会担心做出改变。但是暂时不要粘上输入。只需从支付的金额和成本开始,然后将它们固定为某个已知值。此时您会意识到支付的金额必须超过成本,否则您将做出负面改变!如果您没有意识到这一点,那么您会看到一些令人惊讶的结果,通常称为错误。

继续解决小问题。然后以某种易于理解的方式将它们“粘合”在一起。

祝你好运。

于 2013-09-10T21:28:45.703 回答
2

您的代码看起来不错,您只是缺少第二个输入和输出:

#! /usr/bin/python3

total = float (input ('Total amount: £') )
paid = float (input ('Cash received: £') )
change = int (paid * 100 - total * 100)

multiset = []
for nomination in [200, 100, 50, 20, 10, 5, 2, 1]:
    count = change // nomination
    change = change % nomination
    for _ in range (count): multiset.append (nomination)

print (', '.join ('{:.2f}'.format (nomination / 100) for nomination in multiset) )
print ('Total change: £{:>4.2f}'.format (paid - total) )
于 2013-09-10T20:13:01.940 回答