我有一个游戏,该游戏经过回合,变量为count1
和count2
作为得分。我正在尝试创建一些逻辑,该逻辑播放while循环直到有人达到9,但也必须领先2分。
我觉得我越来越近了。我很确定第一部分是正确的。我一直在尝试更改布尔值和格式,以查看是否可以使用它。
while (count1 <= 9 and count2 <= 9) and ((count1 - count2 > 2) or (count2 - count1 > 2)):
快乐之路:while
循环不断,直到有人达到9并领先2分。
至于错误,它会一直结束游戏,因为那是else语句,这告诉我我的逻辑仍然有些偏离。
答案 0 :(得分:3)
如果一个人领先2分,而我相信您想要相反的话,您将保持循环运行:
while (count1 <= 9 and count2 <= 9) and ((count1 - count2 > 2) or (count2 - count1 > 2)):
我还没有看到其余的代码,但这应该可以工作:
while (count1 < 9 and count2 < 9) or abs(count1 - count2) < 2:
答案 1 :(得分:1)
让我们一点一点地处理它:
您希望循环继续运行。当某人的得分达到9分以上且得分差为2分以上时,请停止循环。
最容易的翻译是:
# s1 and s2 representing score 1 and 2
while True:
if (s1 >= 9 or s2 >= 9) and abs(s1 - s2) >= 2:
break
# do something
这也意味着,当不满足条件时,我们会继续:
# s1 and s2 representing score 1 and 2
while not ((s1 >= 9 or s2 >= 9) and abs(s1 - s2) >= 2):
# do something
一些基本的布尔算法简化了条件:
# s1 and s2 representing score 1 and 2
while (s1 < 9 and s2 < 9) or abs(s1 - s2) < 2:
# do something
条件也能正确读取的情况:当两个分数均低于9或(至少一个达到9并且分数差小于2时,我们不断循环播放。)