python数字形式转换_在Python中将字母转换为数字

在Python中将字母转换为数字

如何完成以下步骤?

characters = ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''t''u''v''w''x''y''z']

numbers = ['1''2''3''4''5''6''7''8''9''10''11''12''13''14''15''16''17''18''19''20''21''22''23''24']

text = raw_input(' Write text: ')

我已经尝试了许多方法来解决它,但无法做到。 我想做事。 如果我键入“ hello”,则输出的数字将按字母顺序排列。 示例a = 1 <字母。

altin asked 2020-02-06T03:46:14Z

14个解决方案

77 votes

那么这样的事情呢:

print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]

奥德

清单理解

ASCII字符代码

编辑

自从你问我要解释后,我会...尽管[?]已经在评论中很好地解释了它。

让我们从不止一行开始。

input = raw_input('Write Text: ')

input = input.lower()

output = []

for character in input:

number = ord(character) - 96

output.append(number)

print output

这做同样的事情,但更具可读性。 在尝试理解我的第一个答案之前,请确保您了解这里发生的情况。 这里的一切都是非常标准的,简单的Python。 要注意的一件事是ord函数。 ord代表序数,几乎每种高级语言都将提供此类功能。 它为您映射到任何字符的数字表示形式。 ord的逆函数称为chr。

chr(ord('x')) == 'x' # for any character, not just x.

如果您自己进行测试,则a的序数为97(我上面发布的第三个链接将显示完整的ASCII字符集。)每个小写字母的范围为97-122(26个字符)。因此,如果您减去 从任何小写字母的序号96开始,假设您采用'a'== 1,您将获得其在字母表中的位置。因此,'b'== 98,'c'== 99等的序数。当您 减去96,'b'== 2,'c'== 3,依此类推。

我发布的初始解决方案的其余部分只是一些Python技巧,您可以学习这些技巧,称为列表理解。 但是,我不会像在奥尔德是你的朋友的情况下那样专注于学习以任何语言来解决问题。 我希望这有帮助。

sberry answered 2020-02-06T03:47:04Z

15 votes

您可以使用chr()和ord()在字母和整数之间进行转换。

这是一个简单的例子。

>>> chr(97)

'a'

>>> ord('a')

97

Statham answered 2020-02-06T03:47:29Z

9 votes

如果要大量使用此转换,请考虑计算一次并将结果放入字典中:

>>> import string

>>> di=dict(zip(string.letters,[ord(c)%32 for c in string.letters]))

>>> di['c']

3

优点是字典查找非常快,而在每次调用时都遍历列表。

>>> for c in sorted(di.keys()):

>>> print "{0}:{1} ".format(c, di[c])

# what you would expect....

the wolf answered 2020-02-06T03:47:53Z

8 votes

不必太基础,但这是:

>>> char1 = ['a''b''c''d''e''f''g''h''i''j''k''l'

'm''n''o''p''q''r''s''t''u''v''w''x''y''z']

与此非常不同:

>>> char2 = ['a','b','c','d','e','f','g','h','i','j','k','l',

'm','n','o','p','q','r','s','t','u','v','w','x','y','z']

第一个没有逗号和问题的内容是一个包含26个元素的字符串的一个元素列表。 第二个是26个元素列表,每个列表的长度为单个字符。

如果打印每个:

>>> print char1, len(char1), len(char1[0])

['abcdefghijklmnopqrstuvwxyz'] 1 26

>>> print char2, len(char2), len(char2[0])

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',

'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 26 1

显然,需要采取额外的步骤才能将characters=['a''b''c'...]的各个字符变成可迭代的字符。

如果您具有从“ a”到“ z”和/或从“ A”到“ Z”的字符序列,则可以通过列表理解轻松返回该字符的编号:

>>> [ord(x)%32 for x in char2]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

17, 18, 19, 20, 21, 22, 23, 24, 25, 26]

对于您拥有的数据结构类型,您需要首先访问该字符串:

>>> [ord(x)%32 for x in char1[0]]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

17, 18, 19, 20, 21, 22, 23, 24, 25, 26]

因此,如果您的代码清单与您的问题相同,则可能是您的问题。

合理的替代方法是:characters=['a''b''c'...]

您可以看到您的characters=['a''b''c'...](不带逗号)与在像['abc...']这样的列表中键入字符串中的所有字符一样。

