簡體   English   中英

如何替換列表中的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM