zoukankan      html  css  js  c++  java
  • 【Python系统学习02】数据类型与类型转换

    原网页地址

    数据类型与类型转换

    一、数据类型

    • 字符串
    • 整数
    • 浮点数
    • 【补充中...】

    1、字符串 str

    字符串:英文string,简写str。

    name = '小石头:'
    print(name,'2019', '12', '24') # 小石头: 2019 12 24

    print("平安夜,祝你一生平安。Merry Christmas!")
    # 平安夜,祝你一生平安。Merry Christmas!

    以上,包裹在单引号和双引号里边的内容,如‘小石头’‘2019’这些就是字符串。

    换言之,但凡包裹在英文格式下的 单引号、双引号或三引号 里的内容,不论引号里边是英文、中文、甚至是数字、符号、火星文等,她都叫做字符串。

    • 强调⚠️ 引号!引号!引号!!!

    2、整数 int

    整数:英文为integer,简写做int。

    year = 2019
    month = -12 # 可以为负数
    day = -24 + 12  # 可以做运算
    print('Today is',year,month,day)
    # Today is 2019 -12 -12
    

    以上,20191224这三个都是整数。

    没有引号包裹的、没有小数点的、整数数字,就是整数类型。

    注意⚠️:一旦数字被引号包裹,他就是字符串类型。

    3、浮点数 float

    浮点数: 英文名是float,与整数(int)和字符串(str)不同。

    浮点数没有简写。 不过非常好识别,它比整数多了一个小数点『. 』。

    换言之,带小数点的数字即是浮点数。

    比如下列代码中的数字都是浮点数。

    print(20.19)
    # 20.19
    print(-12.25) # 可以为负数
    # -12.25
    print(520.1314 + 07.11) # 可以做数学运算
    # 527.2414

    注意⚠️:同样不能有引号包裹。

    浮点数还有一个计算结果有精度误差的问题。详见下边番外篇。

    二、类型查询

    • type()函数

    1、type()函数作用

    查询、获取数据的类型。

    既然存在不同的类型,我们就需要一个类型检查工具,来告诉我们这个数据究竟是什么类型。

    2、type用法

    只需把查询的内容放在括号里就行。

    name = '俺是字符串'
    value = 123
    flr = 12.4
    numberStr = '123'
    
    # 如下使用type: print(type(name))
    # <class 'str'> print(type(value))
    # <class 'int'> print(type(flr))
    # <class 'float'> print(type(numberStr))
    # <class 'str'> 尽管是123数字,只要包裹在英文引号中就是字符串

    如上打印结果,代表类型的样式为<class '类型'>。其中:

    • str代表字符串,全称为string

    • 整数的英文简称为int,全称为integer

    • float就是浮点数类型

    三、类型转换

    • str()函数
    • int()函数
    • float()函数

    所谓,道不同不相为谋,不同类型的数据不能拼接在一起。也不能一起共事。为了让他们一起共事,就有了类型转换这么一个“和稀泥”的操作:

    python是类型严格的语言,不像JS那样的若类型语言,会自动进行类型的隐式转换。所以当不同类型的数据进行结合时,需要我们手动强制进行类型转换。

    强类型语言里,不同类型的数据之间需要进行类型转换才能一起“共事”。

    比如,1+'1'这么写,在js中肯定没问题,因为会进行隐式类型转换,把数字1变成字符串1,然后就变成了字符串拼接,最后的到11。

    但是python不会进行隐式类型转换,他发现你用数字1+字符串1,就会报语法错误。

    因此当我们把两个不同类型的数据进行结合处理时,应该手动将其中一方的类型转换统一成跟另一方一样的。

    依旧以1+'1'为例,进行手动类型转换的方法示例:

    a = 1
    b = '1'
    # print(a + b)
    # # 这么写报错。改正如下: print(a + int(b)) # 2,将字符串转换为int类型,进行加法运算 print(str(a) + b) # 11,将整数转为字符串类型,进行字符串拼接。

    负责转换数据类型的函数一共有3种:str()、 int()和float()。

    1、str()函数

    str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。这个数据就能成为字符串类型。

    1-1、整数/浮点数 - 转为字符串

    运用:

    # str()
    who = '我'
    age = 18
    item = '岁'
    

    print(who+str(age)+item)
    # 我18岁

    #通过str(age)一个步骤,可以将整数类型的【18】转化为字符串类型的【'18'】,成功完成数据拼接。

    以上是一种整数转换为字符串的方法。

    1-2、第二种整数转换为字符串的方法 - 直接上引号

    借用【引号】的帮助,直接将数字转为字符串:

    # str()
    who = '我'
    age = 18
    item = '岁'
    

    print(who+'18'+item)
    # 我18岁

    缺陷:引号内我们使用的是数字,而不是变量名age。这是因为,当我们使用引号时,引号里的东西,都会被强制转换为字符串格式。如果使用变量名age,这里就会把age这个变量名转换为字符串,打印出“我age岁”

    2、int()函数

    将其他数据转换为整数类型。当参数为小数时,会做抹零、取整处理。不会进行四舍五入的哦!

    使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)。

    # int
    num1 = '1'
    num2 = '8'
    print(int(num1)+int(num2))
    # 9

    注意⚠️:只有符合整数规范的字符串类数据,才能被int()强制转换:

    • 首先,整数形式的字符串比如'1'和'8',可以被int()函数强制转换。

    • 其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换

    • 最后,小数形式的字符串,由于Python的语法规则,也不能直接使用int()函数强制转换。比方说下列代码,如果点击运行,程序会报错。

    print(int('1.8'))
    

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

    # (值异常:浮点类型字符串无法使用int()强制转换)

    虽然浮点形式的字符串,不能使用int()函数。但浮点数是可以被int()函数强制转换的

    可以先将字符串转换为浮点类型,再将浮点数转换为int类型。

    print(int(float('1.8'))) # 1,先将字符串'1.8'转换为浮点数1.8,再直接对浮点数1.8取整的到数字1
    

    3、float()函数

    3-1、使用

    将需要转换的数据放在括号里,像这样:float(数据)。

    3-2、规则

    float()函数也可以将整数和字符串转换为浮点类型。

    但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。如'2.3','52.1'这样,而不是'我是汉子'这样的纯文字

    weight = 43.2
    print(float(height))
    # 43.2

    四、数据类型的应用

    • 字符串拼接
    • 四则运算

    1、四则运算

    Python里的整数、浮点数和数学意义的整数、小数是一样的,它最重要的作用是与运算符号结合,进行数学计算。

    2、Python中的运算符

    运算符 含义 示例
    + 1 + 1
    - 2 - 1
    * 1 * 2
    / 4 / 2
    % 取模 - 返回除法的余数 5 % 2 得到5除以2的余数
    ** 幂 - 返回x的y次幂 2 ** 3 得到2的3次方
    // 取整除 - 返回商的整数部分 11 // 2 得到11/2的商再取整

    对上表中的运算符写几个例子运行一下:

    # 运算符示例
    print(20+19)
    # 39
    print(2020-1993)
    # 27
    print(20191231*20200101)
    # 407864905514331
    print(2020/10)
    # 202.0
    print(23%45)
    # 23
    print(2**3) # 8 print(11//2) # 5

    3、运算优先级

    和我们平时的计算优先级是一样的:

    从左到右计算,括号里的优先计算。

    先乘除,后加减。

    # 先口算,再运行,看你算的对不对。
    print(1234*124+325235-1251) print((6236-124)/125+326*23)

    4、字符串拼接

    这就和Javascript中的一样了 非常简单,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了。

    # 字符串拼接示例
    a = '我'
    b = '叫'
    c = '小'
    d = '石'
    e = '头'
    

    print(a+b+c+d+e) # 我叫小石头

    切记⚠️:做字符串拼接也好、运算符表达式也好,+号或其他符号两边的数据类型必须一致,否则会报错TypeError(详见第三篇错误类型合集B项错误记载)。

    五、番外 - 浮点数计算精度问题

    运算下边的代码:

    print(0.55+0.3)
    # 0.8500000000000001
    

    发现打印结果并不显而易见的0.85,而是0.8500000000000001。

    为什么不是【0.85】,而尾巴多了一个【1】呢?这是因为,Python计算浮点数时,会先把0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,如下:

    # 进制转换
    0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制)
    0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)
    

    而在这个转化过程中存在误差,这样,就造成了我们与程序计算结果的差异。

    然后,这俩二进制数通过二进制法则运算后,再通过复杂的计算公式,将二进制结果转成十进制小数。

    2019.12.31

  • 相关阅读:
    (三)Java秒杀项目之实现秒杀功能
    多模块环境下修改包名Rename directory与Rename package
    pom.xml标签页名称
    mac终端命令
    @Select 数据表的字段与实体类的属性值
    Markedown换行
    链表问题-不开辟新空间
    Java机器学习框架(1)【待完成】
    奇妙的算法【3】- 贪心算法【待完成】
    奇妙的算法【2】- 韩信点兵问题优化
  • 原文地址:https://www.cnblogs.com/padding1015/p/12127966.html
Copyright © 2011-2022 走看看