【记录】Python的一些基础知识

Python的一些基础知识

一、变量

在改进猜数小游戏之前,有些Python基础知识需要掌握一下。

当为一个值起名字的时候,它将会存储在内存中,我们把这块内存称为变量variable。在大多数语言中,把这种行为称为给变量赋值把值存储在变量中。变量就是一个名字,通过这个名字,可以找到我们想到的东西。
在这里插入图片描述
变量为什么不叫“恒量”而叫“变量”?正是因为它是可变的。再看另一个例子:
在这里插入图片描述该例子先创建一个变量,名字叫x,给它初始化赋值为3,然后又给它赋值为5(此时3就被5替换掉);接下来创建另外一个变量y,并初始化赋值为8;最后创建第三个变量z,它的值是变量x和y的和。

同样的方式也可以运用到字符串(由数字、字母、下划线组成的一串字符)中:
在这里插入图片描述这种字符串加字符串的语法,在Python里称为字符串的拼接。
使用变量需要注意:
1. 在使用变量之前,需要对其先赋值。
2. 变量名可以包括字母、数字、下画线,但变量名不能以数字开头,这与大多数高级语言是一样的。
3. 字母可以是大写或小写,但大、小写是不同的。也就是说,YANCONGyancong对于Python来说是完全不同的两个名字。
4. 等号(=)是赋值的意思,左边是名字,右边是值,不能写反了。

二、字符串

到目前为止,所了解到的字符串就是引号内的一切东西。字符串也称为文本,文本和数字是截然不同的。如果直接让两个数字相加,那么Python会直接将数字相加后的结果告诉你:
在这里插入图片描述但是如果在数字的两边加上了引号,就变成了字符串的拼接,这正是引号带来的差别:

在这里插入图片描述
要告诉Python你在创建一个字符串,就要在字符两边加上引号,可以是单引号或双引号。但必须成对,不能一边用单引号,另一边却用双引号,这样Python就不知道你到底想干嘛了:
在这里插入图片描述
那如果字符串内容中需要出现单引号或双引号,怎么办?
在这里插入图片描述
像上面这样写,Python会误解你的意思(认为’Let’是一个字符串,而s go’是另一个不完整的字符串),从而产生错误。有两种方法来改进。第一种比较常用,就是使用转义符号(\)对字符串中的引号进行转义,这样Python就知道这个引号是要直接输出的:
在这里插入图片描述
还有一种方法,就是利用Python既可以用单引号也可以用双引号表示字符串这一特点,只要用上不同的引号表示字符串,那么Python就不会误解你的意思。
在这里插入图片描述

三、改进小游戏

改进要求:
1. 当用户猜错的时候程序应该给点提示,例如,告诉用户当前输入的值和答案相比是大了还是小了。
2. 每运行一次程序只能猜一次,应该提供多次机会给用户猜测,至少要三次。
3. 每次运行程序,答案可以是随机的。

四、条件分支

第一个改进要求:当用户猜错的时候程序应该给点提示,例如告诉用户当前输入的值和答案相比是大了还是小了。程序改进后(假如答案是8):

1. 如果用户输入3,程序应该提示比答案小了。
2. 如果用户输入9,程序应该提示比答案大了。

这就涉及比较的问题了:大于号(>)、小于号(<)、等于号(==)以及不等于号(!=)。

Python的比较操作符为<<=>>===!=

在IDLE中输入两个数以及比较操作符,Python会直接返回比较后的结果:
在这里插入图片描述
这里1和3进行比较,判断1是否小于3,在小于号左右两边分别留了一个空格,这不是必需的,但代码量一多,看上去会美观很多。

还记得if-else吧?如果程序只是一个命令清单,那么只需要笔直地一条路走到黑,但至少应该把程序设计得更聪明点——可以根据不同的条件执行不同的任务,这就是条件分支

if 条件:
	条件为真(True)执行的操作
else:
	条件为假(False)执行的操作

第一个改进要求的代码:

if guess == secret:
	print ("你是我心里的蛔虫吗!")
else:
	if guess > secret:
		print ("大啦大啦")
	else:
		print ("小啦小啦")

分析:当guesssecret变量的值相等的时候,执行print语句;否则判断guess大还是secret大,并print相应的提示信息。

五、初始循环

第一个改进要求实现了,可是用户还是不高兴,他们会抱怨道:“为什么我要不停地重新运行这个程序呢?难道不能每次运行多给几次输入的机会吗?”

我们这个程序还好,几次尝试就可以成功了,但如果范围扩大为1~100,那么尝试的次数就要随之增加,总让用户不断地重新打开程序,这种程序的体验未免就太差了。

第二个改进要求:程序应该提供多次机会给用户猜测,专业点儿来讲就是程序需要重复运行某些代码。下面介绍Python的while循环语法

