gpt4 book ai didi

python - Python 中的全局名称

转载 作者:太空狗 更新时间:2023-10-29 21:53:17 25 4
gpt4 key购买 nike

我想知道两个数字 N1N2 是否是相同数字的排列。例如 123321 是相同数字的排列,而 234123 不是。我已经使用 Python 解决了我不是专家的问题。我在 Windows 7 上使用 IDLE Python GUI。规范是 Win32 上的 Python 2.7.3(默认,2012 年 4 月 10 日,23:31:26)[MSC v.1500 32 位(英特尔)]

Python代码如下所示,

def k(n, m):
s1 = n
s2 = m
k = 0
fl = 0
while k < 10 :
arr1[k] = 0
arr2[k] = 0
k = k + 1
while s1 > 0 :
t = s1 % 10
arr1[t] = 1
t = s2 % 10
arr2[t] = 1
s1 = s1 / 10
s2 = s2 / 10
k = 0
while k < 10 :
if arr1[k] != arr2[k]:
fl = 1
k = k + 1
return fl

我将文件保存为 k.py 并使用以下命令导入 import k。但是,当我尝试将代码执行为 k.k(123, 321) 时,出现以下错误。

Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
k.k(123,321)
File "k.py", line 7, in k
global arr2
NameError: global name 'arr1' is not defined

我尝试如下声明数组,

arr1 = []
arr2 = []

我也试过了,

global arr1 = []
global arr2 = []

global arr1
global arr2

但我仍然遇到同样的错误。我的代码有什么问题?

我已经在 SO 中检查了以下答案,但我无法解决我的问题。

Help Defining Global Names

Use of "global" keyword in Python

我认为在 Python 中您不必声明任何变量,您可以简单地使用它们。我这个假设错了吗?

有什么建议吗?谢谢。

最佳答案

这里不需要对全局值做任何事情。一切都应该包含在函数中。

问题很简单,您在尝试附加到它们之前没有定义 arr1arr2。您需要在该函数中定义它们,以及s1s2kfl.

编辑 我应该补充一点,您的代码非常不符合 Python 风格。所有这些带有递增计数器的 while 循环都应该替换为 for 循环:for k in range(10) 等。但是第一个循环甚至不是必需的 - 你应该有 arr1 = [0 ] * 10arr2 相同。

关于python - Python 中的全局名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com