Python 3.x 将字母对转换为笛卡尔坐标或(';A';,';B';)到(1,2)

Python 3.x 将字母对转换为笛卡尔坐标或(';A';,';B';)到(1,2),python-3.x,string-formatting,Python 3.x,String Formatting,我正在写我的第一个程序。我一直在使用python3来实现这一点。我遇到了一个我认为很基本的问题,我在任何地方都找不到讨论过的答案,或者可能我太笨了,看不到它。谢谢你对我缺乏经验的耐心 组合('gimp',2)返回 我希望这些是笛卡尔坐标,所以我做了这个 (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,x) = range(17) 希望字母之间能用数字交换,但字母周围的讨厌(')阻碍了这一点 我怎样才能使列表更像 [(g,i),(g,m)...] 我尝试过使用replace函

我正在写我的第一个程序。我一直在使用python3来实现这一点。我遇到了一个我认为很基本的问题,我在任何地方都找不到讨论过的答案,或者可能我太笨了,看不到它。谢谢你对我缺乏经验的耐心

组合('gimp',2)返回

我希望这些是笛卡尔坐标,所以我做了这个

(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,x) = range(17)
希望字母之间能用数字交换,但字母周围的讨厌(')阻碍了这一点

我怎样才能使列表更像

[(g,i),(g,m)...]
我尝试过使用replace函数,但运气不好

combo.replace("'","")
或者,若有更直接的方法将字母对组合列表转换为坐标,我很想知道


提前感谢您的帮助。

从另一个Python新手那里,您可以制作一个字典,将字母作为键,将您选择的数字作为每个字母的值,并为每个字母提取一个数字

#1 make a dict
prefValues = {'g' : 1, 'i' : 2, 'm' : 3, 'p' : 4}

#2 make a list 
word = []
for char in 'gimp':
    #if the letter is in the dict
    if char in prefValues:
        #append in the list the corresponding value
        word.append(prefValues[char])   

现在继续生成笛卡尔坐标的元组。如果您在制作列表中的配对时遇到困难,请查看此答案

谢谢stef和apalala的帮助。我无法实现您的解决方案,但它确实帮助我设想了一个我能够实现的不雅观的解决方案。我想在这里发布我的解决方案,以防像我这样缺乏编码能力的人发现它有用

我所做的是检查每个可能的组合的组合列表,如果存在组合,我会用相应的数字扩展一个新的坐标列表。我认为上述解决方案将以更有效的方式产生这种效果。我的目的只包括120种可能的组合,所以虽然繁琐,但这种方法是可行的

 combo = (list (combinations (abcdefghijlmnop, 2)) 

 cords = []
 if ('a','b') in combo:
      cords.append ((0,1))
 else:quit

然后我为(a,c)(a,d)等重复了最后三行。

您可能想尝试使用字符的顺序值。如果使用字符序数值与“a”序数值的偏移量,则应获得适当的坐标

尝试以下方法:

from itertools import combinations

word = "gimp"

coords = [(ord(x) - ord('a'), ord(y) - ord('a')) for x, y in combinations(word.lower(), 2)]
这将
coords
设置为:

[(6, 8), (6, 12), (6, 15), (8, 12), (8, 15), (12, 15)]
注意:如果在word中使用非ASCII字符,这将无法正常工作。

字符串(用单引号或双引号括起来)与标识符不同(至少在大多数语言中是如此)。您不知道程序应该如何运行,这将是帮助回答问题所必需的。如果您只关心输出的外观,那就很简单了。对于Python,“word”和“word”都是字符串,很抱歉弄错了。
[(6, 8), (6, 12), (6, 15), (8, 12), (8, 15), (12, 15)]