大白话python——下

5.7 运算符

5.7.1算数运算符

运算符含义举例
+1+1
-1-1
*1*1
/1/1
//整除5//2 结果等于2
%取余3%2 结果等于1
**指数1**2 表示1 的二次方
()括号(1+2)**3

这些算数运算符其实在我们之前的求学生涯中早已见过,而较为特殊的——整除 在python当中取值规则为向下取整,就像例子中的 5//2 的计算值为2 。

当然这些运算符也存在优先级:

() 高于 ** 高于 * / // % 高于 + -

5.7.2 赋值运算符

在上册中,我们提及到计算机的 == 是判断两端是否相等的符号,而 = 才是用于赋值作用的运算符。而计算机中的赋值与我们日常习惯的从左到右不同,相反地赋值是从右往左。

num1=1
num2=2  #给变量num1 和 num2 赋值
print(num1)	 # 1 	
print(num2)  # 2 
print(num1==num2) # False

但是我们会发现,一行只能个一个变量赋值,是不是代码看起来有点繁琐了? 那接下来介绍一种多变量赋值。

num1,string1,float1=6,'fdt',3.14
print(num1, string1,float1)
# 6,'fdt',3.14

这样看起来就相对简洁点。如果我们想对不同变量进行相同赋值,又该怎么办呢?请看下面的例子。

a=b=100
print(a,b)

5.7.3 复合赋值运算符

简单来讲就是 结合上面算数运算符赋值运算符两者,起到简便代码与方便运算的作用。

运算符介绍解释
+=加一个数a+=1相当于 a=a+1
-=减一个数a-=1 相当于 a=a-1
*=乘一个数a*=1 相当于 a=a*1
/=除以一个数a/=1 相当于 a=a/1
//=整除一个数a//=1 相当于 a=a//1
%=对一个数取余a%=1 相当于 a=a%1
**=取一个数的次方a**=1 相当于 a=a**1

更详细地解释 就是对a的值 修改后 再赋值给a

# 每段代码都是基于lys=18,而一起运行的时候并不为对于的结果
lys=18

lys+=1
print(lys) # 19

lys-=1
print(lys) # 17

lys*=2     #lys=lys*2
print(lys) # 36

5.7.4 比较运算符

比较运算符 就是结合大小于号与赋值符号的复合运算符。返回值就是前面提及的布尔类型(Ture、False)

运算符解释
>左值是否大于右值
<左值是否小于右值
==左右是否相等
!=左右是否不等
>=左值是否大于或等于右值
<=左值是否小于或等于右值

下面来看些例子。

a=5
b=9

print(a<b)  #Ture

print(a>b)	#Flase

print(a==b)	#Flase

print(a!=b)	#True

print(a>=b)	#False

print(a<=b)	#True

要注意的 像 != 是当两边不等的时候为True,反之为False。而像 >=<= 这两个 存在一个或的关系,就是小于(大于)的情况成立和 等于的情况两者其一符合,即为True(有没有可能两个都符合呢?)。

5.7.5 逻辑运算符

跟比较运算符相类似的,逻辑运算符的返回值亦为布尔类型。

运算符表达式解释
anda and b两者都
ora or b其中之一
notnot a
ina in b在其中

接下来通过例子给大家详细解读。

num1=10
num2=16
num3=18

print((num1<num2) and (num2<num3)) # True
print((num1>num2) and (num2<num3)) # Flase
print((num1>num2) or (num2<mnum3))  # True
print((num1<num2) and (num2<num3) and (num1<num3)) #True

我们可以看到举例中,通过and语句链接的全部表达式都为正确的情况下才会返回True。而or语句则是任意一个表达式正确则返回True。如果判读语句中又有or又有and语句的话,又该如何呢留给大家思考。

5.8 条件语句

条件语句顾名思义,需要存在一个判断条件,拿人话讲就是:凡事都有个是非对错,因此条件语句的返回值通常是布尔类型(True 或 False)。

5.8.1 if语句格式

对于格式而言,缩进很重要,这意味着 语句是否在上一 if语句
if 条件语句:

  条件成立时执行的代码

num=9
if num<3:
	print('num smaller than 3')
