我想要确定两个数字N1和N2是否为相同数字的排列。例如,123和321是相同数字的排列,而234和123则不是。我使用Python解决了这个问题,但我不是专家。
我在Windows 7上使用IDLE Python GUI。规格为Python 2.7.3(默认值,Apr 10 2012,23:31:26)[MSC v.1500 32 bit(Intel)] on win32。
以下是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上,但是我无法解决我的问题。
我认为在Python中你不需要声明任何变量,而是可以直接使用它们。这个假设是否正确?
有什么建议吗?谢谢。
sorted(str(n)) == sorted(str(m))
,这样更容易理解。 - Jon Clements