python - Python字典宾果游戏。需要帮助检查垂直胜利
问题描述
我正在写一个宾果游戏作为课堂作业。到目前为止,我对此感到非常自豪,但它并没有取得一些胜利。
下面是生成卡片的代码:
def generate_card():
card = {
"B": [],
"I": [],
"N": [],
"G": [],
"O": [],
}
min = 1
max = 15
for letter in card:
card[letter] = random.sample(range(min, max), 5)
min += 15
max += 15
if letter == "N":
card[letter][2] = "X" # free space!
return card
这是检查胜利的方法:
def check_win(card):
win = False
if card["B"][0] == "X" and card["I"][1] == "X" and card["N"][2] == "X" and card["G"][3] == "X" and card["O"][4] == "X":
win = True
elif card["O"][0] == "X" and card["G"][1] == "X" and card["N"][2] == "X" and card["I"][3] == "X" and card["B"][4] == "X":
win = True
elif card["B"][0] == "X" and card["O"][4] == "X" and card["B"][4] == "X" and card["O"][0] == "X":
win = True
for letter in card:
if(len(set(card[letter]))==1):
win = True
for letter in card:
for number in letter:
i = 0
if card[letter][i] == "X":
i += 1
if i == 5:
win == True
break
return win
它首先检查对角线获胜,然后是四角获胜,然后检查水平获胜,最后是垂直获胜。我刚刚测试过,看起来检查垂直获胜的代码不起作用。我不知道为什么,但我知道很难绞尽脑汁为它编写代码。任何帮助表示赞赏!
另外,如果您发现任何其他问题,请告诉我!我发现这个超级难测试。
解决方案
Maybe this:
for i in range(5):
cnt = 0
for letter in card:
if letter[i] == "X":
cnt += 1
if cnt == 5:
win == True
break
推荐阅读
- r - 使用类合并函数替换行中的 NA
- javascript - Cypress 测试,一个测试结束,第二个开始
- javascript - 反应:从同一个文件调用异步方法
- django - 即使在提供正确的凭据后,Django 管理页面也会重定向到相同的登录页面
- r - 如何在 Rmarkdown knit-to-pdf 文档中的图表周围环绕文本?
- python - Pycharm 上未安装 Autopy 模块显示错误
- jhipster - 多租户在我的 JHIpster 应用程序中不起作用
- javascript - 运行脚本 onclick
- python - 我如何在dash bootstrap中对齐jumbotron中的徽标标题和段落
- html - 根据 div 内的内容调整图像大小