2015-10-04 1 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

Traceback (самый последний вызов последнего): Файл "C: \ Users \ Administrator \ Desktop \ 新建 文件 夹 \ 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. – hsfzxjy

+0

Вы решили проблему? – hsfzxjy

1

У вас нет cells параметра в

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

В следующий раз внимательно прочитать сообщение об ошибке, так что вы знаете, в какой строку коды у вас есть проблемы.