python怎么着实现int函数的办法言传身教,内置函数

拖了这么久,最后照旧制服了懒惰,张开Computer写了那篇博客,内容也很轻易,python实现字符串转整型的int方法

python 实现int函数,pythonint函数

拖了这么久,最终依然克制了懒惰,张开Computer写了那篇博客,内容也比相当粗略,python落成字符串转整型的int方法

python已经得以完结了int方法,我们怎么还要再写1次,直接用不就好了?事实当真那样,不过int函数看似轻便,实际上自个儿来达成照旧有部分坑的

 

1.决断正负

那点很轻易忘记

2.python不能够字符串减法

python不能够像c++同样平昔使用s –
‘0’直接达成个位数的字符串转整型,而是要求更改ascii码,ord(s) –
ord(‘0’)来完结转移

3.判别是还是不是超过限度

美高梅开户网址,那也是手写int函数最轻易忽略的主题材料,重回结果不可能出int的限制,python中int类型的最大值使用sys.maxint查看。可是python语言极美妙,实际上python内置的int方法并不曾结果必须低于maxint的界定

 

下边给出笔者的python落成

#!/use/bin/env python
# _*_ coding:utf-8 _*_

import sys
max_int = sys.maxint
num_tuple = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')


def _int(input_string):
    total_num = 0
    is_minus = False
    string = input_string.strip()
    if string.startswith('-'):
        is_minus = True
        string = string[1:]

    for s in string:
        if s not in num_tuple:
            print "input error"
            return 0
        num = ord(s) - ord('0')
        total_num = total_num * 10 + num
        if total_num > max_int:
            total_num = max_int
            break

    return total_num * -1 if is_minus else total_num

 

python怎么着实现int函数的办法言传身教,内置函数。祝愿本身全部的亲朋,身万事亨通康福寿齐天。祝愿美观的Alyssa小姐,学业顺遂每一日心满意足。祝愿博客园越办越好,祝我们新岁欢畅。

 

完毕int函数,pythonint函数
拖了这么久,最后还是克服了懒惰,展开计算机写了那篇博客,内容也比极粗略,python落成字符串转整型的int方…

前言

1.查看内置函数,进入ipython

In [6]: __builtin__.
Display all 138 possibilities? (y or n)
__builtin__.ArithmeticError            __builtin__.complex
__builtin__.AssertionError             __builtin__.copyright
__builtin__.AttributeError             __builtin__.credits
__builtin__.BaseException              __builtin__.delattr
__builtin__.BufferError                __builtin__.dict
__builtin__.BytesWarning               __builtin__.dir
__builtin__.DeprecationWarning         __builtin__.divmod
__builtin__.EOFError                   __builtin__.dreload
__builtin__.Ellipsis                   __builtin__.enumerate
__builtin__.EnvironmentError           __builtin__.eval
__builtin__.Exception                  __builtin__.execfile
__builtin__.False                      __builtin__.file
__builtin__.FloatingPointError         __builtin__.filter
__builtin__.FutureWarning              __builtin__.float
__builtin__.GeneratorExit              __builtin__.format

python已经得以实现了int方法,大家怎么还要再写一回,直接用不就好了?事实确实这样,但是int函数看似轻巧,实际上本人来促成还是有部分坑的

拖了这么久,最后照旧克制了懒惰,张开Computer写了那篇博客,内容也很简短,python达成字符串转整型的int方法

贰. 常见函数

举例:

  • 取相对值abs

In [9]: abs(-100)
Out[9]: 100
  • 取最大值、最小值max/min,无法相比较字典,因为字典不属于队列

In [15]: min('5214586689990',(1,2),[1,2])
Out[15]: [1, 2]

In [16]: max('5214586689990',(1,2),[1,2])
Out[16]: (1, 2)
  • 取商和余divmod

In [17]: divmod(5,2)
Out[17]: (2, 1)
  • 取次幂pow,倘若有首个参数,再取余

In [18]: pow(5,2)
Out[18]: 25    #5的2次幂

In [19]: pow(5,2,4)    #25除4,余1
Out[19]: 1
  • 取小数点后3人round

In [31]: round(24.45,3)  #保留3位小数,但是目前只有2位小数
Out[31]: 24.45

In [32]: round(24.45,1)
Out[32]: 24.4

In [33]: round(24.45,0)
Out[33]: 24.0

In [34]: round(24.45)      #所以,只有一个参数时,默认输出.0
Out[34]: 24.0
  • 决断可调用,函数、类可被调用

In [35]: a =1

In [36]: callable(a)    a是数字,不可被调用
Out[36]: False