while 条件:
	条件为真(True

修改好的代码如下:

在这里插入图片描述
分析:先接收一次用户的输入,把值转换成整数后赋值给guess变量,然后判断该值是否为正确答案(8),如果是就不会执行循环体的内容(因为while循环执行的条件是guess不等于8);否则进入循环体,依次判断用户输入的数是大于8还是小于8,并分别给出提示信息。最后,要求用户再一次尝试。

但是这样改的话,程序的逻辑变成了:只有用户输入正确的数字,循环才能够结束。这就与第二个改进要求有点不同了。

其实可以使用and逻辑操作符(可以理解为串联电路and左右两边都为1时,结果才为1,但凡有一个为0,结果就为0),Python的逻辑操作符可以将任意表达式连接在一起,并得到一个布尔类型的值。布尔类型只有两个值:TrueFalse,就是真与假。来看例子:
在这里插入图片描述
很明显1 > 2客观上是不存在的,所以这个条件是个伪命题,因此and的结果为False。使用and逻辑操作符将左右两个条件串起来的时候,只有当两者同时成立,结果才能是True;否则均为False

六、引入外援

第三个改进要求:为了防止答案外泄,需要每次运行程序时答案均是随机生成的。需要引入一个“外援”帮忙才行:random模块。

Python附带了非常多实用的模块供调用。其中,random模块就是与生成随机数相关的模块,这个模块里边有一个函数为randint(),它会返回一个随机的整数:
在这里插入图片描述
在使用一个外部模块之前,需要先导入。import random就是将random模块导入到当前文件中。然后调用random.randint(1, 10)函数,随机获取一个1~10的整数。

可以利用这个函数来进一步改进小游戏:

在这里插入图片描述

分析:该代码中,while语句使用and逻辑操作符将两个条件串联起来,只有当guesssecret变量的值不同,并且times的值小于3的时候,才会执行循环体的内容。而只要其中一个条件不成立,就会果断地退出循环。最后,只需要检查times是否小于3,即可判断用户是猜中了答案还是超过了允许的尝试次数。

七、闲聊数据类型

Python有很多重要的数据类型,字符串类型已经简单讲过,后面还会对字符串进行深入的探讨,下面介绍一些Python的数据类型(数值型):如整型、浮点型、布尔类型、复数类型等。

整型

整型就是平时所见的整数,Python 3的整型已经与长整型进行了无缝结合,它的长度不受限制,如果说非要有个限制,那只限于计算机的虚拟内存总数。所以,使用Python 3可以很容易地进行大数运算:
在这里插入图片描述

浮点型

浮点型就是平时所说的小数,例如,圆周率3.14就是一个浮点型数据。Python区分整型和浮点型的唯一方式,就是看有没有小数点。

谈到浮点型,就不得不说一下E记法E记法也就是平时所说的科学计数法,用于表示特别大和特别小的数。打个比方,如果给Python提供一个非常极端的数据,那么它可能会采用E记法来表示:
在这里插入图片描述

布尔类型

布尔类型是计算机中最基本的类型,它是计算机二进制世界的体现,一切都是0和1。Python中的布尔类型只有两种值:TrueFalse。(注意:首字母都是大写,与C++、JavaScript中的小写有所不同)

例如,1 + 1 > 3,我们都知道是错的,Python也知道:
在这里插入图片描述
布尔类型事实上是特殊的整型,尽管布尔类型用TrueFalse来表示“真”与“假”,但布尔类型可以当作整数来对待,True相当于整型值1,False相当于整型值0,因此下面这些运算都是可以的(最后的例子报错是因为False相当于0,而0不能作为除数)。
在这里插入图片描述
注意:把布尔类型当成1和0来参与运算这种做法是不妥的,容易引起代码的混乱。

类型转换

接下来介绍几个与数据类型紧密相关的函数:int()float()str()

int()的作用是将一个字符串或浮点数转换为一个整数,如果是浮点数转换为整数,Python会采取“截断”处理,就是把小数点后的数据直接砍掉,而不是四舍五入:
在这里插入图片描述
float()的作用是将一个字符串或整数转换成一个浮点数(就是小数):
在这里插入图片描述
str()的作用是将一个数或任何其他类型转换成一个字符串:
在这里插入图片描述

获得关于类型的信息

有时候可能需要判断一个变量的数据类型,例如,程序需要从用户那里获取一个整数,但用户却输入了一个字符串,就有可能引发一些意想不到的错误或导致程序崩溃。Python其实提供了一个函数,可以明确告诉我们变量的类型,这就是type()函数:
在这里插入图片描述

八、常用操作符

算数操作符

Python的算术操作符大多数和数学运算符一样:+ - * / % ** //

前面四个就是加、减、乘、除。

此外,当想对一个变量本身进行算术运算的时候,写a = a + 1b = b - 3这类操作符特别麻烦,在Python中可以做一些简化:
在这里插入图片描述
//表示地板除法,计算结果取比商小的最大整型值(也就是舍弃小数,取整的意思),使用地板除法,无论是整型还是浮点型,都将舍弃小数部分:
在这里插入图片描述
%表示求余数的意思,也叫取模运算:
在这里插入图片描述

优先级问题

当多个运算符同时出现在一个表达式的时候,需要严格按照优先级规定的级别来进行运算。

先乘、除,后加、减,如有括号先运行括号里边的。

举个例子:-3 * 2 + 5 / -2 - 4

相当于:(-3) * 2 + 5 / (-2) - 4

Python还有一个特殊的乘法,就是双星号**,也称为幂运算操作符。

例如3**2,双星号左侧的3称为底数,右侧的2称为指数,把这样的算式称为3的2次幂。

在使用Python进行幂运算的时候,需要注意的一点是优先级问题。

在这里插入图片描述

从上面的结果可以看出:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低

比较操作符

比较运算符包括:< <= > >= == !=

比较操作符根据表达式的值的真假返回布尔类型值:
在这里插入图片描述

逻辑操作符

逻辑操作符包括:and or not

and操作符之前已经介绍过,在实例中也多次使用。当只有and操作符左边的操作数为True,且右边的操作符同时为True的时候,结果才为True
在这里插入图片描述
or操作符(可以理解为并联电路)与and操作符不同,or操作符只需要左边或者右边任意一边为真,结果都为真;只有当两边同时为假,结果才为假:
在这里插入图片描述
not操作符是一个一元操作符,它的作用是得到一个和操作数相反的布尔类型的值:
在这里插入图片描述
另外,可能还会看到下面这样的表达式:

5 > 3 < 4

这在其他编程语言中可能是不合法的,但在Python中是行得通的,它事实上被解释为:

5 > 3 and 3 < 4

将目前接触过的所有操作符优先级合并在一起,如图所示。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值