Python列表练习Feedb

2024-03-29 07:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,伙计们,我正在学习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网站如果有人好奇的话! 谢谢!在


Tags: of程序游戏目标列表inputrawlen
3条回答

提示:您的代码将始终拒绝任何不以0结尾的序列。在

尝试将验证逻辑实现为根据序列是否有效返回True或{}的函数,并根据该函数的结果打印验证语句。在

编辑

在进一步的检查之后,我将尝试给你一些更好的解决方案指导性的提示。在

如@a-rodas answer中所述,if 0 in list_of_players将帮助您检查0是否是序列的一部分。对于另一个约束,您可以阅读^{}内置函数,并考虑如何将其用于total/len(list_of_players)。在

有了编辑的这些提示,您应该能够用一个简单的if/else语句验证序列(不需要函数)。为了练习,我没有包括代码示例。但请随时提问,以便我们进一步帮助您找到自己的解决方案。在

len(list_of_players)

不会等于总数,因为

^{pr2}$

将创建一个从0len(list_of_players)互斥的范围,因此最后一个元素将等于len(list_of_players) - 1。因为在循环的每个迭代中,1添加到total中,total只会到达len(list_of_players) - 1,而你的{}条件永远不会得到满足。在

但是,您也没有检查它是否是一个链,在示例4->;6->;1->;3->;2->;0->;0->;4是一个有效的链,您需要对此进行检查。 选择任何索引开始。保留一组你已经看到的项目,如果你在到达起始元素之前遇到了一个你已经看到的项目,那么这个链是不连续的。在

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): ")

seen = set() # this could also be seen = [] but sets are faster
i = 0 # index to start at

# we should be able to go through len(list_of_players)
# before reaching the start player
for x in range(len(list_of_players)): 
    if i in seen:
        print "the game is not valid. "
        break
    seen.add(i)
    i = list_of_players[i]
else: # successful completion, no breaks
    print "The game is valid. "

在我看来,这个问题很适合从图遍历开始,所以请看一下:

https://www.python.org/doc/essays/graphs/

  • 从第一项开始沿着边缘
  • 如果您返回到第一个项目,并且访问了所有节点,tadaaaa:)

相关问题 更多 >