每天开心一点

python:每日一题 33

2017-11-27 13:18:00    六月    570    来源: http://bbs.fishc.com/thread-86360-1-1.html

该死的电影院今天售票员全都放假。只能依靠电影院自动售票机进行购票,单张票价为25元。而售票机内没有钱,因此只能靠收入的钱去找零。售票机只能单张销售。(这电影院为什么不倒闭算了。)
现有的货币面值为100,50,25三种。现在有n个人需要买票,且排队顺序不许变,请你根据他们手中的钱计算出,售票机能否进行找零。可以则返回yes,不可以则返回no
  1. def tickets(people):
  2.     # your code
  3.     return ?
复制代码
  1. 例:
  2. tickets([25,25,50])   --->'yes'
  3. tickets([25,50])  --->'yes'
  4. tickets([25,100])  --->'no'
  5. tickets([50,50,100])  --->'no'
  6. tickets([25,50,100]) --->'no'
  7. print(tickets([100, 50, 25, 25]))  --->'no' # 由于排队数序不许变,这个本可以交易的组合无法进行交易。
复制代码

  1. 给出一段测试代码,避免你们自己去兑答案了。
  2. 以下代码保存为test.py,后import可用
  3. def assert_equals(func, target):
  4.     if func == target:
  5.         print('Success!')
  6.     else:
  7.         print('Fail!{0} not equals {1}'.format(func, target))
复制代码

  1. test.assert_equals(tickets([25, 25, 50]), 'YES')
  2. test.assert_equals(tickets([25, 100]), 'NO')
  3. test.assert_equals(tickets([25, 25, 25, 25, 25, 25, 25, 25, 25, 25]), 'YES')
  4. test.assert_equals(tickets([50, 50, 50, 50, 50, 50, 50, 50, 50, 50]), 'NO')
  5. test.assert_equals(tickets([100, 100, 100, 100, 100, 100, 100, 100, 100, 100]), 'NO')
  6. test.assert_equals(tickets([25, 25, 25, 25, 50, 100, 50]), 'YES')
  7. test.assert_equals(tickets([50, 100, 100]), 'NO')
  8. test.assert_equals(tickets([25, 25, 100]), 'NO')
  9. test.assert_equals(tickets([25, 25, 50]), 'YES')
  10. test.assert_equals(tickets([25, 25, 25, 25, 25, 25, 25, 50, 50, 50, 100, 100, 100, 100]),'NO')
  11. test.assert_equals(tickets([25, 100]), 'NO')
  12. test.assert_equals(tickets([50, 50, 100]), 'NO')
  13. test.assert_equals(tickets([25, 50, 100]), 'NO')
  14. test.assert_equals(tickets([25, 25, 50, 50, 100]), 'NO')
  15. test.assert_equals(tickets([100, 50, 25, 25]), 'NO')
复制代码