Python 计数“;“主宰者”;
这是我在学校遇到的问题。我已经编写了代码,它返回了正确的结果。但是,测试程序显示校验和不匹配。下面是问题和我的代码 如果项目元素右边的每个元素都严格小于它,则称项目元素为“支配者”。 此函数应计算给定项列表中有多少元素是支配元素,并返回该计数。例如,在列表[42,7,12,9,2,5]中,元素42,12,9和5是支配元素。根据这个定义,列表的最后一项自动成为支配者Python 计数“;“主宰者”;,python,python-3.x,list,Python,Python 3.x,List,这是我在学校遇到的问题。我已经编写了代码,它返回了正确的结果。但是,测试程序显示校验和不匹配。下面是问题和我的代码 如果项目元素右边的每个元素都严格小于它,则称项目元素为“支配者”。 此函数应计算给定项列表中有多少元素是支配元素,并返回该计数。例如,在列表[42,7,12,9,2,5]中,元素42,12,9和5是支配元素。根据这个定义,列表的最后一项自动成为支配者 def count_支配者(项目): 如果len(项目)==0: 返回len(项目) 其他: k=1 对于范围内的i(1,len(
def count_支配者(项目):
如果len(项目)==0:
返回len(项目)
其他:
k=1
对于范围内的i(1,len(项目)):
如果评论中已经提到的项目[i]你没有比较,那么操作是不正确的。目前您正在比较:
- 比较7<42
- 比较12<7
- 比较9<12
- 比较2<9
- 比较5<2
如果条件为真,则增加k。根据您的任务,支配者被定义为“其右边的每个元素都严格小于它”。这意味着您必须将每个项目与其右侧的每个元素进行比较(即,您必须检查42>7、42>12、42>9、42>2和42>5,以确定42是否为支配者)
请查看以下功能:
def count_支配者(项目):
k=0
对于idx,枚举中的项(项):
支配者=真
对于项目[idx+1:]中的礼仪:
打印('比较{}和{}'。格式(item,ritem))
#如果是真的,就不是主宰者
如果item我认为您缺少的单词是every
在for循环print('comparing{}和{}'。format(items[i],items[i-1])
,那么您将看到您的函数没有检查支配者。取自。您可以对范围(0,len(items),2)中的i使用,
,只需将如果items[i]>items[i+1]:
放入for循环中即可。for循环基本上比i快了2倍。我想你在问一个调试问题,但我不确定(也就是说,不清楚你在问什么)。如果您提出的是调试问题,请将您的问题放在主题上:包括重复该问题的问题。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。请看:,和。谢谢你们。我想我明白为什么我的代码在测试程序中失败了。原因是我在比较第一和第二个元素,第二和第三个元素。我忽略了“每一个”这个词。
comparing 42 and 7
comparing 42 and 12
comparing 42 and 9
comparing 42 and 2
comparing 42 and 5
42 is a dominator
comparing 7 and 12
comparing 12 and 9
comparing 12 and 2
comparing 12 and 5
12 is a dominator
comparing 9 and 2
comparing 9 and 5
9 is a dominator
comparing 2 and 5
5 is a dominator