@yangwenbo
2021-08-23T17:25:38.000000Z
字数 4547
阅读 391
风变编程-Python基础语法
在Python里,最常用的数据类型有三种——字符串(str)、整数(int)和浮点数(float)。
首先,我们来认识一下字符串,字符串英文string,简写str
name='千寻'
print("Let's play")
字符串的识别方式非常简单——有层名为【引号】的皮,只要是被【单/双/三引号】这层皮括起来的内容,不论那个内容是中文、英文、数字甚至火星文。只要是被括起来的,就表示是字符串类型。
在这组代码里,【'千寻'】、【"Let's play"】都属于字符串类型。
name='千寻'
print("Let's play")
字符串,顾名思义,就是由一个个字符串起来的组合,字符可以是一个数字、一个字母、一个文字,甚至是一个符号。字符串可以表达现实世界里的词、语句、表达式等
举例:
要点提示:
1.文本用『英文引号』括住,创建字符串;
2.将字符串赋值给变量;
3.使用4个print()函数,分别打印4个变量。
重要的事情说三遍:字符串类型必须有【引号】的辅助。不然字符串就只能被报错,无尽地呻吟~
这就是我们要介绍的,常见数据类型中的第二种:整数,整数英文为integer,简写做int。Python世界的整数其实和现实世界数学中定义的一样:是正整数、负整数和零的统称,是没有小数点的数字。
整数其实是一个不带小数点的数字,可以不穿名为引号的马甲,直接跟print()函数组团搞输出,比如下列代码:
字符串有【引号】的保护,可以和符号及其他文字类数据,譬如中文、英文随意组合。
而整数脱掉了【引号】马甲,只能『单独行动』。一旦碰上符号及其他文字类数据,譬如中文、英文,立马被报错秒杀。
比如像这样:
浮点数非常好识别,它比整数多了一个小数点『.』,比如下列代码中的数字都是浮点数。
1.0
3.14159
-0.33
浮点数的英文名是float,与整数(int)和字符串(str)不同,浮点数没有简写。
浮点数可能让你有点眩晕,这是因为,与【整数运算结果永远精确】的特点不同,计算机里浮点数的运算是不精确的,会有四舍五入的误差。
比如像这样:
为什么不是【0.85】,而尾巴多了一个【1】呢?这是因为,Python计算浮点数时,会先把0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,如下:
# 进制转换
0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制)
0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)
而在这个转化过程中存在误差,这样,就造成了我们与程序计算结果的差异。
然后,这俩二进制数通过二进制法则运算后,再通过复杂的计算公式,将二进制结果转成十进制小数。
这就是我们最常接触的三种数据类型:字符串、整数、浮点数的全部内容了
Python里的整数、浮点数和数学意义的整数、小数是一样的,它最重要的作用是与运算符号结合,进行数学计算。接下来我们看一下Python如何利用整数,浮点数进行四则运算。
但是Python世界的算数运算符,和我们平时在纸上写的运算符号有相同点,也有不同点。
首先,我们来看看Python世界的运算符。
咱们再说说一样的——运算优先级:Python世界的运算优先级,和我们平时的计算优先级是一样的。
比如像这样:
详解:来看看【print((5025-525)/100+18*17)】的运算顺序:最先计算括号里的【5025-525】。然后将【5025-525】的结果除以100,第三步则计算【18*17】,最后将除法和乘法的结果相加。
比方说,我有以下几个零碎的『词语』——变量,然后想合成这样一句话:我是风变编程学员007,在镜像世界里进行身份验证,该怎么做呢?
hero = '我'
organization = '风变编程'
identity = '学员'
action = '是'
ID = '007'
# 输出结果
我是风变编程学员007
这就涉及到了——字符串拼接。字符串拼接的方法可简单了,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了。
比如像这样
有了拼接符号,我不仅可以输出【我是风变编程学员007】,还可以调整变量的拼接顺序,输出不同的内容。
还可以像这样
这就是我们字符串拼接部分的要点:
举例:
梦想是美好的,但现实是残酷的,我们立马被报错【TypeError:can only concatenate str (not "int") to str】(类型错误:只能将字符串与字符串拼接)无尽地呻吟。
虽然通过报错提示,我知道了错误来源于print()函数内,数据类型的拼接错误。
但是到底是哪个数据类型不对呢?我们观察上面代码里变量的值,发现了【number = 153】中的【153】没有【引号】和【小数点】,是一个整数,原来『奸细』就是它。难怪当时在终端区会给我报错说:数据类型不同呢。
但是,由于变量是由我们定义的,所以我们可以用人眼查找错误源。
在未来,当我们学会了更为复杂的命令,可以用代码对其他人提问,收集其他人的答案时,我们无法确定他们回复你的内容,是用什么数据类型写的。
所以,我们要学会善用Python的魔法,使用Python中一个已有的,既简单又实用的函数,来帮助我们查询不确定数据的类型。而这个函数,就是type()函数。
那么,这个type()函数要怎么使用呢?答案就是:只需把查询的内容放在括号里就行。
比如像这样
终端里出现的结果,是不是除了4个,还有1个?
在type()函数的帮助下,我们知道也可以查找出字符串里面出现的『奸细』——整数。
可是为什么不同类型的数据不能拼接在一起呢?一句话:圈子不同不相融。
要如何把两个不同类型的数据拼在一起呢?这就涉及到了我们这关最后一个知识点:数据转换。
负责转换数据类型的函数一共有3种:str()、 int()和float()。
str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。这个数据就能摇身一变,成为字符串类型。
比如像这样
整数转换字符串类型的方法是不是很方便?那如果我告诉你,还有一种转换成字符串的方法:
print(str(number)+expression+action+unit+magic)
print('153'+expression+action+unit+magic)
你看,我们是不是用两种不同的写法:str()函数和引号,输出了同一种结果?
可是,为什么引号内我们使用的是数字,而不是变量名number呢?这是因为,当我们使用引号时,引号里的东西,都会被强制转换为字符串格式。
所以,如果我们把变量名number放进引号里后,被强制转换为字符串的,将是变量名number,而不是变量名代表的数字153。
既然整数类型能转换为字符串,那字符串类型能转换为整数吗?那必须的。
将数据转换为整数类型的方法也很简单,就是int()函数。其使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)
比如像这样
要点提示:
1. int()函数转换数据类型;
2. 运算符+计算;
3. print()函数】
不过对于int()函数的使用,大家要注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换。
别看它虽然只有一句话,但它其实带有三层含义:首先,整数形式的字符串比如'6'和'1',可以被int()函数强制转换。
其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换。
最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。
比方说下列代码,如果点击运行,程序会报错【ValueError:invalid literal for int() with base 10: '3.8'】(值异常:浮点类型字符串无法使用int()强制转换)。
这是不是意味着,浮点数不能转换成整数类型了?
不,虽然浮点形式的字符串,不能使用int()函数。但浮点数是可以被int()函数强制转换的。
上方的代码串,就是一条将浮点数3.8强制转换的语句。但是,为什么输出的结果是3呢?
你看,int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。
可是,如果遇到这种情况:字符串就是小数形式,比如'3.8'这种。我不想让它变为整数3,想让它保持小数形式的3.8,那我要怎么做呢?
这就涉及到了——float()函数。
首先float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)。
其次,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。
比如像这样
下面,我们通过一张图小结一下这三个函数。
1.练习介绍:
在Python的世界,最常用的数据类型有三种:字符串(str)、整数(int)和浮点数(float)。
在数据拼接中,为了将不同的信息进行整合,可以使用拼接符号。但是,如果数据非字符串类型,则无法进行拼接。
此时,我们可以使用数据转换函数str(),将数据转换为字符串类型后,再进行拼接。
2.题目要求:
number1 = 1
number2 = 2
unit1 = '人'
unit2 = '眼'
line1 = '我编程累'
line2 = '是bug相随'
sentence1 = '碎掉的节操满地堆'
sentence2 = '我只求今日能早归'
请运用所给变量打印两句话。
第一句话:1人我编程累碎掉的节操满地堆
第二句话:2眼是bug相随我只求今日能早归
方法一
使用str()函数打印两句话
方法二
使用引号打印两句话
1.练习介绍
在数据拼接中,为了将不同的信息进行整合,可以使用拼接符号。
但是,如果数据非字符串类型,则无法进行拼接。此时,我们可以使用数据转换函数str(),将数据转换为字符串类型后,再进行拼接。
并且针对不同类型的数据,我们需要经历多次转换,最后才能转为字符串类型。
2.题目要求
slogan = '脸黑怪我咯'
number = '7.8'
unit = '张'
sentence = '蓝票一个SSR都没有'
请运用所给变量,使用数据转换str()、int()、float()及数据拼接符号+,打印一句话: 脸黑怪我咯7张蓝票一个SSR都没有
备注:先转为小数,再取整,转化为字符串拼接