我正在嘗試撰寫一個函式,它將一個目標數字和一個矩陣作為其引數,并將回傳目標數字的“坐標”。如果目標編號不存在,則回傳 (-1, -1)。
假設目標編號只會出現一次。
示例矩陣:
my_matrix = [
[1, 4, 7, 12, 15, 1000],
[2, 5, 19, 31, 32, 1001],
[3, 8, 24, 33, 35, 1002],
[40, 41, 42, 44, 45, 1003],
[99, 100, 103, 106, 128, 1004]
]
示例輸入/輸出:
target_number = 19 輸出 = (1, 2)
首先,我將函式寫入我們放置 col/row 位置的索引:
def find_target(target, matrix):
for i, row in enumerate(matrix):
for j, col in enumerate(row):
if col == target:
return i, j
如果數字不存在,這將輸出“None”,所以我然后嘗試實作 if/else,然后嘗試嘗試/除了輸出(-1,-1)如果數字不存在但是我嘗試實作這似乎覆寫了上述內容,即使數字存在也輸出 (-1, -1) 。
我的嘗試:
def find_target(target, matrix):
for i, row in enumerate(matrix):
for j, col in enumerate(row):
try:
if col == target:
return i, j
else:
raise ValueError
except ValueError:
return -1, -1
def find_target(target, matrix):
for i, row in enumerate(matrix):
for j, col in enumerate(row):
if col == target:
return i, j
else:
return -1, -1
def find_target(target, matrix):
try:
for i, row in enumerate(matrix):
for j, col in enumerate(row):
if col == target:
return i, j
except:
return -1, -1
以上似乎都沒有提供所需的輸出,無論輸入如何,它們都會輸出(-1,-1),或者如果數字不存在,則輸出“無”。我將繼續嘗試理解為什么會這樣,但任何指標都將不勝感激。
另外,請注意我對此很陌生;感謝您的反饋,在來這里詢問之前,我總是會嘗試各種方法/實作等!:)
uj5u.com熱心網友回復:
關于您的失敗嘗試的解釋,按順序:
- 在第一個中,一旦找不到目標值,您就強制提高 ValueError (因此您破壞了 try...except 的目的),因此它將始終回傳-1,-1,除非您的目標值是在位置 (0,0)。
- 第二個是一樣的,沒有嘗試......除了。
- 第三個永遠不會回傳 -1,-1 因為代碼中沒有錯誤,所以永遠不會引發例外。
解決方案要簡單得多:如果沒有回傳任何其他內容,則要回傳 -1,-1,因此在回圈結束后:
def find_target(target, matrix):
for i, row in enumerate(matrix):
for j, col in enumerate(row):
if col == target:
return i, j
return -1,-1
uj5u.com熱心網友回復:
您的這段代碼做正確的作業,但您的縮進產生了問題:
def find_target(target, matrix):
for i, row in enumerate(matrix):
for j, col in enumerate(row):
if col == target:
return i, j
else:
return -1, -1
只需將 else: 塊放在回圈之外。
def find_target(target, matrix):
for i, row in enumerate(matrix):
for j, col in enumerate(row):
if col == target:
return i, j
else:
return -1, -1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529474.html
下一篇:MongoDBif引數中的陳述句
