zoukankan      html  css  js  c++  java
  • Python 整数数据类型详解(int)[学习 Python 必备基础知识][看此一篇就够了]

    您的“关注”和“点赞”,是信任,是认可,是支持,是动力......

    如意见相佐,可留言。
    本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

    在这里插入图片描述

    1 Python 整型概述

    Python 整数数据类型,简称整型,在 Python 中用 int表示。

    整数指的是没有小数部分的数字,在 Python 中的整数包括正整数、0(数字零) 和负整数。

    在 Python 中整型是用来存储整数的,或者说是用来描述整数的。
    在 Python 中存储整数的数据类型只有一种,那就是整数数据类型(int)。
    在 Python 中整型的取值范围是无限的(整数具有无限的精度)。

    2 不同进制表示整数

    2.1 十进制(decimalism)形式

    2.1.1 十进制形式概述

    十进制形式,在我们生活中经常会用到的一种数字表示形式。
    由 0~9 共十个数字排列组合而成。

    2.1.2 十进制表示整数注意事项

    使用十进制形式的整数时,不能以 0 (数字零)作为开头,除非这个数字本身就是 0(数字零)。如下代码所示:
    例一,

    num = 033  # 十进制整数不能以 0 开头
    
    print(num)
    

    运行结果:

        num = 033
                ^
    SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
    

    如果以数字 0 作为十进制整数的开头,就会报 SyntaxError 异常,错误提示信息为: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers ,翻译过来:不允许在十进制整数字面值中前置零;对八进制整数使用0o前缀。

    例二,

    num1 = 0
    num2 = 00
    num3 = 000
    
    
    print(num1)
    print(num2)
    print(num3)
    

    运行结果:

    0
    0
    0
    

    2.2 二进制(binary)形式

    二进制形式,由 0 和 1 两个数字组成,书写时以0b0B开头(注意,第一个符号是数字 0,第二个符号是小写字母 b 或大写字母 B)。如下代码所示:

    # 十进制数 5 对应的二进制为 0b101 或 0B101
    print(0b101)
    print(0B101)
    
    

    运行结果:

    5
    5
    

    2.3 八进制(octonary)形式

    八进制形式,由 0~7 共八个数字组成,以0o0O开头(注意,第一个符号是数字 0,第二个符号是小写字母 o 或大写字母 O)。如下代码所示:

    # 十进制数 18 对应的八进制为 0o22 或 0O22
    print(0o22)
    print(0O22)
    
    

    运行结果:

    18
    18
    

    2.4 十六进制(hexadecimal)形式

    十六进制形式,由 0~9 十个数字以及 A~F(或 a~f)六个字母组成,书写时以0x0X开头(注意,第一个符号是数字 0,第二个符号是小写字母 x 或大写字母 X)。如下代码所示:

    # 十进制数 12 对应十六进制为 0xc 或 0Xc
    print(0xc)
    print(0Xc)
    
    

    运行结果:

    12
    12
    

    2.5 各进制对应的函数及其各进制之间转换

    • 二进制:bin()
    • 八进制:oct()
    • 十六进制:hex()

    (1)十进制转换为其他进制

    print('十进制数 23 转换为二进制数为:', bin(23))
    print('十进制数 23 转换为八进制数为:', oct(23))
    print('十进制数 23 转换为十六进制数为:', hex(23))
    

    运行结果:

    十进制数 23 转换为二进制数为: 0b10111
    十进制数 23 转换为八进制数为: 0o27
    十进制数 23 转换为十六进制数为: 0x17
    

    (2)二进制转换为其他进制

    print('二进制数 0b101 转换为十进制数为:', 0b101)  # print() 函数输出整数默认为十进制
    print('二进制数 0b101 转换为八进制数为:', oct(0b101))
    print('二进制数 0b101 转换为十六进制数为:', hex(0b101))
    

    运行结果:

    二进制数 0b101 转换为十进制数为: 5
    二进制数 0b101 转换为八进制数为: 0o5
    二进制数 0b101 转换为十六进制数为: 0x5
    

    (3)八进制转换为其他进制

    print('八进制数 0o22 转换为十进制数为:', 0o22)  # print() 函数输出整数默认为十进制
    print('八进制数 0o22 转换为二进制数为:', bin(0o22))
    print('八进制数 0o22 转换为十六进制数为:', hex(0o22))
    

    运行结果:

    八进制数 0o22 转换为十进制数为: 18
    八进制数 0o22 转换为二进制数为: 0b10010
    八进制数 0o22 转换为十六进制数为: 0x12
    

    (4)十六进制转换为其他进制

    print('十六进制数 0xc 转换为十进制数为:', 0xc)  # print() 函数输出整数默认为十进制
    print('十六进制数 0xc 转换为二进制数为:', bin(0xc))  # print() 函数输出整数默认为十进制
    print('十六进制数 0xc 转换为八进制数为:', oct(0xc))  # print() 函数输出整数默认为十进制
    

    运行结果:

    十六进制数 0xc 转换为十进制数为: 12
    十六进制数 0xc 转换为二进制数为: 0b1100
    十六进制数 0xc 转换为八进制数为: 0o14
    

    3 数字分隔符

    数字分隔符,在 Python 中使用下划线_作为数字的分隔符。

    通常从右往左数每三个数字添加一个数字分隔符,而不会影响数字本身的值。

    数字分隔符可以提高数字的可读性。

    如下所示:

    num = 45252465765747  # 我闭着眼胡乱敲出了一个数,哈哈
    num1 = 45_252_465_765_747  # 给加上数字分隔符
    
    
    print('num = ', num)
    print('num1 = ', num1)
    
    

    运行结果:

    num =  45252465765747
    num1 =  45252465765747
    

    4 整数相关函数 int()

    class int([x][,[base=]])
    
    • 返回值:返回一个基于数字或字符串 x 构造的整数对象,或者在未给出参数时返回 0。如下例一所示。
    • x 参数: 为可选参数,可以是数字(整数或浮点数)或字符串(指的是整数字符串);如果是浮点数,它将向零舍入。如下例二所示。
    • base 参数: 也为可选参数,表示进制数(表示传入的 x 的进制数),默认为十进制。base=可有可无,写上是关键字参数,不写是位置参数。如下例三所示。
    • 如果 x 为数字,则不能有 base 参数,作用是为传入的 x 取整。如下例四所示。
    • 如果 x 为整数字符串,base 参数可有可无。
    • 如果 x 不符合 base 规则(指的是传入的 x 的进制数跟 base 参数值不一致),则报错。如下例五所示。

    实例如下代码所示:
    例一,

    obj = int()  # 不传入参数,返回结果为 0
    print(obj)
    

    运行结果:

    0
    

    例二,

    obj1 = int(12)
    obj2 = int(12.7)  # 传入浮点数,将向零舍入。
    obj3 = int('12')  # 传入整数字符串
    
    
    print(obj1)
    print(obj2)
    print(obj3)
    
    

    运行结果:

    12
    12
    12
    
    

    例三,

    obj4 = int('12', base=10)  # 可使用关键字参数传参 base=10
    obj5 = int('12', 10)  # 也可使用位置参数传参 10
    
    
    print(obj4)
    print(obj5)
    

    运行结果:

    12
    12
    

    例四,

    obj6 = int(12, base=10)  # 如果 x 参数为纯数字,不能有 base 参数
    
    
    print(obj6)
    

    运行结果:

    TypeError: int() can't convert non-string with explicit base
    

    例五,

    obj7 = int("b", 8)  # 大于等于 16 进制才会允许传入参为 a,b,c...
    
    
    print(obj7)
    
    

    运行结果:

    ValueError: invalid literal for int() with base 8: 'b'
    

    5 Python 3.x 版本与Python 2.x 版本中整型的区别

    Python 3.x 版本中只用 int 一种数据类型存储整数。
    Python 2.x 版本中多了long类型,使用 long 类型来存储较大的整数,用 int 类型存储较小的整数。

    6 文章其他地址

    6.1 微信公众号:码农阿杰

    6.2 CSDN 博客

    7 参考资料

    7.1 Python 3.8.2 documentation

  • 相关阅读:
    codeforces 261B Maxim and Restaurant(概率DP)
    洛谷P3066 [USACO12DEC]逃跑的Barn (线段树合并)
    洛谷P1600 天天爱跑步(线段树合并)
    AtCoder
    SPOJ10606 BALNUM
    洛谷P3567[POI2014]KUR-Couriers(主席树+二分)
    洛谷P2633 Count on a tree(主席树上树)
    【.Net边角料系列】1-单例模式(我真不是你想的那样)
    生成二维码的开源工具对比(附源码了呀!)
    你所不知道的linq(二)
  • 原文地址:https://www.cnblogs.com/manongajie/p/12738022.html
Copyright © 2011-2022 走看看