In [37]: def fun():
   ....:     1
   ....:     

In [38]: callable(fun)    #fun是函数,可被调用
Out[38]: True

In [40]: class A(object):    #定义类
    pass
   ....: 
In [41]: callable(A)    #类可被调用
Out[41]: True
  • 判定项目isinstance,比type剖断更宏观

In [42]: l = [1,2]
In [43]: isinstance(l,list)  #判断l是不是list
Out[43]: True

In [44]: isinstance(l,str) #判断l是不是str
Out[44]: False

In [45]: isinstance(l,(str,list)) #判断l是不是list或者str,只要满足一个就真
Out[45]: True
  • 正如大小

In [46]: cmp(1,1)  #相等输出0
Out[46]: 0

In [47]: cmp(1,2)  #前面的小,输出-1
Out[47]: -1

In [48]: cmp(3,2)    #前面的大,输出1
Out[48]: 1

In [49]: cmp('zell','hello')  #字符串比较不是单纯比较长度
Out[49]: 1
In [50]: cmp('zell','zellp')
Out[50]: -1
  • range和xrange

In [51]: range(3)
Out[51]: [0, 1, 2]

In [52]: xrange(3)
Out[52]: xrange(3)

range直接重返一个列表,真实存在于内部存款和储蓄器中,占用财富。xrange只有在遍历的时候才再次来到相应的值,更省去财富。

 

python已经落成了int方法,大家为什么还要再写3次,间接用不就好了?事实确实如此,不过int函数看似轻巧,实际上本身来贯彻照旧有一对坑的

3. 更动函数

  • int转换整型

In [53]: int('11')
Out[53]: 11

In [54]: int('11.1')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-54-a7a741093b0a> in <module>()
----> 1 int('11.1')

ValueError: invalid literal for int() with base 10: '11.1'

int无法改换带小数点的字符串

  • long转换长整型
  • float调换浮点
  • complex调换复数
  • str调换字符串
  • list调换列表
  • tuple调换元祖
  • hex转换为1陆进制的字符串,参数为int也许long

In [56]: hex(10)
Out[56]: '0xa'

In [57]: int('0xa')  #int转换字符串不能带引号
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-57-f39cb7e42137> in <module>()
----> 1 int('0xa')

ValueError: invalid literal for int() with base 10: '0xa'

In [58]: int(0xa)
Out[58]: 10
  • eval解析引号里的始末

In [59]: eval('0xa')
Out[59]: 10
In [61]: type(eval('0xa'))
Out[61]: int

再进一步:

In [62]: eval("['1',2]") #如果引号里的内容含引号,注意区分单双引号
Out[62]: ['1', 2]

In [63]: eval('[1,2]')
Out[63]: [1, 2]

In [64]: eval('(1,2)')
Out[64]: (1, 2)

In [65]: eval('{1:2}')
Out[65]: {1: 2}
  • oct调换八进制
  • chr返回int的ASKII码

In [69]: chr(100)
Out[69]: 'd'
  • ord和chr相反,参数是字符,再次回到int

In [70]: ord('d')
Out[70]: 100

In [71]: ord('\n')
Out[71]: 10

一.肯定正负

一.论断正负

四. 字符串处理办法

In [72]: s = 'hello'

In [73]: s.
s.capitalize  s.expandtabs  s.isdigit     s.ljust       s.rindex      s.splitlines  s.upper
s.center      s.find        s.islower     s.lower       s.rjust       s.startswith  s.zfill
s.count       s.format      s.isspace     s.lstrip      s.rpartition  s.strip       
s.decode      s.index       s.istitle     s.partition   s.rsplit      s.swapcase    
s.encode      s.isalnum     s.isupper     s.replace     s.rstrip      s.title       
s.endswith    s.isalpha     s.join        s.rfind       s.split       s.translate   

如上是字符串的整套平放方法

  • .capitalize将第三个字母大写

In [74]: s.capitalize()
Out[74]: 'Hello'
  • .replace(‘待替换’,‘替换值’,换几个)替换

In [75]: s.replace('H','h')  #替换第一个H
Out[75]: 'hello'

In [78]: .replace('l','L',1)  #替换第一个l
Out[78]: 'heLlo'

In [76]: .replace('l','L',2)  #替换2个l
Out[76]: 'heLLo'
  • .split切断字符串,重临列表。私下认可分隔符是空格

In [81]: s = 'hello h'

In [82]: s.split()
Out[82]: ['hello', 'h']

点名分隔符、切多少个

In [84]: s ='192.168.1.1'

In [85]: s.split('.',1)    #切1个
Out[85]: ['192', '168.1.1']

