如何替换列表列表中的字符

时间:2015-10-01 16:21:59

标签: python python-3.x

我必须用用户给出的特定单词替换一些列表列表,我多次尝试并且一直出错,然后在修复错误后我有一个代码但代码不会打印。即使我输入打印,我也可以看到代码是如何运行的,但没有任何显示。

以下是列表清单:

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))

3 个答案:

答案 0 :(得分:2)

你的功能有一半return secret。这意味着该函数中的其余代码将不会执行。您应该将return secret移动到函数定义的末尾。

你也接受了create_table()函数的一个参数,然后你可以立即覆盖它,你可以摆脱它。

答案 1 :(得分:0)

您的代码几乎没有问题。

有一点需要注意的是,一旦函数返回某个函数,函数就会停止进一步执行。*

因此,在函数create_table中,返回语句之后的行根本没有被执行。

另请注意,您可以在功能中打印,也可以只返回一些值并从主体打印。您从函数内部进行打印,并将函数作为参数调用以在主体中打印。

从你的功能中做return table并从主体打印。这只是标准做法和正确的做法。 或者您甚至不需要这样做,因为您无论如何都要从函数内部修改全局变量。

编辑:要从函数内部修改变量table,请添加该行, 在您尝试在global table中进行任何更改之前,在您的函数中table,以便您的函数知道它是您尝试修改的全局变量,而不是创建一个新的局部变量同名。

*我认为有办法解决这个问题。但不确定。

答案 2 :(得分:0)

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']]