我必须用用户给出的特定单词替换一些列表列表,我多次尝试并且一直出错,然后在修复错误后我有一个代码但代码不会打印。即使我输入打印,我也可以看到代码是如何运行的,但没有任何显示。
以下是列表清单:
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))
答案 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']]