print(num)
# 9

如例子中所展现的,无论num是否大于3 ,最后的print语句都会执行,所以缩进很重要,因为这表示归属问题。

5.8.2 条件语句举例

num1=10
if num1>2:
	print('number is bigger than 2')
# number is bigger than 2

例子非常的简单,但是大家应该也发现了问题。万一,不符合条件怎么办? 小问题,python或者其他语言早已帮你想好对策,那就是else语句

我的班长喜欢小美,他给小美表白,小美便有两种选择,答应班长或者拒绝班长。这就是if-else语句的现实举例。下面来看代码。

num2=910
if num2<909:
	print('num2 is smaller than 909')
else :
	print('num2 is biiger than 909')
# 'num2 is bigger than 909'

是的,当num2 进入条件语句中,先执行 num2 是否小于909 的判断语句 ,如果该语句为True(num2<909成立)则执行if语句后的指令 ;当该语句为
False( num2 <909 不成立 也就是说 num2 是大于或等于909的),则执行else语句后的指令。

当然也会存在条件语句不止一个的情况,所以还有一个语句就是elif语句,展开来讲的就是 else-if,表示另外一个条件 。直接看例子:

num3=75
if num3<60:
	print('不及格')
elif num3>60 and num3<80:
	print('良好')
else:
	print('优秀')
# 优秀

正如例子所表示的 当存在多个条件语句去判断时,可以使用 elif语句。

5.8.3 三目运算符

表达式1 if 表达式2 else 表达式3

简单解释就是 当表达式1的值为True时 则执行表达式2 如果为False时 执行表达式3 。直接看例子:

num1=10
num2=20
print(num1>num2 if num2 else num1)
# 10 

5.9 循环语句

循环一词大家并不陌生,就是不断重复一样的东西。

5.9.1 循环语句格式

在py中,有 for 循环while 循环 ,两种格式实现的效果是一样的。

for 临时变量 in 表达式1:

  重复执行的代码1

while 表达式1:

  重复执行的代码2

5.9.2 for循环

格式如上,而实际上我们for循环是对字符串的拆解输出,我们直接来看例子:

letter1='lys'
for i in letter1:
	print(i)
# l
# y
# s

可以看到在for循环中,我们对letter1 这个字符串中的字母逐个操作。当然,我们的循环也是需要遵循缩进的,就是表示归属问题。这只是对单词、对字符串的操作,那我们再往深一层想,要是要对数字操作,就是从 0取到10 又该怎么办呢?来看下面的例子:

numbers=[2,3,4,1,8]
for i in range(0len(nunbers)):
	print(numbers[i])
# 2
# 3 
# 4
# 1
# 8

例子中我们将i当作下标索引使用,在range()语句中就是 i的取值:从0 到numbers的长度。而在range语句中0可以省略。当然我们不一定要从0开始索引,像从1,2,3任何小于numbers列表长度的开始都可以,甚至反过来取值亦可以。

5.9.3 while循环

正如我们前面讲到的 for循环和while 循环 得到结果其实一样。举个例子就是:班长给小美送花,当班长送够100支花,小美就答应做他女朋友,那我们直接来看例子。

i=0
while i<100
	print(i)
	i+=1
# 0~99 

需要注意的是 while循环要是遗漏了对 i值的变化 容易进入死循环
当然亦会存在中间就要中断循环的情况,就像接下来要讲的break和continue语句。

5.9.4 break语句

举个简单的例子就是:班长在送第99支花的时候,小美谈了男朋友,班长就停下了送花的脚步了。
接下来看代码:

i=0
while i<100:
	print(i)
	if i==99:
	break
	

break语句是直接跳出上一层循环 去执行其他语句,而下面的continue语句则不同。

5.9.5 continue语句

continue语句再举一个例子就是:班长从第一天开始送花,到第六十天的时候睡懒觉忘记了送花。下面来看代码:

i=0
for i in range(100):
	print(i)
	if i==60:
		continue
		

而这个for循环,执行到59的时候就会自动跳过60去执行输出61的操作。


了解了py的一些基础用法后,我们在这里拓展一部分看起来更贴合实际需要的具体操作。

5.10 文件读取与存储

