#python #cyclomatic-complexity
#python #цикломатическая сложность
Вопрос:
Я работаю над созданием игры в крестики-нолики, и у меня более сложный код, чем может обработать мой оператор ввода.
Это для проекта в моем классе, и я провел некоторое исследование. для меня там ничего не имеет смысла, поэтому я пришел сюда. Я пытался сделать это менее сложным, но ничто не может обойти мою голову, чтобы сделать это. Приведенный ниже код — это лишь небольшая часть результатов.
while while_statement == 3:
X_variables = input('where do you place your X player1. {use (X , Y)}. ')
if X_variables == '(1 , 1)':
game = [[1 , 0 , 0],
[0 , 0 , 0],
[0 , 0 , 0]]
print('|' , 'X' , '|' , ' ' , '|' , ' ' , '|')
print('-------------')
print('|' , ' ' , '|' , ' ' , '|' , ' ' , '|')
print('-------------')
print('|' , ' ' , '|' , ' ' , '|' , ' ' , '|')
elif X_variables == '(1 , 2)':
game = [[0 , 0 , 0],
[1 , 0 , 0],
[0 , 0 , 0]]
print('|' , ' ' , '|' , ' ' , '|' , ' ' , '|')
print('-------------')
print('|' , 'X' , '|' , ' ' , '|' , ' ' , '|')
print('-------------')
print('|' , ' ' , '|' , ' ' , '|' , ' ' , '|')
Я ожидаю, что этот код продолжит работу с игрой, но фактическими результатами будет ошибка в инструкции ввода X_variables.
Комментарии:
1. цикломатическая сложность не связана с входной переменной
2. Я получаю это из входной переменной. вот в чем проблема. больше ничего не происходит, и поэтому, если бы я мог увеличить его, я мог бы продолжить работу с остальными результатами.
3. Если вы хотите очистить код. Создайте класс для представления состояния игры (здесь переменная game ) и определите
__str__
для этого класса, который возвращает строку, представляющую вид игры для печати4. цикломатическая сложность: это количественная мера количества линейно независимых путей в исходном коде программы. Можете ли вы объяснить, что именно вы хотите здесь увеличить?
5. проверьте ответ
Ответ №1:
Ваш код может быть очищен до следующего для гибкости с точки зрения ввода. Код предполагает, что входные данные являются действительными, возможно, вы захотите обработать исключения позже
class Board:
def __init__(self,count):
self.count = count
self.game = [[0 for _ in range(count)] for _ in range(count)]
def __repr__(self):
line = "n" "- "*self.count "n"
return line.join(["|".join([ 'X' if y == 1 else ' ' for y in x ]) for x in self.game])
def place(self,x,y):
self.game[x][y] = 1
.
.
.
board = Board(5)
.
.
.
while while_statement == 3:
row,col = map(int,tuple(input("Input here:(format row,col)").split(',')))
board.place(row,col)
print(board)
Комментарии:
1. что именно происходит. Я не вижу, что я пробовал. Я немного запутался в том, что такое class board.
2. Вы не можете скопировать вставить ее как таковую. Доска представляет игру, последние 4 строки делают то, что делает ваш цикл while Доска — это доска для крестиков-ноликов. Дело в том, что вам не нужно иметь оператор if для каждого индекса
3. вы можете создать экземпляр Board , скажем,
board = Board(5)
и попробоватьboard.place(1,2)
и т.д. И попробовать распечатать board4. хорошо, спасибо. Как я могу сказать, что на это был дан ответ?? Я немного новичок в этом.
5. вы можете принять мой ответ как правильный, нажав на галочку рядом с ответом слева. Спасибо