Поэтому я очень расстроен, что не могу понять что-то такое, казалось бы, тривиальное, поскольку я довольно хорошо разбираюсь в Java, но в любом случае мой профессор для введения в Python назначил нам лабораторию, где мы должны создать шаблон с буквами на основе строки и положение столбца. Никаких циклов или итераций, только условные операторы.
Например, эта функция:
def letter(row, col):
if row>col:
return 'T'
else:
return 'W'
даст:
WWWWWWWWWWWWWWWWWWWW
TWWWWWWWWWWWWWWWWWWW
TTWWWWWWWWWWWWWWWWWW
TTTWWWWWWWWWWWWWWWWW
TTTTWWWWWWWWWWWWWWWW
TTTTTWWWWWWWWWWWWWWW
TTTTTTWWWWWWWWWWWWWW
TTTTTTTWWWWWWWWWWWWW
TTTTTTTTWWWWWWWWWWWW
TTTTTTTTTWWWWWWWWWWW
TTTTTTTTTTWWWWWWWWWW
TTTTTTTTTTTWWWWWWWWW
TTTTTTTTTTTTWWWWWWWW
TTTTTTTTTTTTTWWWWWWW
TTTTTTTTTTTTTTWWWWWW
TTTTTTTTTTTTTTTWWWWW
TTTTTTTTTTTTTTTTWWWW
TTTTTTTTTTTTTTTTTWWW
TTTTTTTTTTTTTTTTTTWW
TTTTTTTTTTTTTTTTTTTW
если запустить его файл драйвера со строкой и столбцом, равными 20.
Тот, с которым я застрял, создает функцию для шаблона:
XOOOOOX
OXOOOXO
OOXOXOO
OOOXOOO
OOXOXOO
OXOOOXO
XOOOOOX
Пожалуйста, НЕ кормите меня ответом с ложки, а скорее укажите мне правильное направление.
Пока я знаю, что X для левой-> правой диагонали можно определить, когда row==col. У меня проблемы с диагональю вправо->влево.
Большое спасибо.
print('\n'.join(''.join(letter(row, col) for col in range(colcount)) for row in range(rowcount)))
(за исключением, возможно, перетасовки итераций, чтобы поймать программы, которые случайно или намеренно мошенничают с состоянием…). - person abarnert   schedule 18.04.2015if row==col or row+col==6 then return 'X'
. Я не особенно доволен этим, потому что я не хочу полагаться на использование константы. Но общая формула: строка+столбец=n+1. - person Sam Nayerman   schedule 18.04.2015letter
мог его найти, либоletter
отслеживает то, что он видел до сих пор, и делает предположение о порядке итерации. Так что, по-видимому, одно из этих двух не считается мошенничеством. - person abarnert   schedule 18.04.2015rowcount
/colcount
и пишете свой код с этим предположением. По крайней мере, это то, что я получил, если запустить его файл драйвера, где строка и столбец равны 20. - person jedwards   schedule 18.04.2015public static char letter(int row, int col)
, а затем попробуйте перенести ее на Python. Как правило, это плохой способ написания кода, но когда вы застряли, это может быть способом выйти из затруднительного положения. (Я часто писал код Ruby или JS, написав его на хорошем Python, портировав его как плохой Ruby/JS, а затем, как только я его получил, выбросил и переписал как идиоматический Ruby/JS…) - person abarnert   schedule 18.04.2015inspect.getsourcefile
иast.parse
. :) - person abarnert   schedule 18.04.2015