python - 如何在没有输入和输出信息的情况下修复三个测试用例错误?
问题描述
我正在尝试解决以下 Codewars 挑战 Vasya - Clerk:
新的“复仇者联盟”电影刚刚上映!电影院售票处有很多人排着长队。他们每个人都有一张 100、50 或 25 美元的钞票。“复仇者联盟”的票价为 25 美元。
Vasya 目前是一名文员。他想把一张票卖给这条线上的每个人。
如果 Vasya 最初没有钱并且严格按照人们排队的顺序出售门票,是否可以向每个人出售一张票并找零?
返回 YES,如果 Vasya 可以向每个人出售一张票并用他当时手头的账单找零。否则返回 NO。
我的代码通过了示例测试,但我提交的三个测试用例被拒绝了。
问题
没有关于我的程序失败的测试用例的信息。
如何修复我当前的代码以通过测试?
Passed: 17 Failed: 3 Exit Code: 1
程序
def tickets(people):
Vasya_wallet = 0
if len(people) <0:
return "NO"
for i in range(len(people)):
if people[i] != 25 and Vasya_wallet <= (people[i]-25):
return "NO"
elif Vasya_wallet >= (people[i] - 25):
Vasya_wallet = Vasya_wallet + 25 - (people[i] - 25)
return "YES"
解决方案
你实际上是在收钱,只是把它们加起来,
Vasya_wallet
这不是问题要求你做的。问题更多是关于您是否可以在注释
$50
和$25
注释方面为用户提供更改。因此,我们必须将它们收集在不同的变量中,检查它们的可用性并返回 a
YES
或 aNO
以相应地满足所有要求。
逻辑:
如果用户付款
$25
,则无需退还任何零钱,因为这是票价。但是,我们将var_25
计数增加 1,如下面的代码所示。如果我们收到一个,我们只有在我们有一个时才会
$50
返回零钱。$25
否则,NO
如果不可能,我们返回 a。请注意,在这种情况下,必须立即向用户支付零钱,而不是让他等待一段时间才能将零钱还给他。这使得这个问题更简单。如果我们收到一个,我们必须以任何一个或取决于可用性的形式
$100
给他找零。但是,如果我们有一个,我们会采用一种贪婪的方法来返回。我们这样做是因为它是意义的最高公因数,我们可以用s 来制作它们中的任何一个,但不可能用这些来进行其他更改。$75
$50,$25
$25,$25,$25
$50,$25
$25
$25,$50,$75
$25
片段:
def tickets(people):
var_25 = 0
var_50 = 0
for i in range(len(people)):
if people[i] == 25:
var_25 += 1
elif people[i] == 50:
if var_25 == 0: # if we have no change to give back, we return NO
return "NO"
var_25 -= 1 #we give the user $25 change back
var_50 += 1 # now, we have a $50 change with us
else: # if the user gives $100 to us
if var_25 == 0 or var_25 * 25 + var_50 * 50 < 75: # if we can't give $75 change back
return "NO"
if var_50 > 0:
var_50 -= 1 # we give him one $50 and one $25 change back
var_25 -= 1
else:
var_25 -= 3 # or we give 3 $25 change as we don't have $50 change
return "YES"
推荐阅读
- ubuntu-16.04 - 横向客户端未更新横向界面上的标签
- angular - 如何在Angular 2中订购数组
- java - Selenium Java:我正在自动化一个零售网站。在产品登陆页面中,我们有产品列表以及相关的价格和按钮
- unity3d - Facebook SDK for Unity - 导入非空项目后出错
- asp.net-core - Visual Studio Team Services - 特定的 .NET 核心版本
- neo4j - 来自密码协同过滤器查询的奇怪结果
- karate - 空手道 根据环境忽略场景
- java - 在将 RepositoryRestResource 与另一个存储库组合时使用事务
- java - HashMap 中的搜索键
- angular - 突出显示 *ngFor 中的更改值