方便用写一段将字符串转成整数的函数给我看一下吗字符串转换为整数,简单看一下代码基本功。

要求:不要调用int转换函数。按位读取字符串里的字符进行处理将字符串转化为整数,给定的输入一定是合法输入不包含非法字符,字符串头尾没有空格,考虑字符串开头可能有正负号

本期语音讲解

本期文字解析

假设我们要转换的字符串是data=“-”,那么我们需要将其分解为6,50,400,3000,20000和和负号。

首先,我们将其翻转,语法是data[::-1],值是“-”,然后我们使用循环遍历每一个字符。

其次,我们知道字符‘0’在计算机里存储的数值是48字符串转换为整数,字符1在计算机里存储的数值是49,里可以采用ord函数来获取字符存储的数值,ord(‘3’)-48=3。我们使用ord(x)-48得到每个字符对应的数值,然后乘以10的幂即可得到相应的分解值。代码如下:

[(ord(v) - 48) * 10 ** i for i,v in (a[::-1])]

由于正号与符号不需要参与计算,因此我们需要对生成式进行补齐,得到如下生成式:

[(ord(v) - 48) * 10 ** i for i,v in (a[::-1]) if v != '-' and v != '+']

接着,我们采用sum函数计算出字符串的数值部分,并将其赋值给变量:

= sum([(ord(v) - 48) * 10 ** i for i,v in (a[::-1]) if v != '-' and v != '+'])

最后,我们可以针对符号进行处理了:

= - if a[0] == '-' else

到此,本题就完整的解完了。

公众号后台回复“ord”可获取ord函数说明。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注