2015-10-04 44 views
-1
import math 

EMPTY = '-' 

def is_between(value, min_value, max_value): 
    """ (number, number, number) -> bool 

    Precondition: min_value <= max_value 

    Return True if and only if value is between min_value and max_value, 
    or equal to one or both of them. 

    >>> is_between(1.0, 0.0, 2) 
    True 
    >>> is_between(0, 1, 2) 
    False 
    """ 
    return value >= min_value and value <= max_value 

    # Students are to complete the body of this function, and then put their 
    # solutions for the other required functions below this function. 

def game_board_full(cells): 
    """ (str) -> bool 

    Return True if no EMPTY in cells and else False 

    >>> game_board_full ("xxox") 
    True 
    >>> game_board_full ("xx-o") 
    False 
    """ 

    return "-" not in cells 



def get_board_size (cells): 
    """ (str) -> int 

    Return the square root of the length of the cells 

    >>>get_board_size ("xxox") 
    2 
    >>>get_board_size ("xoxoxoxox") 
    3 
    """ 
    sqrt_cell= len(cells) ** 0.5 

    return int(sqrt_cell) 


def make_empty_board (size): 
    """ (int) -> str 
    Precondition: size>=1 and size<=9 

    Return a string for storing information with the size 
    >>>make_empty_board (2) 
    "----" 
    >>>make_empty_board (3) 
    "---------" 
    """ 

    return "-" *size ** 2 



def get_position (row_index,col_index,size): 
    """ (int,int,int) -> int 

    Precondition:size >=col_index and size >= row_index 

    Return the str_index of the cell with row_index,col_index and size 
    >>>get_position (2,2,4) 
    5 
    >>>get_position (3,4,5) 
    13 
    """ 
    str_index = (row_index - 1) * size + col_index - 1 
    return str_index 


def make_move(symbol,row_index,col_index,game_board): 
    """(str,int,int,str) -> str 

    Return the resultant game board with symbol,row_index,col_index and game_board 
    >>>make_move("o",1,1,"----") 
    "o---" 
    >>>make_move("x"2,3,"---------") 
    "-----x---" 
    """ 
    length=len(game_board) 
    size=len(cells) ** 0.5 
    str_index = (row_index - 1) * size + col_index - 1 
    return "-"*(str_index-1)+symbol+"-"*(length-str_index) 




def extract_line (cells,direction,cells_num): 
    """ (str,str,int) -> str 

    Return the characters of a specified row with cells, direction and cells_num 

    >>>extract_line ("xoxoxoxox","across",2) 
    "oxo" 
    >>>extract_line ("xoxo","up_diagonal","-") 
    "xo" 
    """ 
    num=cells_num 
    s=cells 
    size= get_board_size (cells) 
    if direction=="across": 
     return s[(num-1)* size : num*size] 
    elif direction=="down": 
     return s[num-1:size **2:size] 
    elif direction=="up_diagonal": 
     return s[(size-1)*size:size-2:1-size] 
    elif direction=="down_diagonal": 
     return s[0:size*2:size+1] 

NameError: name 'cells' is not defined名称“”没有定义

我不知道如何定义cells,因为它是一个参数。

回答

0

我发现你在make_move函数中引用了变量单元而没有声明,也许你应该在参数列表中定义它。顺便说一下,你必须提出你所有的追踪,或者我们所有人都很难找出问题所在。

+0

回溯(最近通话最后一个): 文件 “C:\用户\管理员\桌面\新建文件夹\ a1_simple_check.py” 53行,在 结果= tictactoe_functions.make_move( 'X',1, 1,' - ') 文件“C:\ Users \ Administrator \ Desktop \新建文件夹\ tictactoe_functions.py”,第93行,在make_move中 size = len(cells)** 0.5 builtins.NameError:name'cells '未定义 –

+0

您应该在make_move的参数列表中声明cells变量。 – hsfzxjy

+0

你解决了这个问题吗? – hsfzxjy

1

你有

def make_move(symbol,row_index,col_index,game_board): 

下一次NO cells参数仔细阅读错误消息,这样你就知道在哪个行代码你有问题。