[关闭]
@yangwenbo 2021-08-23T17:25:38.000000Z 字数 4547 阅读 395

风变编程-Python基础语法

章节二:数据类型与转换

1. 数据类型

在Python里,最常用的数据类型有三种——字符串(str)、整数(int)和浮点数(float)

1.1 字符串

首先,我们来认识一下字符串,字符串英文string,简写str

  1. name='千寻'
  2. print("Let's play")

字符串的识别方式非常简单——有层名为【引号】的皮,只要是被【单/双/三引号】这层皮括起来的内容,不论那个内容是中文、英文、数字甚至火星文。只要是被括起来的,就表示是字符串类型

在这组代码里,【'千寻'】、【"Let's play"】都属于字符串类型。

  1. name='千寻'
  2. print("Let's play")

字符串,顾名思义,就是由一个个字符串起来的组合,字符可以是一个数字、一个字母、一个文字,甚至是一个符号。字符串可以表达现实世界里的词、语句、表达式等

举例:
image.png-206.5kB

要点提示:
1.文本用『英文引号』括住,创建字符串;
2.将字符串赋值给变量;
3.使用4个print()函数,分别打印4个变量。

重要的事情说三遍:字符串类型必须有【引号】的辅助。不然字符串就只能被报错,无尽地呻吟~

1.2 整数

这就是我们要介绍的,常见数据类型中的第二种:整数,整数英文为integer,简写做int。Python世界的整数其实和现实世界数学中定义的一样:是正整数、负整数和零的统称,是没有小数点的数字

整数其实是一个不带小数点的数字,可以不穿名为引号的马甲,直接跟print()函数组团搞输出,比如下列代码:

image.png-57.9kB

字符串有【引号】的保护,可以和符号及其他文字类数据,譬如中文、英文随意组合。

而整数脱掉了【引号】马甲,只能『单独行动』。一旦碰上符号及其他文字类数据,譬如中文、英文,立马被报错秒杀。

比如像这样:

image.png-89.9kB

1.3 浮点数

浮点数非常好识别,它比整数多了一个小数点『.』,比如下列代码中的数字都是浮点数。

  1. 1.0
  2. 3.14159
  3. -0.33

浮点数的英文名是float,与整数(int)和字符串(str)不同,浮点数没有简写。

浮点数可能让你有点眩晕,这是因为,与【整数运算结果永远精确】的特点不同,计算机里浮点数的运算是不精确的,会有四舍五入的误差

比如像这样:

image.png-61.2kB

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

  1. # 进制转换
  2. 0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制)
  3. 0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)

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

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

这就是我们最常接触的三种数据类型:字符串、整数、浮点数的全部内容了

image.png-101.7kB

2. 数据的应用

2.1 四则运算

Python里的整数、浮点数和数学意义的整数、小数是一样的,它最重要的作用是与运算符号结合,进行数学计算。接下来我们看一下Python如何利用整数,浮点数进行四则运算。

但是Python世界的算数运算符,和我们平时在纸上写的运算符号有相同点,也有不同点。

首先,我们来看看Python世界的运算符。

image.png-135.9kB

咱们再说说一样的——运算优先级:Python世界的运算优先级,和我们平时的计算优先级是一样的

image.png-76.4kB

比如像这样:

image.png-64.5kB

详解:来看看【print((5025-525)/100+18*17)】的运算顺序:最先计算括号里的【5025-525】。然后将【5025-525】的结果除以100,第三步则计算【18*17】,最后将除法和乘法的结果相加。

2.2 字符串的拼接

比方说,我有以下几个零碎的『词语』——变量,然后想合成这样一句话:我是风变编程学员007,在镜像世界里进行身份验证,该怎么做呢?

  1. hero = '我'
  2. organization = '风变编程'
  3. identity = '学员'
  4. action = '是'
  5. ID = '007'
  6. # 输出结果
  7. 我是风变编程学员007

这就涉及到了——字符串拼接。字符串拼接的方法可简单了,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了。

比如像这样

image.png-105.4kB

有了拼接符号,我不仅可以输出【我是风变编程学员007】,还可以调整变量的拼接顺序,输出不同的内容

还可以像这样

image.png-117.9kB

这就是我们字符串拼接部分的要点:

image.png-74kB

2.3 数据类型的查询——type()函数

举例:
image.png-129.8kB

梦想是美好的,但现实是残酷的,我们立马被报错【TypeError:can only concatenate str (not "int") to str】(类型错误:只能将字符串与字符串拼接)无尽地呻吟。

虽然通过报错提示,我知道了错误来源于print()函数内,数据类型的拼接错误。

但是到底是哪个数据类型不对呢?我们观察上面代码里变量的值,发现了【number = 153】中的【153】没有【引号】和【小数点】,是一个整数,原来『奸细』就是它。难怪当时在终端区会给我报错说:数据类型不同呢。