文件,无论学生还是职工都是经常接触的,像word、excel、ppt简直就是文件三剑客。那我们要是想通过python对文件进行操作又能否实现呢?请继续看接下来的内容。

5.10.1 文件的基础操作

操作格式
打开文件open()
关闭文件close()
重命名文件rename()
删除文件remove()
创建文件夹mkdir()
删除文件夹redir()
获取当前目录getcwd()
获取目录列表listdir()
写入内容write()

在python中打开文件后,一定要对文件进行关闭操作,否则会造成文件损坏或丢失的情况。讲这么多来看看例子。

import os
import pandas as pd
os.makedirs(os.path.join('..','data'),exist_ok=True)
#在pycharm项目列表里面创建一个data包 exist用于判读是否有文件与其重名
data_file=os.path.join('..','data','house_tiny.csv')
#这就是就类似于‘E:/lys.txt’ 这样的文件路径
with open (data_file,'w',encoding='UTF-8') as f:
    f.write('Numrooms,Alley,Price\n')
    f.write('NA,Pave,100\n')
    f.write('2,NA,200\n')
    f.write('4,NA,400\n')
    f.write('NA,NA,1000\n')
data=pd.read_csv(data_file)

解释一下这段代码的含义:
首先import 这个语句是调用模块的作用,而模块当中存在封装好的函数可以给我们直接使用,那 os这个模块通常用于对文件的操作,上面列表中的大部分函数都在os模块当中,而pandas则是对数据进行字典化操作的模块(大家还记得我们在哪里讲到了字典吗)后面的 as可以理解为给pandas模块起外号 下次用它可以直接叫它外号。
马不停蹄,我们来看makedir()函数 就是在固有列表中创建一个文件夹用于储存我们操作的数据,path中文意思是路径,在这里表示把这个创建的文件夹放到某个地方去,‘data’就是给这个文件起的名字。
其实上面这两段都与我们这小节无关,但是还是希望大家努力理解一下。
with open 语句就是对文件进行打开后 对文件操作后关闭,非常的便利。

open(参数1, 参数2,参数3)

参数1表示对某个文件进行操作,参数2有3种模式任君挑选。下面就是对参数2的解释。

格式含义
‘r’表示对文件进行只读操作,不能修改
‘w’对文件进行写入,(如果文件还不存在的话会创建这个文件)
‘a’对文件进行尾查操作,(同样的 不存在该文件便会自动创建)

再看回我们的例子用的是 ‘w’,就是将后面的内容写入 名为‘data_file’ 的文件中。
参数3 这里不展开讲,大家就当作是小时候老师讲的固定搭配。

5.11 异常处理

异常在程序测试中经常出现,编写一个强壮稳健的程序的一方面就是有效的处理错误和异常,因此学会对异常进行预防是很有必要的,在这里我们结合上面讲到的文件来举例。

5.11.1异常的种类

这里给大家举几个常见的异常,更深入的了解需要大家参考Python标准库。

IOErrorIO错误
IndexError索引错误
UnicodeError同一码错误
NameError名称错误
TypeError类型错误
SyntaxError语法错误

5.11.2 异常处理

这里直接给大家介绍最全面的异常处理。

格式
try:
不确认是否有异常的代码
except:
检查出异常执行的代码
finally:
无论有无异常都执行的代码

try:#捕获全部异常
     f=open("E:/abc.txt","r",encoding="UTF-8")
except Exception as e:
     print("出现异常 切换模式")
     f=open("E:/abc.txt","w",encoding="UTF-8")
else:
     print("没有异常时执行else语句")
finally:
     f.close()

在面对较为简单的异常时,通常可以忽略else-finally语句且不会影响对异常的处理。

5.12 小结

综上,给大家介绍一些python的基础用法并且稍微拓展了一些,下册的撰写参考了大家提供的建议,十分感谢大家支持,小文的编写亦是我对知识理解,所提供的例子希望能帮助大家更容易去理解python基础语法,无论python是否为你的第一门编程语言,既然你对代码感兴趣且它能给你提供帮助,那我希望大家保持这份热情并延续到生活的各方面中,就像那位著名的TalkShow演员付航所说的Passion!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值