首页 > 解决方案 > Python数组硬币排序

问题描述

我正在尝试使用python中的数组来做一个硬币排序python程序,想知道最有效的方法是什么......这是我到目前为止所拥有的,任何帮助将不胜感激。


values = [50,20,10,5,1]    #values of coins
amount = int(input("how much change"))
remaining = amount
i = 0
fifty = 0
twenty = 0
ten = 0
five = 0
one = 0
print(remaining)
print("##########")
# while unsorted values remain:
# while len(values) >0:
while remaining >0:
  print(remaining)
  if remaining >= values[0]:
    remaining = remaining - values[0]
    fifty += 1
    # remaining = remaining - 50  
  
  if remaining >= 20 and remaining <50:
    remaining = remaining - values[1]
    twenty += 1
      # remaining = remaining - 20 
  if remaining >= 10 and remaining <20:
    remaining = remaining - values[2]
    ten += 1
  #  remaining = remaining - 10 
  if remaining >= 5 and remaining <10:
    remaining = remaining - values[3]
    five += 1 
  #  remaining = remaining - 5  
  if remaining >= 1 and remaining <5:
    remaining = remaining - values[4]
    one += 1 
      # remaining = remaining - 1 
  if remaining ==0:
    print("end loop")
    break
    
print("#########")
print("number of 50 coins = " + str(fifty))
print("number of 20 coins = " + str(twenty))
print("number of 10 coins = " + str(ten))
print("number of 5 coins = " + str(five))
print("number of 1p coins = " + str(one))
   
print("end")
  #i=i+1


我想有一种有效的方法来做到这一点,我教计算机科学。谢谢

标签: pythonarrayssorting

解决方案


您可以使用//and%建立一个计数列表——对于每个硬币值,整数除法给出使用的硬币数量,然后余数 ( remaining % v) 是新的剩余计数。然后循环打印。if count(如果要显示零,请删除条件。)

values = [50,20,10,5,1]    #values of coins
amount = int(input("how much change "))
remaining = amount

counts = []
for v in values:
    counts.append(remaining // v)
    remaining %= v

for count, value in zip(counts, values):
    if count:
        print(f"number of {value} coins = {count}")
print("end")

或者,如果您对存储输出不感兴趣,而只是打印它,那么您不需要构建列表:

values = [50,20,10,5,1]    #values of coins
amount = int(input("how much change "))
remaining = amount

for value in values:
    print(f"number of {value} coins = {remaining // value}")
    remaining %= value
print("end")

推荐阅读