如何让 python 按特定顺序打印出所有字母?
How can I let python print out all the letters in specific orders?
所以我想创建 4 个函数:func_slideright()
func_slideleft()
func_up()
和 func_left()
将像这样从网格中查找并打印所有单词。
[["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
所以基本上... func_slideright()
将 return 网格中的每个字母水平从左到右..所以输出应该是这样的。
n
um
twr
prxw
xqsvo
等等...
而 func_slideleft()
将打印出 sliderright 的反面,所以像...
t
ih
bce
wzig
等等....
而 func_up() 将 return 个字母从上到下像
rxptun
aaqrwm
wybsxr
等等...
和 func_left() returns 从左到右的所有字母,如
rawbit
xayczh
等等...
另外 word: str
基本上是我试图找到它是否在网格上的词。
但是,我完全不知道该怎么做。由于某种原因,我的脑海中似乎没有任何代码或程序可以点击,所以有人可以帮忙吗?
**
另外,如果你慷慨地帮助我,请考虑以最简单的方式写作,并请解释一下,以便我可以学习而不是在这里重复提问。谢谢 :))**
到目前为止,这是我的代码。任何帮助将不胜感激...
grid = [["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
def func_left(word, grid):
word = list(word)
for x in grid:
if grid.index(word[x]) != 1:
return word
print(func_left(word='raw', grid=[["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]))
def func_slideleft(word, grid):
word = list(word)
** I have no idea how to find this or how to find sliderright
def func_sliderright(word, grid):
word = list(word)
** I have no idea how to find this or how to find sliderright
def func_up(word):
word = list(word)
for x in grid:
return x[1]
假设您实际上想要矩阵中的所有对角线,这里有 4 个函数将给出通过向右、向下、右下和右上形成的字符串:
def diagsDownRight(M):
diags,pad = [],[]
while any(M):
edge = [*next(zip(*reversed(M))),*M[0][1:]] # outer edge
M = [r[1:] for r in M[1:]] # remaining matrix
diags.append(pad+edge+pad) # diagonal columns
pad.append("") # next padding
return [*map("".join,zip(*diags))] # join columns
def diagsUpRight(M):
diags,pad = [],[]
while any(M):
edge = [*next(zip(*M)), *M[-1][1:]]
M = [r[1:] for r in M[:-1]]
diags.append(pad+edge+pad)
pad.append("")
return [*map("".join,zip(*diags))]
def rows(M):
return ["".join(row) for row in M]
def cols(M):
return ["".join(col) for col in zip(*M)]
输出:
mystery = [["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
print(diagsDownRight(mystery))
['n', 'um', 'twr', 'prxw', 'xqsvo', 'rabbit',
'ayeot', 'wzig', 'bce', 'ih', 't']
print(diagsUpRight(mystery))
['r', 'xa', 'paw', 'tqyb', 'urbzi', 'nwsect',
'mxbih', 'rvoe', 'wig', 'ot', 't']
print(rows(mystery))
['rawbit', 'xayzch', 'pqbeie', 'trsbog', 'uwxvit', 'nmrwot']
print(cols(mystery))
['rxptun', 'aaqrwm', 'wybsxr', 'bzebvw', 'icioio', 'thegtt']
rows() 和 cols() 函数很简单,但对角线有点棘手。
对于对角线,矩阵被分解成 L 形切片,每边用空字符填充。然后将这些切片组合起来形成对角线字符串
例如:
Slice #1: (_ are empty padding characters)
r a w b i t --> r a w b i t --> n u t p x r a w b i t
x a y z c h --> x . . . . .
p q b e i e --> p . . . . .
t r s b o g --> t . . . . .
u w x v i t --> u . . . . .
n m r w o t --> n . . . . .
Slice #2
. . . . . .
. a y z c h --> a y z c h --> _ m w r q a y z c h _
. q b e i e --> q . . . .
. r s b o g --> r . . . .
. w x v i t --> w . . . .
. m r w o t --> m . . . .
Slice #3:
. . . . . .
. . . . . .
. . b e i e --> b e i e --> _ _ r x s b e i e _ _
. . s b o g --> s . . .
. . x v i t --> x . . .
. . r w o t --> r . . .
Slice # 4 --> _ _ _ w v b o g _ _ _
Slice # 5 --> _ _ _ _ o i t _ _ _ _
Slice # 6 --> _ _ _ _ _ t _ _ _ _ _
然后,将每个切片的元素从 1 连接到 6 得到每个对角线的字符串:
1 2 3 4 5 6
n _ _ _ _ _
u m _ _ _ _
t w r _ _ _
p r x w _ _
x q s v o _
r a b b i t
a y e o t _
w z i g _ _
b c e _ _ _
i h _ _ _ _
t _ _ _ _ _
所以我想创建 4 个函数:func_slideright()
func_slideleft()
func_up()
和 func_left()
将像这样从网格中查找并打印所有单词。
[["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
所以基本上... func_slideright()
将 return 网格中的每个字母水平从左到右..所以输出应该是这样的。
n
um
twr
prxw
xqsvo
等等...
而 func_slideleft()
将打印出 sliderright 的反面,所以像...
t
ih
bce
wzig
等等.... 而 func_up() 将 return 个字母从上到下像
rxptun
aaqrwm
wybsxr
等等... 和 func_left() returns 从左到右的所有字母,如
rawbit
xayczh
等等...
另外 word: str
基本上是我试图找到它是否在网格上的词。
但是,我完全不知道该怎么做。由于某种原因,我的脑海中似乎没有任何代码或程序可以点击,所以有人可以帮忙吗? ** 另外,如果你慷慨地帮助我,请考虑以最简单的方式写作,并请解释一下,以便我可以学习而不是在这里重复提问。谢谢 :))**
到目前为止,这是我的代码。任何帮助将不胜感激...
grid = [["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
def func_left(word, grid):
word = list(word)
for x in grid:
if grid.index(word[x]) != 1:
return word
print(func_left(word='raw', grid=[["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]))
def func_slideleft(word, grid):
word = list(word)
** I have no idea how to find this or how to find sliderright
def func_sliderright(word, grid):
word = list(word)
** I have no idea how to find this or how to find sliderright
def func_up(word):
word = list(word)
for x in grid:
return x[1]
假设您实际上想要矩阵中的所有对角线,这里有 4 个函数将给出通过向右、向下、右下和右上形成的字符串:
def diagsDownRight(M):
diags,pad = [],[]
while any(M):
edge = [*next(zip(*reversed(M))),*M[0][1:]] # outer edge
M = [r[1:] for r in M[1:]] # remaining matrix
diags.append(pad+edge+pad) # diagonal columns
pad.append("") # next padding
return [*map("".join,zip(*diags))] # join columns
def diagsUpRight(M):
diags,pad = [],[]
while any(M):
edge = [*next(zip(*M)), *M[-1][1:]]
M = [r[1:] for r in M[:-1]]
diags.append(pad+edge+pad)
pad.append("")
return [*map("".join,zip(*diags))]
def rows(M):
return ["".join(row) for row in M]
def cols(M):
return ["".join(col) for col in zip(*M)]
输出:
mystery = [["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
print(diagsDownRight(mystery))
['n', 'um', 'twr', 'prxw', 'xqsvo', 'rabbit',
'ayeot', 'wzig', 'bce', 'ih', 't']
print(diagsUpRight(mystery))
['r', 'xa', 'paw', 'tqyb', 'urbzi', 'nwsect',
'mxbih', 'rvoe', 'wig', 'ot', 't']
print(rows(mystery))
['rawbit', 'xayzch', 'pqbeie', 'trsbog', 'uwxvit', 'nmrwot']
print(cols(mystery))
['rxptun', 'aaqrwm', 'wybsxr', 'bzebvw', 'icioio', 'thegtt']
rows() 和 cols() 函数很简单,但对角线有点棘手。
对于对角线,矩阵被分解成 L 形切片,每边用空字符填充。然后将这些切片组合起来形成对角线字符串
例如:
Slice #1: (_ are empty padding characters)
r a w b i t --> r a w b i t --> n u t p x r a w b i t
x a y z c h --> x . . . . .
p q b e i e --> p . . . . .
t r s b o g --> t . . . . .
u w x v i t --> u . . . . .
n m r w o t --> n . . . . .
Slice #2
. . . . . .
. a y z c h --> a y z c h --> _ m w r q a y z c h _
. q b e i e --> q . . . .
. r s b o g --> r . . . .
. w x v i t --> w . . . .
. m r w o t --> m . . . .
Slice #3:
. . . . . .
. . . . . .
. . b e i e --> b e i e --> _ _ r x s b e i e _ _
. . s b o g --> s . . .
. . x v i t --> x . . .
. . r w o t --> r . . .
Slice # 4 --> _ _ _ w v b o g _ _ _
Slice # 5 --> _ _ _ _ o i t _ _ _ _
Slice # 6 --> _ _ _ _ _ t _ _ _ _ _
然后,将每个切片的元素从 1 连接到 6 得到每个对角线的字符串:
1 2 3 4 5 6
n _ _ _ _ _
u m _ _ _ _
t w r _ _ _
p r x w _ _
x q s v o _
r a b b i t
a y e o t _
w z i g _ _
b c e _ _ _
i h _ _ _ _
t _ _ _ _ _