嘿,伙计们,我正在学习python,但我被困在了这个问题上。我试过了,但我的输出不符合正确的答案。有什么原因,怎么解决?在
问题:刺客游戏是一个在大学校园里玩的简单游戏,每个玩家只要对他们说一声“你死了”,就可以指定一个目标进行暗杀。当然,校园里有成千上万的人,而游戏中只有几十个人,你永远不知道谁在暗杀你。一旦你刺杀了某人,你就瞄准了他们要找的目标。如果这是你,那么你就是赢家。为了确保这项工作正常进行,目标必须形成一个连续的“链”。编写一个程序,允许用户输入他们的目标分配,并根据是否存在连续的“链”进行输出。列表中的每个人都用列表中的位置来表示。这个位置的价值就是他们的目标。在
我的代码:
total=0
list_of_players=[]
player=raw_input("Enter a player (end to stop): ")
while player !="end":
list_of_players.append(int(player))
player=raw_input("Enter a player (end to stop): ")
for x in range(len(list_of_players)):
total+=1
if list_of_players[x]==0 and len(list_of_players)==total:
print "The game is valid."
if list_of_players[x]!=0 or len(list_of_players)!=total:
print "The game is not valid. "
该问题指出,如果我输入玩家4,3,0,5,6,2,1:它应该是有效的。 我的程序将其显示为无效。 有什么办法改进我的计划吗? 我从programmersheaven.com网站如果有人好奇的话! 谢谢!在
提示:您的代码将始终拒绝任何不以0结尾的序列。在
尝试将验证逻辑实现为根据序列是否有效返回}的函数,并根据该函数的结果打印验证语句。在
True
或{编辑
在进一步的检查之后,我将尝试给你一些更好的解决方案指导性的提示。在
如@a-rodas answer中所述,} 内置函数,并考虑如何将其用于
if 0 in list_of_players
将帮助您检查0是否是序列的一部分。对于另一个约束,您可以阅读^{total
/len(list_of_players)
。在有了编辑的这些提示,您应该能够用一个简单的
if
/else
语句验证序列(不需要函数)。为了练习,我没有包括代码示例。但请随时提问,以便我们进一步帮助您找到自己的解决方案。在不会等于总数,因为
^{pr2}$将创建一个从}条件永远不会得到满足。在
0
到len(list_of_players)
互斥的范围,因此最后一个元素将等于len(list_of_players) - 1
。因为在循环的每个迭代中,1
添加到total
中,total
只会到达len(list_of_players) - 1
,而你的{但是,您也没有检查它是否是一个链,在示例
4
->;6
->;1
->;3
->;2
->;0
->;0
->;4
是一个有效的链,您需要对此进行检查。 选择任何索引开始。保留一组你已经看到的项目,如果你在到达起始元素之前遇到了一个你已经看到的项目,那么这个链是不连续的。在在我看来,这个问题很适合从图遍历开始,所以请看一下:
https://www.python.org/doc/essays/graphs/
相关问题 更多 >
编程相关推荐