所以现在尝试:

>>> import string

>>> [ord(x.lower())-96 for x in string.letters]

[1,2,...26, 1,2,3...26] # my ellipses

>>> char3=[string.letters] # one string as element[0]

>>> [ord(x)%32 for x in char3[0]]

>>> [ord(x)%32 for x in [string.letters][0]]

dawg answered 2020-02-06T03:48:58Z

6 votes

这是我以前用于此目的的功能。 适用于大写和小写。

def convert_char(old):

if len(old) != 1:

return 0

new = ord(old)

if 65 <= new <= 90:

# Upper case letter

return new - 64

elif 97 <= new <= 122:

# Lower case letter

return new - 96

# Unrecognized character

return 0

parent5446 answered 2020-02-06T03:49:18Z

5 votes

像这样

[str(ord(c)&31) for c in text]

Kabie answered 2020-02-06T03:49:38Z

3 votes

>>> [str(ord(string.lower(c)) - ord('a') + 1) for c in string.letters]

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',

'18', '19', '20', '21', '22', '23', '24', '25', '26', '1', '2', '3', '4', '5', '6', '7', '8',

'9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',

'25', '26']

marcog answered 2020-02-06T03:49:54Z

3 votes

def letter_to_int(letter):

alphabet = list('abcdefghijklmnopqrstuvwxyz')

return alphabet.index(letter) + 1

在此,如果列表包含x,则索引(x)函数将返回x的位置值。

ehfgk78 answered 2020-02-06T03:50:14Z

2 votes

这是我用来将excel列字母转换为数字的方法(因此限制为3个字母,但是如果您需要更多,可以很容易地扩展它)。 可能不是最好的方法,但是它可以满足我的需求。

def letter_to_number(letters):

letters = letters.lower()

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

strlen = len(letters)

if strlen == 1:

number = dictionary[letters]

elif strlen == 2:

first_letter = letters[0]

first_number = dictionary[first_letter]

second_letter = letters[1]

second_number = dictionary[second_letter]

number = (first_number * 26) + second_number

elif strlen == 3:

first_letter = letters[0]

first_number = dictionary[first_letter]

second_letter = letters[1]

second_number = dictionary[second_letter]

third_letter = letters[2]

third_number = dictionary[third_letter]

number = (first_number * 26 * 26) + (second_number * 26) + third_number

return number

Kurt Maupin answered 2020-02-06T03:50:34Z

1 votes

如果目标是仅转换字母abcd .... xyz和ABCD .... XYZ,我将使用一个函数:

from string import letters

def rank(x, d = dict((letr,n%26+1) for n,letr in enumerate(letters[0:52]))):

return d[x]

我写了[0:52]是因为我的Python 2.7版本显示了该值

* ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

用于string.letters参数。

因为参数d接收一个值作为默认参数,所以在执行函数定义以生成函数对象的那一刻,该值的演算仅执行一次。因此,即使该函数被调用了三千次,也可以在不重新计算该值的情况下使用该函数。

顺便说一下,该函数的每次调用都不再使用lower()。 在构造默认参数时已处理了大写字母的情况。

一个使用示例:

word = 'supercalifragilisticexpialidocious'

print ''.join( letter if rank(letter)%3!=0 else '.' for letter in word)

结果:

s.pe..a .... ag ... st..e.p.a.d ..... s

它也可以与map()一起使用:

print map(rank,'ImmunoElectroPhoresis')

结果:

[9、13、13、21、14、15、5、12、5、3、20、18、15、16、8、15、18、5、19、9、19]

eyquem answered 2020-02-06T03:51:52Z

1 votes

如果您只是想将数字映射到字母,则只需执行以下简单操作:

def letter_to_index(letter):

_alphabet = 'abcdefghijklmnopqrstuvwxyz'

return next((i for i, _letter in enumerate(_alphabet) if _letter == letter), None)