In [87]: s.split('.',2)  #切2个
Out[87]: ['192', '168', '1.1']

In [88]: s.split('.')  #不写切几个,默认全切
Out[88]: ['192', '168', '1', '1']
  • .join(系列)连接体系里的成分,再次回到字符串

In [89]: '+'.join([11,2])  #列表里的元素得是字符串,不然报错
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-89-7387fe37ff7d> in <module>()
----> 1 '+'.join([11,2])

TypeError: sequence item 0: expected string, int found

In [90]: '+'.join(['11','2'])  #+连接
Out[90]: '11+2'

In [91]: ''.join(['11','2'])  #连接符不写
Out[91]: '112'

In [92]: ' '.join(['11','2'])  #连接符是空格
Out[92]: '11 2'

把列表换来元祖,和列表同样,成分得是字符串

In [93]: ' '.join(('11','2'))
Out[93]: '11 2'
  • string模块

In [95]: import string

In [96]: string.
string.Formatter        string.capwords         string.ljust            string.rsplit
string.Template         string.center           string.lower            string.rstrip
string.ascii_letters    string.count            string.lowercase        string.split
string.ascii_lowercase  string.digits           string.lstrip           string.splitfields
string.ascii_uppercase  string.expandtabs       string.maketrans        string.strip
string.atof             string.find             string.octdigits        string.swapcase
string.atof_error       string.hexdigits        string.printable        string.translate
string.atoi             string.index            string.punctuation      string.upper
string.atoi_error       string.index_error      string.replace          string.uppercase
string.atol             string.join             string.rfind            string.whitespace
string.atol_error       string.joinfields       string.rindex           string.zfill
string.capitalize       string.letters          string.rjust            

In [96]: string.lowercase
Out[96]: 'abcdefghijklmnopqrstuvwxyz'
In [97]: string.uppercase
Out[97]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.replace对比s.replace

In [98]: string.replace('hello','h','H')
Out[98]: 'Hello'

那一点很轻便忘记

那点很轻巧忘记

二.python不能够字符串减法

二.python不能够字符串减法

python不能像c++一样直接选取s –
‘0’直接促成个位数的字符串转整型,而是需求改动ascii码,ord(s) –
ord(‘0’)来兑现转移

python不能够像c++一样直接行使s –
‘0’直接促成个位数的字符串转整型,而是供给退换ascii码,ord(s) –
ord(‘0’)来完成转移

③.肯定是或不是超过限度

三.判别是不是超过限度

那也是手写int函数最轻松忽略的标题,重返结果不能够出int的限定,python中int类型的最大值使用sys.maxint查看。但是python语言很奇妙,实际上python内置的int方法并从未结果必须低于maxint的限定

那也是手写int函数最轻便忽视的主题素材,再次回到结果不能够出int的范围,python中int类型的最大值使用sys.maxint翻开。但是python语言很巧妙,实际上python内置的int方法并从未结果必须低于maxint的限量

 

上边给出小编的python达成

下边给出作者的python落成

#!/use/bin/env python
# _*_ coding:utf-8 _*_
import sys
max_int = sys.maxint
num_tuple = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
def _int(input_string):
 total_num = 0
 is_minus = False
 string = input_string.strip()
 if string.startswith('-'):
  is_minus = True
  string = string[1:]
 for s in string:
  if s not in num_tuple:
   print "input error"
   return 0
  num = ord(s) - ord('0')
  total_num = total_num * 10 + num
  if total_num > max_int:
   total_num = max_int
   break
 return total_num * -1 if is_minus else total_num
#!/use/bin/env python
# _*_ coding:utf-8 _*_

import sys
max_int = sys.maxint
num_tuple = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')


def _int(input_string):
    total_num = 0
    is_minus = False
    string = input_string.strip()
    if string.startswith('-'):
        is_minus = True
        string = string[1:]

    for s in string:
        if s not in num_tuple:
            print "input error"
            return 0
        num = ord(s) - ord('0')
        total_num = total_num * 10 + num
        if total_num > max_int:
            total_num = max_int
            break

    return total_num * -1 if is_minus else total_num

总结

 

如上就是那篇小说的全部内容了,希望本文的始末对大家的就学大概职业富有自然的参照学习价值,借使有疑问我们能够留言调换,多谢我们对台本之家的支撑。

祝愿自身有所的至亲好友,身径情直行康福如东海。祝愿美观的Alyssa小姐,学业顺遂每1二十六日热情洋溢。祝愿新浪越办越好,祝大家新春高兴。

您也许感兴趣的稿子:

  • python
    中的int()函数怎么用
  • Python中int()函数的用法解析

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图