【问题标题】:Converting a string of numbers to correpsonding letters将一串数字转换为对应的字母
【发布时间】:2015-05-31 12:25:57
【问题描述】:

对于我正在进行的项目,我需要能够将一串数字转换为字母以形成正确的单词。例如,我需要将 2626 转换为 BFBF,但我如何确保它不会变成 ZZ,反之亦然。

我非常困惑,因为我想不出任何方法来实现这一点,我需要这个程序将数字转换成它们的原始字母。

任何帮助将不胜感激,因为我真的不知道该怎么做......

谢谢!

编辑:如果不使用数字列表,这似乎是不可能的,所以现在我需要找到一种方法来用列表替换我的字符串。问题是我正在制作一个公钥加密器/解密器,我不知道如何在没有字符串的情况下对数字进行数学运算。 (它不适用于列表,例如,如果我必须对一个数字 1212 求平方,我可以用 1212^2 轻松地做到这一点。但是,如果列表是 [12,1,2],我不知道如何将其平方以获得与 1212^2 相同的答案。)

任何帮助都会很棒,再次感谢!

【问题讨论】:

  • 使用列表,例如[2, 6, 2, 6],否则无法可靠地区分数字组合,例如 [26, 26] 与 [2, 6, 2, 6]。
  • 使用列表后,使用chr() 进行转换。 chr(65) = 'A'chr(90) = 'Z'
  • 那么就没有办法使用整数吗?我的项目是一个公钥加解密,但是级别很小。首先,用户输入他们的密码。然后我使用 (a=1,b=2, etc...) 将他们的代码转换为数字,然后使用 mod base 等将其提升为幂,其他步骤为公钥。然后,使用加密的消息,代码继续公钥以撤消消息,并找到字母的数字表示,我已经完成了。最后一步是将这些数字转换为原始数字,我不知道该怎么做。
  • 如果你可以在整数之间使用分隔符是的,否则你会遇到问题。
  • @Alexander 我明白你在说什么,但请查看我最近的编辑。

标签: python converter


【解决方案1】:

使用chr(),您可以将 int 转换为字母,例如。 print chr(97) 打印 a。 如果您可以在数字之间使用一些符号来识别组,也许是“-”,那么这是一个简单的问题。如果不是,您将遇到您提到的模棱两可的映射。

例如,您可以创建一个数字到字母的字典:

alphabet_dict = {}
for abet in range(1, 27):
    alphabet_dict[abet] = chr(96+abet)

print alphabet_dict

打印:

{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'}

现在,如果我们决定可以使用符号分隔符,那么我们可以使用内置的split() 将我们的字符串分解为一个列表,然后使用上面的字典将这些值(数字)映射到字母表中:

s = '2-6-2-6'
def convert_num_to_alpha(num_string):
    num_list = num_string.split('-')
    abet_string = ''
    for num in num_list:
        abet_string = abet_string+alphabet_dict[int(num)]
    return abet_string 

print convert_num_to_alpha(s) # prints: bfbf
print convert_num_to_alpha('26-26') # prints: zz

编辑:如何将数字字符串(例如'2-6-2-6')转换为int

这有点骇人听闻,但如果您需要对我存储为字符串的数字进行算术运算,您可以执行以下操作:

print int('2-6-2-6'.replace('-', ''))  # prints: 2626

【讨论】:

  • 我知道它是如何工作的,但就像我在最近的编辑中所说的那样:(它不适用于列表,例如,如果我必须对数字 1212 进行平方,我可以轻松做到所以用 1212^2。但是如果列表是 [12,1,2],我不知道如何将它平方以获得与 1212^2 相同的答案。)
  • @Flo 我的示例仅使用列表作为中间步骤来操作- 之间的每个单独的数字。在我的编辑中,我展示了如何从这样的字符串中获取整数。
  • @Flo 一般来说,这种方法(您的加密/解密)似乎需要再看一遍。也许您应该在另一个问题中发布您的全部问题,您当前如何解决它,列出陷阱以及如何解决它们。请注意,不要在一篇文章中问太多问题,也不要寻求建议。说明问题所在并询问如何修复。
  • 感谢您的帮助。我很可能会发布另一篇更深入地讨论我的问题的帖子。至于您的编辑,我看到您如何将列表转换为整数,但是在进行算术运算后,不可能将其恢复为正确的整数,但如果我错了,请纠正我。
  • @Flo 我很乐意提供帮助(或尝试)。为了清楚起见,编辑是将 string 转换为整数,而不是列表。至于模运算和之后找到“正确”整数,您使用的是多对一函数,因此无法区分映射到特定等价类的任何数字,所以您是对的。
猜你喜欢
  • 2012-11-04
  • 1970-01-01
  • 2014-06-05
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多