首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >某些参数不能在函数中指定吗?

某些参数不能在函数中指定吗?
EN

Stack Overflow用户
提问于 2017-04-17 20:19:07
回答 2查看 91关注 0票数 0

在我的player_player函数中,我想调用check_win函数,这样我就可以在这个连接四的游戏中宣布胜利者。我认为,我设置代码的方式只有在输入某个参数时才有效。我想知道是否可以只在代码中输入变量令牌的值。(对不起,如果这是个多余的问题,我是python的初学者)

代码语言:javascript
复制
def check_win(token, i, j):
    if i-3 in range(0, 6) and j+3 in range(0,5):
        if board[i][j] == token and board[i-1][j+1] == token and board[i-2][j+2] == token and board[i-3][j+3] == token:
            return True
    if i-3 in range(0, 6) and j-3 in range(0,5):
        if board[i][j] == token and board[i-1][j-1] == token and board[i-2][j-2] == token and board[i-3][j-3] == token:
            return True
    if j+3 in range(0, 5):
        if board[i][j] == token and board[i][j+1] == token and board[i][j+2] == token and board[i][j+3] == token:
            return True
    if i-3 in range(0, 6):
        if board[i][j] == token and board[i-1][j] == token and board[i-2][j] == token and board[i-3][j] == token:
            return True
    else:
        return False
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-17 20:40:04

使用三个参数定义函数check_win,但使用一个参数调用它。正如注释中已经提到的那样,我猜想您要寻找的是使用i和j在for循环中而不是作为参数的东西。也许是这样的:

代码语言:javascript
复制
    def check_win(token):
        for i in range(0, 6):
            for j in range(0, 6):
                if i-3 in range(0, 6) and j+3 in range(0,6):
                    if board[i][j] == token and board[i-1][j+1] == token and board[i-2][j+2] == token and board[i-3][j+3] == token:
                        return True
                if i-3 in range(0, 6) and j-3 in range(0,6):
                    if board[i][j] == token and board[i-1][j-1] == token and board[i-2][j-2] == token and board[i-3][j-3] == token:
                        return True
                if j+3 in range(0, 6):
                    if board[i][j] == token and board[i][j+1] == token and board[i][j+2] == token and board[i][j+3] == token:
                        return True
                if i-3 in range(0, 6):
                    if board[i][j] == token and board[i-1][j] == token and board[i-2][j] == token and board[i-3][j] == token:
                        return True
        else:
            return False
票数 1
EN

Stack Overflow用户

发布于 2017-04-17 21:08:21

这是我的check_win版本

代码语言:javascript
复制
def check_win(token):
    token = [token]*4
    l1 = lambda i, j:[ board[i-p][j+p] for p in range(4)]
    l2 = lambda i, j:[ board[i-p][j-p] for p in range(4)]
    for i in range(5,-1,-1):
        c = 0
        for k in range(4):
            if board[i][k:k+4] == token:
                return True
        if i > 2:
            for k in range(6):
                if [sub[k] for sub in board[i-3:i+1]] == token:
                    return True
            for k in range(4):
                if l1(i,k) == token:
                    return True
                if l2(i,k+3) == token:
                    return True
    return False

样本板:

代码语言:javascript
复制
board = [['.', '.', '☼', '.', '.', '.', '.'],
         ['.', '○', '☼', '○', '○', '.', '.'],
         ['.', '○', '☼', '○', '○', '.', '.'],
         ['○', '○', '○', '○', '☼', '.', '.'],
         ['○', '☼', '○', '☼', '○', '○', '☼'],
         ['○', '☼', '○', '☼', '○', '☼', '☼']]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43458972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档