根据行和列确定字母 - python
Posted
技术标签:
【中文标题】根据行和列确定字母 - python【英文标题】:Determine letter based on row and col - python 【发布时间】:2015-06-25 01:09:02 【问题描述】:所以我很沮丧,因为我对 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
如果遍历他的驱动文件,其中 row 和 col 都等于 20。
我坚持的是为模式创建一个函数:
XOOOOOX
OXOOOXO
OOXOXOO
OOOXOOO
OOXOXOO
OXOOOXO
XOOOOOX
请不要给我答案,而是指出我正确的方向。
到目前为止,我知道当 row==col 时,可以识别左->右对角线的 X。这是我遇到问题的右->左对角线。
非常感谢。
【问题讨论】:
为了做右上角 -> 左下角对角线,你需要知道宽度(或高度,因为它是方形的)。在您的示例中,它是 7。这可能足以让您入门。 @TigerhawkT3:它几乎必须等同于print('\n'.join(''.join(letter(row, col) for col in range(colcount)) for row in range(rowcount)))
(除了它可能会改变迭代以捕获意外或故意欺骗状态的程序......)。
@abarnert 我的猜测是您选择了它,所以您告诉驱动程序rowcount
/colcount
,然后您根据该假设编写代码。至少这是我从“如果运行他的驱动程序文件,其中 row 和 col 都等于 20”得到的。
最后一件事:如果您真的更熟悉 Java,请编写一个 public static char letter(int row, int col)
实现,然后尝试将其移植到 Python。作为一般规则,这是编写代码的一种不好的方式,但是当你被卡住时,它可能是一种解开卡住的方式。 (我经常用漂亮的 Python 编写 Ruby 或 JS 代码,将其移植为糟糕的 Ruby/JS,然后一旦我得到它,将其丢弃并重写为惯用的 Ruby/JS……)
@jedwards:“你不能使用全局变量。提示:参见inspect.getsourcefile
和ast.parse
”。 :)
【参考方案1】:
查看每个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
这里的温柔提示是“+”。
所以,如果一个元素的行和列有第一个指定的关系or
第二个,你在那儿放一个X
。
我希望这是一个适当的帮助。
【讨论】:
很好的解释。但我怀疑row
和col
是基于0,而不是基于1。 (尽管 OP 可能会通过计算出他的代码在每种方式都猜错时会出错的地方来学习一些东西,然后运行它来验证......)
嘿,非常感谢!这是一个很好的答案,我很欣赏这个温柔的提示,哈哈!
我认为在这种情况下,解释与索引无关 - 它可能是 n
、n+1
等。此外,我使用此算法测试了一个函数,通过您在该评论中给出的驱动程序,它的行为符合预期。 :)
@TigerhawkT3:嗯,你必须为基于 0 和基于 1 编写的代码在这里会有所不同。但我想你是对的;对于已经了解基于 0 和基于 1 之间区别的任何人,您的解释将告诉他们以任何一种方式编写它所需要知道的一切。
就是这个想法。 :)以上是关于根据行和列确定字母 - python的主要内容,如果未能解决你的问题,请参考以下文章