一、变量的数据类型
变量推荐写法:
age_of_alex = 10
#做到见名知义,不写拼音、汉字,全为小写
1、int(整型)
注:python中只有整型,没有长度限制,不像java,有短整型、长整型
2、float(浮点型)
注:float和int之间的唯一区别就是有没有小数点。
3、boolean(布尔型)
注:在python中布尔型也是只有两,一个True,一个False,且True相当于是1,False相当于是0.
为了更简洁的表示较长的数,python采用e记法:
2e+5=2 * 105
5e-12=5 * 10-12
介绍两个判断数据类型的函数:
(1)type()
python这门语言对大小写有严格要求,还有缩进也有严格要求。
(2)isinstance(),官方推荐
二、常量
常量:不变的量
注意:python的语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念。
AGE_OF_ALEX=73 #当变量名全大写便代表常量,这是一种约定俗成的规范
三、操作符
1、算数操作符
前五个加、减、乘、除、取余、乘方、地板除法
依旧支持+=、-=、*=、/=、%=、**=、//=
注意点:
(1)除和地板除法的区别
注:除法是精确除法,地板除法是向下取整!
(2)**乘方运算符
那么想下-3 ** 2它的运算结果是多少:
答案:-9,上面这个相当于:-(3 ** 2)
3 ** -2它的运算结果是多少:
答案:1/9,上面这个相当于:3-2
(3)三目运算符
2、赋值操作符
(1)增量复制
(2)链式复制
>>> z=10
>>> y=z
>>> x=y
>>> x,y,z
(10, 10, 10)
可以多个变量同时赋值。
(3)交叉复制
>>> temp=m
>>> m=n
>>> n=temp
>>> m,n
可以一行代码搞定:
>>> m=10
>>> n=20
>>> m,n=n,m # 交叉赋值
>>> m,n
(20, 10)
(4)解压复制
如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做
>>> nums=[11,22,33,44,55]
>>> a,b,c,d,e=nums # nums包含多个值,就好比一个压缩包,解压赋值因此得名
>>> a,b,c,d,e
(11, 22, 33, 44, 55)
>>> a,b,c=nums[2:5] #切片实现截取复制
>>> a,b,c
(33, 44, 55)
3、比较操作符
>、=,<=
这个没有什么说的!
主要是python在这里两个特色:
(1)比较是否相等
我们都知道的java的"==“比较两个字符串是比较它们的地址,但是python中”=="即使比较字符串也是比较的内容,而不是地址
(2)允许连续比较
(3)断言
4、逻辑运算操作符
这个就是逻辑与、或、非!
优先级:not>and>or
5、成员运算符
注意:虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确
>>> not 'lili' in ['jack','tom','robin']
True
>>> 'lili' not in ['jack','tom','robin']
True
6、身份运算符
需要强调的是:==双等号比较的是value是否相等,而is比较的是id是否相等
#1. id相同,内存地址必定相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下
>>> x='Info Tony:18'
>>> y='Info Tony:18'
>>> id(x),id(y) # x与y的id不同,但是二者的值相同
(4327422640, 4327422256)
>>> x == y # 等号比较的是value
True
>>> type(x),type(y) # 值相同type肯定相同
(, )
>>> x is y # is比较的是id,x与y的值相等但id可以不同
False
四、分支
语句:
if 条件:
else:
1、多分支语句
2、python可以有效避免悬挂else
什么叫悬挂else?
c语言中if语句如果不加{},很容易造成悬挂else,就是else我本来是想和外层if语句匹配,但是c语言这时会根据就近原则和内层if匹配。
python由于有严格的缩进,你的else缩进在哪里,就取决了你选择else属于那个if
五、循环
1、while循环:
没有do while循环了。
while循环里的break、continue语句我就不讲了。
(1)退出循环的两种方式
一个是break,这个不讲了。
另外一个是设置tag,此方法局限性较大。
tag = True
count = 0
while tag:
username = input("请输入你的账号:")
password = input("请输入你的密码:")
if username == 'Mr.wu' and password == '123':
print("登录成功")
while tag:
cmd = input("输入命令> ")
if cmd == 'q':
tag = False
else:
print("命令{x}正在运行...".format(x=cmd))
else:
count += 1
if count == 3:
print("输入错误三次,退出程序...")
break
else:
print("输入账号或密码错误,请重新输入")
程序运行效果:
tag直接可以跳出多重循环。
(2)while+else
语法:
while 条件:
代码1
代码2
if 条件:
break
else:
代码3
当循环正常执行完毕退出后,else语句中的代码就会执行,循环如果是break退出的,就不会执行。显然这是一个针对break的语法。
案例:
tag = True
count = 0
while tag:
username = input("请输入你的账号:")
password = input("请输入你的密码:")
if username == 'Mr.wu' and password == '123':
print("登录成功")
while tag:
cmd = input("输入命令> ")
if cmd == 'q':
tag = False
else:
print("命令{x}正在运行...".format(x=cmd))
else:
count += 1
if count == 3:
print("输入错误三次,退出程序...")
break
else:
print("输入账号或密码错误,请重新输入")
else:
print("程序正常执行完毕!")
程序正常执行完毕,执行else里的代码。
因为是break退出所以没执行else里的代码。
2、for 循环:
(1)print中的end和逗号
num = ‘吴晋丞’
for i in num :
print(i,end=’’) #其中逗号代表空格
原理解释:为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串,其实这也是一个语法要求,表示这个语句没结束。end的作用也就是取消换行,如果你把空字符串中加个空格,那么它就是用在字符串末尾添加空格替代添加换行符。
(2)for应用在数组
len这个函数是用来计算传入字符串长度的。
java中只能用数字作为参数,制造循环,python中却可以用字符串当作参数
(3)for循环中的range函数
还可以设置循环的步长:
这个range函数保证了python的for循环可以完成java中for循环的所有功能。
(4)break和continue语句
这个和java中的效果一样!
(5)range函数补充知识点
range搭配for可以取索引
a = [1,'a',True,3]
for i in range(len(a)):
print(a[i])
#想下 for i in a:,它们两者的区别
range函数在python3的优化
python2:
python3:
python2中直接创建一个存储着range范围内的所有数的列表
python3中是不创建,要用多少,我在用的时候再创建,因为程序for循环搭配range不一定能把range使用完。
python3中的range无疑减少了内存的开销。通俗来说,python2直接把10个蛋给你,python3给你一个能下10个蛋的鸡,你要一个蛋,就给你下一个。
六、条件判断
条件一般由比较运算符和逻辑运算符组合而成,逻辑运算符为可要可不要。
age > 10 and sex = '男' #这就是条件判断,最后得到的是一个布尔值
1、显示布尔值
True、False
if True:
代码1
代码2
2、隐式布尔值
所有数据类型,0,none、空为假,其他都为真
print(not '')
print(not None)
print(not 0)
print(not [])
print(not 1)
print(not 4)
print(not 'abc')
print(not [1,2])