基于行和列确定字母-python
所以我很沮丧,因为我对Java相当精通,所以我无法理解一些看似微不足道的事情,但无论如何,我的Python入门教授给我们分配了一个实验室,我们必须在那里创建一个基于行和列位置的字母模式。没有循环或迭代,只有条件语句 例如,此功能:基于行和列确定字母-python,python,string,letter,Python,String,Letter,所以我很沮丧,因为我对Java相当精通,所以我无法理解一些看似微不足道的事情,但无论如何,我的Python入门教授给我们分配了一个实验室,我们必须在那里创建一个基于行和列位置的字母模式。没有循环或迭代,只有条件语句 例如,此功能: def letter(row, col): if row>col: return 'T' else: return 'W' 将产生: WWWWWWWWWWWWWWWWWWWW TWWWWWWWWWWWWWWWWWWW TTW
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
请不要用勺子给我答案,而是给我指出正确的方向
到目前为止,我知道当row==col时,可以识别左->右对角线的X。我遇到的问题是右->左对角线
非常感谢。查看每个
X
位置的行和列之间的关系。然后,将这个问题分成两部分:一部分是从左上角到右下角的直线,另一部分是从左下角到右上角的直线
让我们看一下从左上到右下的X
s:
row: column:
1 1
2 2
3 3
4 4
5 5
6 6
7 7
我认为您可以基于此确定行和列之间的关系
那么另一行呢,从左下到右上:
row: column:
1 7
2 6
3 5
4 4
5 3
6 2
7 1
你温柔的暗示是“+”
因此,如果元素的行和列具有第一个指定的关系或第二个指定的关系,则在其中放置一个X
我希望这是一个适当的帮助。为了做右上->左下对角线,你需要知道宽度(或高度,因为它是正方形)。在你的例子中,是7。这可能足以让您开始。@TigerhawkT3:它几乎相当于print('\n'.join('.join(字母(row,col)表示范围内的列(colcount))表示范围内的行(rowcount))
(除了它可能会洗牌迭代以捕获意外或故意使用状态作弊的程序……)@abarnert我猜是你选择了它,所以你告诉驱动程序rowcount
/colcount
,然后你用这个假设编写代码。至少这是我从“if run through his driver file with row and col都等于20”中得到的信息。最后一件事:如果您真的对Java更熟悉,请编写一个公共静态字符字母(int row,int col)
实现,然后尝试将其移植到Python。一般来说,这是一种编写代码的糟糕方式,但当您陷入困境时,这可能是一种摆脱困境的方式。(我经常用漂亮的Python编写Ruby或JS代码,将其移植为不好的Ruby/JS,然后一旦得到它,扔掉它并将其重写为惯用的Ruby/JS…@jedwards:“您不能使用全局变量。提示:请参阅inspect.getsourcefile
和ast.parse
”)很好的解释。但是我怀疑行
和列
是基于0的,而不是基于1的。(虽然OP可能会通过计算出如果他每种方式都猜错了,他的代码会做错什么来学到一些东西,然后运行它来验证…)嘿,非常感谢!这是一个很好的回答,我很欣赏这个温柔的暗示,哈哈!我认为在这种情况下,解释与索引无关-它可能是n
,n+1
,等等。此外,我使用此算法测试了一个函数,通过您在该注释中给出的驱动程序运行它,它的行为与预期一致。:)@TigerhawkT3:好吧,你必须为基于0和基于1编写的代码在这里会有所不同。但我想你是对的;对于任何已经了解基于0和基于1的区别的人,您的解释将告诉他们以任何一种方式编写它所需要知道的一切。这就是想法。:)