硬币兑换制造者Python程序

2024-06-16 09:32:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在初级编程课程。我们必须做一个改变创造者计划的练习。输入值必须介于0-99之间,当输入值在四分之一之间时,必须用四分之一、十分之一、五分之一和五分之一表示。我写了一个包含循环和whiles的代码,但是他想要更简单和更小的代码。他给我这个是为了帮助我:

c=int(input('Please enter an amount between 0-99:'))
print(c//25)
print(c%25)

他告诉我们,这基本上是我们所需要的,只需要加上一角硬币、镍币和便士。我尝试了多种方法,一角硬币,一角镍币,和一便士,但我不能得到正确的输出。每当我进入'99',我得到3个硬币,2个硬币,1个硬币,0个硬币。如果有人能帮助我,那就太好了!


Tags: 代码aninput编程硬币amount计划课程
3条回答
n = int(input("Enter a number between 0-99"))
q = n // 25
n %= 25
d = n // 10
n %= 10
ni =  n // 5
n %= 5
c = n % 5
print(str(q) +" " + str(d) +" " + str(ni) + " " + str(c))

我希望这有用吗?像这样的东西,但不要只是抄袭。每次你除以25,10,5,你必须失去这一部分,因为它已经被计算在内。在最后打印出你想要的:)。

我现在知道你想取得什么。使用模算符你可以很容易地找出有多少四分之一,一角,五分镍币和一便士。

假设输入99。

c=int(input('Please enter an amount between 0-99:'))
print(c//25, "quarters")
c = c%25
print(c//10, "dimes")
c = c%10
print(c//5, "nickles")
c = c%5
print(c//1, "pennies")

这将打印出:

3 quarters
2 dimes
0 nickles
4 pennies

真正的诀窍是知道,因为每一枚硬币至少值下一个较小面额you can use a greedy algorithm的两倍。剩下的只是实现细节。

这里有一个稍显枯燥(但可能,呃,更令人困惑)的实现。我真正做的不同之处在于使用一个列表来存储我的结果,并利用tuple unpackingdivmod。而且,这在将来更容易扩展:我只需要将coins更改为[100, 25, 10, 5, 1],就可以支持$1账单。等等。

coins = [25,10,5,1] #values of possible coins, in descending order
results = [0]*len(coins) #doing this and not appends to make tuple unpacking work
initial_change = int(input('Change to make: ')) #use raw_input for python2
remaining_change = initial_change
for index, coin in enumerate(coins):
    results[index], remaining_change = divmod(remaining_change, coin)
print("In order to make change for %d cents:" % initial_change)
for amount, coin in zip(results, coins):
    print("    %d %d cent piece(s)" % (amount, coin))

给你:

Change to make: 99
In order to make change for 99 cents:
    3 25 cent piece(s)
    2 10 cent piece(s)
    0 5 cent piece(s)
    4 1 cent piece(s)

相关问题 更多 >