[英]How to replace a character in a list of lists
我必須用用戶指定的特定單詞替換列表中的某些列表,我嘗試了多次並不斷出現錯誤,然后在修復錯誤后我得到了一個代碼,但是代碼無法打印。 即使我鍵入print只是為了看到代碼的運行方式,也沒有任何顯示。
這是列表列表:
table = [['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*']]
這是我嘗試的代碼:
i = 0
def create_table(secret):
secret = input("Enter the secret Word: ")
secret = secret.upper()
secret = secret.replace('J','I')
return secret
for row in range(5):
for col in range(5):
table = [t.replace(table[row][col], secret[i]) for t in table]
i +=1
print(table)
print(create_table(secret))
您在函數執行中途已經return secret
。 這意味着該函數中的其余代碼將不會執行。 您應該將return secret
移到函數定義的末尾。
您還接受了create_table()
函數的一個參數,然后立即將其覆蓋,您可以擺脫它。
您的代碼幾乎沒有問題。
要注意的一件事是,函數一旦返回某些內容,就會停止進一步執行。*
因此,在函數create_table
,return語句之后的行根本沒有執行。
另請注意,您可以從函數內進行打印,也可以僅返回一些值並從主體進行打印。 您從函數內部進行打印,還將函數作為參數調用以在主體中進行打印。
只需從函數return table
並從主體打印即可。 這只是標准做法,也是正確的做法。 或者甚至不需要這樣做,因為無論如何您都是從函數內部修改全局變量。
編輯:要在函數內部修改變量table
,請在函數中添加行, global table
,然后再嘗試對table
進行任何更改,以使函數知道這是您要修改的全局變量,而不是創建新的全局變量具有相同名稱的局部變量。
*我認為有解決此問題的方法。不過不確定。
table
是一個可變列表,所以只需執行以下操作:
table[row][col] = secret[i]
並刪除return secret
否則您將無法獲取代碼。
一個簡單的例子:
import pprint
table = [['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*']]
def create_table():
secret = 'ABCDEFGHIJKLMNOPQRSTUVWXY'
for row in range(5):
for col in range(5):
table[row][col] = secret[row*5 + col]
pprint.pprint(table)
create_table()
輸出:
[['A', 'B', 'C', 'D', 'E'],
['F', 'G', 'H', 'I', 'J'],
['K', 'L', 'M', 'N', 'O'],
['P', 'Q', 'R', 'S', 'T'],
['U', 'V', 'W', 'X', 'Y']]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.