-3

所以我已经尝试了几个小时来做​​这个测试,我想使用 Tuple 和 divmod 函数为我的结果产生一种非常串联的方式,我终于找到了一个解决方案。但我不能理解为什么它只打印 1 个结果而不是多个.. 这是我的代码:

def tilt(money):
     amount = [(1,'dollar'),(0.25,'quarter'),(0.10,'dime'),(0.05,'nickel'),(0.01,'pennie')]
     total = {}
     for amount_value, amount_name in amount:
         if money >= amount_value:
             number_amount, money = divmod(money, amount_value)
             total[amount_name] = number_amount
     return total

    print(tilt(10.65))

# result for this is {'dollar': 10.0}

# what I expect is {'dollar': 10, 'quarter': 2, 'dime': 1, 'nickel': 1}

我只是无法解决解决方案,并且我想避免使用无休止的 If-Else 代码来达到这一点。我确定一定有一个我缺少的简单解决方案,在此先感谢您的帮助..

4

1 回答 1

0

我无法评论;但这可能取决于您的缩进。如果您将您的 return 语句与您的 for 循环保持一致 - 您将得到您正在寻找的响应。

如下:

def tilt(money):
    amount = [(1, 'dollar'), (0.25, 'quarter'), (0.10, 'dime'),
              (0.05, 'nickel'), (0.01, 'pennie')]
    total = {}
    for amount_value, amount_name in amount:
        if money >= amount_value:
            number_amount, money = divmod(money, amount_value)
            total[amount_name] = number_amount
    return total
于 2020-11-14T21:47:20.497 回答