当然,如果要使其从1开始,则只需添加(i + 1代表i,...等。

regularex answered 2020-02-06T03:52:17Z

1 votes

如果您正相反,例如1 = A,2 = B等,则可以使用以下代码。 请注意,由于我只能将一个班级的班级转换为A,B,C等,所以我最多只能升至2级。

loopvariable = 0

numberofdivisions = 53

while (loopvariable

if(loopvariable<26):

print(chr(65+loopvariable))

loopvariable +=1

if(loopvariable > 26 and loopvariable <53):

print(chr(65)+chr(65+(loopvariable-27)))

Haris Np answered 2020-02-06T03:52:37Z

1 votes

使用此功能。 它将字母字符串转换为其等效的数字值:

def convAlph2Num(sent):

alphArray = list(string.ascii_lowercase)

alphSet = set(alphArray)

sentArray = list(sent.lower())

x = []

for u in sentArray:

if u in alphSet:

u = alphArray.index(u) + 1

x.append(u)

print(x)

return

dabire answered 2020-02-06T03:52:57Z

0 votes

这是我要解决的问题的解决方案,其中您要转换字符串中所有字母的位置,并以字母的位置返回英文字母的位置。

[https://gist.github.com/bondnotanymore/e0f1dcaacfb782348e74fac8b224769e]

如果您想详细了解它,请告诉我。我使用了以下概念  -列表理解  -字典理解

nomoreabond2017 answered 2020-02-06T03:53:27Z

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中赋值,深拷贝和浅拷贝

1python变量 变量的存储&#xff0c;采用了引用语义的方式&#xff0c;存储的只是一个变量的值所在的内存地址&#xff0c;而不是这个变量的值本身。 2赋值 python变量赋值实际上是对象的引用。 如&#xff1a; list_a [1,2,3,"hello",["python",&qu…

excel进度条与百分比不符_Excel项目管理模板V2.0

Excel表哥公众号推送的第一篇文章 如何用Excel制作一个高逼格的项目管理模板 累积获得了超多的下载量。下面是和读者朋友的一些交流互动&#xff1a;在使用过程中大家陆续也反馈了一些问题和建议。因此我们推出了项目管理模板V2.0 升级版&#xff01;算作是给读者朋友们的一个答…

python 格式化输出%和format

1 %用法 1.1整数的输出 %o —— oct 八进制 %d —— dec 十进制 %x —— hex 十六进制 print(%o % 20) #24 print(%d % 20) #20 print(%x % 20) #141.2浮点数输出 %f ——默认保留小数点后面六位有效数字   %.3f&#xff0c;保留3位小数位 %e ——默认保留小数点后面六…

linux系统中安装python_2. Linux 下安装python

Linux 各个版本的系统都自带python解释器&#xff0c;可以在shell界面输入 python 就能进入交互界面&#xff0c;并显示python版本信息&#xff1b; 现在最流行的版本是python2.7&#xff0c;Centos6 默认安装2.6.6的版本&#xff0c;Centos7 默认安装2.7.* 的版本。 如果Cento…

零基础学习Java-素数和

在编写素数和程序中&#xff0c;发现了以下的问题&#xff1a; 在编程的过程中&#xff1a; 关于比较范围的不牢固各数据需要给初始化的值对于使用isPrime来辅助程序运行的遗忘 在程序运行的过程中&#xff1a; 除数不能为0 出现Exception in thread “main” java.lang.Ar…

访问修饰符作用范围由大到小是_9个java基础小知识

一、面向对象和面向过程的区别1. 面向过程 &#xff1a; 面向过程性能比面向对象高。因为类调用时需要实例化&#xff0c;开销比较大&#xff0c;比较消耗资源&#xff0c;所以当性能是最重要的考虑因素时&#xff08;例如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发…

System.out.println(i++); System.out.println(++i);的区别

之前一直对i和i很模糊&#xff0c;这次通过两个小demo来探究下。 例1&#xff1a; 1 public static void main(String[] args) { 2 int i2; 3 System.out.println(i); 4 System.out.println(i); 5 }run: 2 3 例2&#xff1a; 1 public static void…

python如何导入函数_Python导入(import)模块的方法

1、导入整个模块&#xff1a;模块 是扩展名为.py的文件&#xff0c;包含要导入到程序中的代码。import module_name 2、导入特定的函数from module_name import function_name 也可以导入多个from module_name import function_0, function_1, function_2 3、使用as 给函数指定…

白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖、基本路径覆盖)

语句覆盖&#xff1a;每条语句至少执行一次。 判定覆盖&#xff1a;每个判定的所有可能结果至少出现一次。&#xff08;又称“分支覆盖”&#xff09; 条件覆盖&#xff1a;每个条件的所有可能结果至少执行一次。 判定/条件覆盖&#xff1a;一个判定中的每个条件的所有可能结果…

Python之列表和元组

01 序列 成员有序排列的&#xff0c;且可以通过下标偏移量访问到它的一个或者几个成员&#xff0c;这类类型统称为序列 序列数据类型包括:字符串,列表,和元组类型。 特点: 都支持下面的特性 索引与切片操作符 成员关系操作符(in , not in) 连接操作符() & 重复操作符(*) 0…

负数、取模与取余

总结&#xff1a; ‘%’ 在C/C&#xff0c;Java等语言中意为 取余 &#xff0c;在python 中意为 取模 取余&#xff08;rem&#xff09;和取模&#xff08;mod&#xff09;在被除数、除数同号时&#xff0c;结果是等同的&#xff0c;异号时会有区别&#xff0c;所以要特别注意…

webgl编程指南源码_ThreeJS 源码剖析之 Renderer(一)

引子?最近&#xff0c;忽然想起曾在 WebGL 基础系列 文章中立下 flag&#xff1a;“后续还打算出 《ThreeJS 源码剖析》 系列”(特意翻出原话?)&#xff0c;项目忙了一阵后&#xff0c;便决定开始写此系列&#xff0c;更新周期不固定&#xff0c;毕竟项目排期“天晓得”。此系…

python之集合与字典

01 一山不容二虎的集合 1.通俗来说&#xff0c;集合&#xff08;set&#xff09;是一个无序的不重复元素序列&#xff0c;就是一个用来存放数据的容器。 1&#xff09;集合里面的元素是不可重复的&#xff1a; 如&#xff1a; s {1,2,3,4,1,2,3} print(s,type(s)) # 输出结…

求最大公约数——辗转相除法

最大公约数的基本原理: 两个数的最大公约数是指能同时整除它们的最大正整数。 设两数为a、b(a≥b)&#xff0c;求a和b最大公约数。 辗转相除法 代码如下&#xff1a; //只截取了一部分&#xff0c;完整代码可看下方 while (b<0){t a % b;a b;b t;}我们可以发现辗转相…

opencv roberts算子_边缘检测 Roberts算子

Roberts算子是一种最简单的算子&#xff0c;利用局部差分算子寻找边缘的算子。采用对角线相邻两像素之差近似梯度幅值检测边缘。。检测垂直边缘的效果比斜向边缘要好&#xff0c;定位精度高&#xff0c;对噪声比较敏感&#xff0c;无法抑制噪声的影响。Roberts边缘算子是一个2x…

Python习题week1

知识点1&#xff1a; 输入变为浮点数&#xff1a;score input("请输入成绩&#xff1a;") score float(score) 1题目&#xff1a;利用条件运算符的嵌套来完成此题&#xff1a;学习成绩>90分的同学用A表示&#xff0c;60-89分之间的用B表示&#xff0c;60分以下…

参数传值swap

对于下面的代码&#xff1a; #include <stdio.h> void swap(int a,int b);int main() {int a5;int b7;swap(a,b);printf("a%d,b%d",a,b);return 0; }void swap(int a,int b) {int t a;ab;bt; }输出结果却是&#xff1a; a5,b7 Process returned 0 (0x0) ex…

python在材料方面的应用_python记录材料题带标准答案

1.Python 是如何进行内存管理的&#xff1f; 答 : 从三个方面来说 , 一对象的引用计数机制 , 二垃圾回收机制 , 三内存池机制 一、对象的引用计数机制 Python 内部使用引用计数&#xff0c; 来保持追踪内存中的对象&#xff0c; 所有对象都有引用计数。 引用计数增加的情况&…

Python习题week2

知识点总结&#xff1a; 1.去除数字前面的零 Num int(input("请输入正整数&#xff1a;")) 2. 矩阵方式输入处理 # 输入方法3 按矩阵形式输入 list_juzhen [] for i in range(3):input_str input()input_list input_str.split(" ")list_juzhen.app…

74ls90设计十进制计数器电路图_PLC控制系统的设计与调试步骤你知多少?

作为电气工程技术人员我们在平时工作中常常要对PLC控制系统进行设计与调试&#xff0c;下面给各位朋友分享一下PLC控制系统的设计与调试步骤。PLC控制系统的设计与调试过程是这样的&#xff1b;第一点需要我们深入了解被控制系统。我们在设计前应该熟悉图样资料&#xff0c;并深…