找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 299|回复: 2

[求助] 新手求助 Python找零钱

0

主题

0

帖子

0

积分

贫民

积分
0
林宥承 发表于 2021-2-10 13:52:13 | 显示全部楼层 |阅读模式
本帖最后由 林宥承 于 2021-2-10 19:04 编辑

写一个function然后return一个list。(用if-else function)
一个机器可以兑换无限的硬币(币值为10,5,2,1)。例子:38元可以兑换10,10,10,5,2,1(从大大到小排列)。
其他例子:
coinCh(38) == [10,10,10,5,2,1]coinCh(19) == [10,5,2,2]coinCh(11) == [10,1]coinCh(5) == [5]coinCh(3) == [2,1]



def coinCh(v: int) -> List[int]:(v为正整数)
回复

使用道具 举报

0

主题

828

帖子

828

积分

圣骑士

积分
828
sheeboard 发表于 2021-2-25 12:45:20 | 显示全部楼层
参考
  1. from itertools import repeat
  2. change=[10,5,2,1]
  3. def coinch(x):
  4.     result=[]
  5.     rest=x
  6.     for i in change:
  7.         if i <= rest:
  8.             sh=rest//i
  9.             rest=rest%i
  10.             result.extend(list(repeat(i,sh)))
  11.     return result
复制代码


回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
cjob 发表于 2021-2-26 15:12:52 | 显示全部楼层
供于参考,

  1. def coinCh(v: int):  # (v为正整数)
  2.     # 键为币值,值为币数
  3.     list_res = {}
  4.     for i in [10, 5, 2, 1]:
  5.         if i <= v:  # 当钱大于等于币值进入
  6.             res = v // i
  7.             v = v % i
  8.             list_res[i] = res
  9.             continue
  10.         # 否则币数为零
  11.         list_res[i] = 0
  12.     return list_res
复制代码

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表