但是,由于变量是由我们定义的,所以我们可以用人眼查找错误源。

在未来,当我们学会了更为复杂的命令,可以用代码对其他人提问,收集其他人的答案时,我们无法确定他们回复你的内容,是用什么数据类型写的。

所以,我们要学会善用Python的魔法,使用Python中一个已有的,既简单又实用的函数,来帮助我们查询不确定数据的类型。而这个函数,就是type()函数。

那么,这个type()函数要怎么使用呢?答案就是:只需把查询的内容放在括号里就行。

image.png-78kB

比如像这样

image.png-152.5kB

终端里出现的结果,是不是除了4个,还有1个?

3. 数据转换

在type()函数的帮助下,我们知道也可以查找出字符串里面出现的『奸细』——整数。

可是为什么不同类型的数据不能拼接在一起呢?一句话:圈子不同不相融。

要如何把两个不同类型的数据拼在一起呢?这就涉及到了我们这关最后一个知识点:数据转换


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

3.1 str()函数

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

比如像这样

image.png-100.5kB

整数转换字符串类型的方法是不是很方便?那如果我告诉你,还有一种转换成字符串的方法:

image.png-100.1kB

  1. print(str(number)+expression+action+unit+magic)
  2. print('153'+expression+action+unit+magic)

你看,我们是不是用两种不同的写法:str()函数和引号,输出了同一种结果?

可是,为什么引号内我们使用的是数字,而不是变量名number呢?这是因为,当我们使用引号时,引号里的东西,都会被强制转换为字符串格式。

所以,如果我们把变量名number放进引号里后,被强制转换为字符串的,将是变量名number,而不是变量名代表的数字153。

3.2 int()函数

既然整数类型能转换为字符串,那字符串类型能转换为整数吗?那必须的。

将数据转换为整数类型的方法也很简单,就是int()函数。其使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)

比如像这样

image.png-73.7kB

要点提示:
1. int()函数转换数据类型;
2. 运算符+计算;
3. print()函数】


不过对于int()函数的使用,大家要注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换

别看它虽然只有一句话,但它其实带有三层含义:首先,整数形式的字符串比如'6'和'1',可以被int()函数强制转换。

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

最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。

比方说下列代码,如果点击运行,程序会报错【ValueError:invalid literal for int() with base 10: '3.8'】(值异常:浮点类型字符串无法使用int()强制转换)。

image.png-97.7kB

这是不是意味着,浮点数不能转换成整数类型了?

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

image.png-58.6kB

上方的代码串,就是一条将浮点数3.8强制转换的语句。但是,为什么输出的结果是3呢?

你看,int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。

3.3 float()函数

可是,如果遇到这种情况:字符串就是小数形式,比如'3.8'这种。我不想让它变为整数3,想让它保持小数形式的3.8,那我要怎么做呢?

这就涉及到了——float()函数。

首先float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)。

其次,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式

比如像这样

image.png-105.6kB

下面,我们通过一张图小结一下这三个函数。

image.png-205.2kB

4. 本章小结

image.png-132.6kB

5. 习题练习

5.1 习题一

1.练习介绍:

在Python的世界,最常用的数据类型有三种:字符串(str)、整数(int)和浮点数(float)。

在数据拼接中,为了将不同的信息进行整合,可以使用拼接符号。但是,如果数据非字符串类型,则无法进行拼接。

此时,我们可以使用数据转换函数str(),将数据转换为字符串类型后,再进行拼接。

2.题目要求:

  1. number1 = 1
  2. number2 = 2
  3. unit1 = '人'
  4. unit2 = '眼'
  5. line1 = '我编程累'
  6. line2 = '是bug相随'
  7. sentence1 = '碎掉的节操满地堆'
  8. sentence2 = '我只求今日能早归'

请运用所给变量打印两句话。
第一句话:1人我编程累碎掉的节操满地堆
第二句话:2眼是bug相随我只求今日能早归

方法一
使用str()函数打印两句话

image.png-166.3kB

方法二
使用引号打印两句话

image.png-164.3kB

5.2 习题二

1.练习介绍

在数据拼接中,为了将不同的信息进行整合,可以使用拼接符号。
但是,如果数据非字符串类型,则无法进行拼接。此时,我们可以使用数据转换函数str(),将数据转换为字符串类型后,再进行拼接。
并且针对不同类型的数据,我们需要经历多次转换,最后才能转为字符串类型。

2.题目要求

  1. slogan = '脸黑怪我咯'
  2. number = '7.8'
  3. unit = '张'
  4. sentence = '蓝票一个SSR都没有'

请运用所给变量,使用数据转换str()、int()、float()及数据拼接符号+,打印一句话: 脸黑怪我咯7张蓝票一个SSR都没有

image.png-125.9kB

备注:先转为小数,再取整,转化为字符串拼接

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注