def main():d = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0] # 存储各种硬币的面值d_num = [] # 存储每种硬币的数量total_money = 0 # 收银员拥有的总金额# 输入每种硬币的数量temp = input('请输入每种零钱的数量(以空格分隔):')d_num0 = temp.split() # 以空格进行分割for i in range(len(d)):d_num.append(int(d_num0[i]))total_money += d[i] * d_num[i] # 计算收银员拥有的总钱数# 输入需要找零的金额change_needed = float(input("请输入需要找的零钱:"))if change_needed > total_money:print('数据有错,您要找的零钱超过了收银员拥有的钱。')returntotal_money -= change_needed # 根据需要找零的金额更新收银员剩余的钱数print(f'收银员还有 {total_money:.2f} 元。')# 计算找零时所需最少硬币数量的逻辑i = len(d) - 1 # 从最大面值的硬币开始while change_needed > 0 and i >= 0:if change_needed >= d[i]:n = int(change_needed / d[i]) # 该面值硬币所需的数量if n > d_num[i]: # 如果拥有的该面值硬币数量比所需数量少n = d_num[i] # 则使用全部可用的该面值硬币change_needed -= n * d[i] # 减少还需找零的金额print(f"用了 {n} 个 {d[i]} 元硬币")i -= 1 # 移至下一个面值稍小的硬币 if __name__ == '__main__':main() 输出结果: