【发布时间】:2021-08-09 22:13:56
【问题描述】:
我正在尝试编写一个文字拼图游戏,这是我卡住的代码的 sn-p,我觉得我已经尝试了所有方法。
答案是可在拼图中找到的单词列表及其坐标和所在方向。此处提供的答案是用于测试目的的 sn-p。似乎发生的情况是程序会找到一个词并说“这正在工作”,但同时说“它不是一个词”,我不知道如何通过这个。
程序会在每一轮之后打印可用的答案以供测试。
answers=[(2, 12, 'up', 'reduce'), (11, 0, 'left', 'cherimolla'), (7, 12, 'up', 'leopardbane'), (9, 12, 'upleft', 'bionomical')]
guess = []
move = False
players=[]
players.append("Stephan")
while True:
print(answers)
for i in players:
guess=input("Player " + str(i) + "'s name: make a guess:")
guesses=guess.split(",")
for i in range(0,len(answers)-1):
ans = answers[i]
if int(ans[0]) == int(guesses[0]) and int(ans[1])==int(guesses[1]) and guesses[2] in ans[2]:
answers.remove(ans)
print("this is working")
if (int(ans[0]) != int(guesses[0]) and int(ans[1])!=int(guesses[1]) and ans[2]!=guesses[2] and i==len(answers)-1):
print("sorry this is not a word")
【问题讨论】:
-
你为什么提到
range(0,len(answers)-1)? range(0,n) 返回 0 到 n-1。我想你可以使用range(0,len) -
使用
else代替第二条if语句。或者,您可以将第二个if中的所有ands 替换为ors(德摩根定律:a and b的反面是not a or not b,而不是not a and not b) -
另外,在循环遍历列表时从列表中删除是一个非常糟糕的主意。在这种情况下,这无关紧要(因为最多有一个答案应该与猜测相符),但一般来说,在修改列表时,循环遍历它的副本。
-
@ram 我添加了 -1,因为它遇到了 listindex out of bounds 的错误
-
@koorkevani 谢谢我这样做了,它仍然打印出一个词,而不是多次,我只希望它打印一次,这就是我添加 i==len(answers)-1 的原因
标签: python for-loop if-statement while-loop boolean