所以我寫了這段代碼
def diagsDownRight(M):
n = len(M)
m = [[''] * (n - i - 1) row [''] * i for i, row in enumerate(M)]
return ([''.join(col) for col in zip(*m)]), [''.join(col[::-1]) for col in zip(*m)]
def diagsUpRight(M):
n = len(M)
m = [['']*i row ['']*(n-i-1) for i, row in enumerate(M)]
return [''.join(col) for col in zip(*m)], [''.join(col[::-1]) for col in zip(*m)]
def rows(M):
return ["".join(row) for row in M], ["".join(reversed(row)) for row in M]
def cols(M):
return ["".join(col) for col in zip(*M)], [''.join(col[::-1]) for col in zip(*M)]
def contains_word(grid: list[list[str]], w: str):
if w in diagsUpRight(grid):
return w
if w in diagsDownRight(grid):
return w
if w in rows(grid):
return w
if w in cols(grid):
return w
print(contains_word(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"]]
, w='raw'))
對于這段代碼,我想讓 contains_word 回傳單詞 w,如果它在行 (M)、cols(M)、diagsDownRight(M)、diagsUpRight(grid) 中找到,但是當我輸入如上所示的代碼時,輸出不顯示。我在這里做錯了什么?
編輯我嘗試這樣做,但輸出仍然回傳 None
def contains_word(grid: list[list[str]], w: str):
for col in diagsUpRight(grid):
if w in col:
return w
for col in diagsDownRight(grid):
if w in col:
return w
for row in rows(grid):
if w in row:
return w
for col in cols(grid):
if w in col:
return w
print(contains_word(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"]]
, w='raw'))
uj5u.com熱心網友回復:
錯誤:-
- 在您的代碼中,每個都
function回傳tuples2 個串列。 - 您在第二個代碼中的串列中進行了迭代,但回傳的字串是
'rawbit'這樣的,因此您需要迭代'rawbit'以獲取'raw'.
代碼:-
def diagsDownRight(M):
n = len(M)
m = [[''] * (n - i - 1) row [''] * i for i, row in enumerate(M)]
return [''.join(col) for col in zip(*m)] [''.join(col[::-1]) for col in zip(*m)]
def diagsUpRight(M):
n = len(M)
m = [['']*i row ['']*(n-i-1) for i, row in enumerate(M)]
return [''.join(col) for col in zip(*m)] [''.join(col[::-1]) for col in zip(*m)]
def rows(M):
return ["".join(row) for row in M] ["".join(reversed(row)) for row in M]
def cols(M):
return ["".join(col) for col in zip(*M)] [''.join(col[::-1]) for col in zip(*M)]
def contains_word(grid: list[list[str]], w: str):
for words in diagsUpRight(grid):
if w in words:
return w
for words in diagsDownRight(grid):
if w in words:
return w
for words in rows(grid):
if w in words:
return w
for words in cols(grid):
if w in words:
return w
print(contains_word(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"]]
, w='raw'))
uj5u.com熱心網友回復:
它回傳None然后你有一個串列串列,所以你需要在 contains_word 函式中迭代網格,目前你瀏覽了一個串列串列,這個串列不解決你的 if in 條件
uj5u.com熱心網友回復:
您的原始rows(M)函式回傳一個 tuple (['rawbit', 'xayzch', 'pqbeie', 'trsbog', 'uwxvit', 'nmrwot'], ['tibwar', 'hczyax', 'eiebqp ',' gobsrt ',' tivxwu ',' towrmn '])。要滿足條件if w in rows(grid):,必須w匹配元組的串列之一,例如 list ['rawbit', 'xayzch', 'pqbeie', 'trsbog', 'uwxvit ',' nmrwot ']。但是由于您正在尋找字串,raw因此永遠不會滿足此條件。
特別是,如果你rows(M)以這種方式改變函式,結果是raw
def rows(M):
return ' '.join(''.join(l) for l in M) ' ' ' '.join(''.join(reversed(l)) for l in M) # rawbit xayzch pqbeie trsbog uwxvit nmrwot tibwar hczyax eiebqp gobsrt tivxwu towrmn
contains_word 回傳:
raw
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/351692.html
