Python 换位和置换-运行时错误
这是我必须回答的问题: 找到一个字母的换位序列,将序列MARINE(字母编号为0..5)转换为序列AIRMEN。换位用整数对表示。例如,对(0,1)将MARINE转换为AMRINE。换位是从左到右执行的。您应该这样写来定义序列(点应该被数字替换,括号中的每一对指定一个排列,这些排列从左到右依次执行): def序列(): 返回[(…,…),…,(…,…)] 当我运行这个程序时,我似乎遇到了一个运行时错误。我找不到错误在哪里。如果我能得到一些帮助,那将非常有用。谢谢!:) 这是我的代码:Python 换位和置换-运行时错误,python,function,math,permutation,discrete-mathematics,Python,Function,Math,Permutation,Discrete Mathematics,这是我必须回答的问题: 找到一个字母的换位序列,将序列MARINE(字母编号为0..5)转换为序列AIRMEN。换位用整数对表示。例如,对(0,1)将MARINE转换为AMRINE。换位是从左到右执行的。您应该这样写来定义序列(点应该被数字替换,括号中的每一对指定一个排列,这些排列从左到右依次执行): def序列(): 返回[(…,…),…,(…,…)] 当我运行这个程序时,我似乎遇到了一个运行时错误。我找不到错误在哪里。如果我能得到一些帮助,那将非常有用。谢谢!:) 这是我的代码: def s
def sequence(original, target):
permutation = []
chars_original = []
for char in original:
chars_original.append(char)
#print('original: ', chars_original)
chars_target = []
for char in target:
chars_target.append(char)
#print('target: ', chars_target)
for i in range(0, len(target)):
if chars_target[i]== chars_original[i]:
continue
else:
temp_list = []
temp_list.append(i)
j = chars_original.index(chars_target[i])
temp_list.append(j)
temp = chars_original[i]
chars_original[i] = chars_original[j]
chars_original[j] = temp
a = tuple (temp_list)
permutation.append(a)
#print(permutation)
#print(chars_original)
return permutation
sequence('MARINE', 'AIRMEN')
你能试试这个吗
def sequence(original, target):
# convert to list so the string becomes mutable
original = list(original)
target = list(target)
seq = []
for i in range(len(original)):
if original[i] != target[i]:
for j in range(i+1, len(original)):
if original[j] == target[i]:
original[i], original[j] = original[j], original[i] # swap if the same
seq.append((i, j))
return seq
sequence('MARINE', 'AIRMEN')
def序列(y,z):
a=列表(y)
b=列表(z)
d=0
l=[]
while(dca)您可以指定您所面临的问题。您得到的序列看起来正确,这是一个运行时错误,不是逻辑错误,抱歉。我仍然得到一个运行时错误,但这应该是正确的。结果表明,答案不需要整个程序。您只需输入排列。我觉得很愚蠢,现在感谢您的帮助!
def sequence(y,z):
a=list(y)
b=list(z)
d=0
l=[]
while(d<len(y)):
if(a[d]==b[d]):
d=d+1
else:
e=a.index(b[d])
a[e],a[d]=a[d],b[d]
l=l+[(d,e)]
return l
print(sequence("MARINE","AIRMEN"))