@[TOC]Python学习之旅-one day
自我介绍
本身是一名刚刚毕业的大学生,才工作了几个月深刻的体会到了,当时在大学虚度的光阴。非常后悔没有在大学时候就开始学习程序语言,如今现在的工作自身不是很喜欢,想通过自身的学习进行转型。
Python
变量
变量的类型
从严格的意义上讲,python只有一种类型
标准数据类型共六中
1.数字Number
2.字符串类型Str
3.列表List
4.元祖 tuple
5.字典 dict
6.集合 set
数据类型Number
python中的数字没有大小限制
常见数字分类
a.整数
没有小数部分
包含正数,负数,0
二进制
只有01
以0b开头的01串
# 二进制定义
a1 = 0b110
print (a1)
a2 = 0b11110
print(a2)
八进制
以0b开头的0-7之间的数字串
# 八进制
a3 = 0o71
print(a3)
十六进制
以0x组成的由0-9,a-f构成的串
#十六进制
a4 = 0xffff
print(a4)
a5 = 0x54ff2
print(a5)
b.浮点数
就是通俗意义上的小数量
常见的案例格式
3.1415926
3.
0.5
.4
c.科学计数法
定义跟数学定义一样
写法就是e后面跟整数用来表示10的整数
# 科学技术法
heigh = 1.75
print(heigh)
heigh = 1.75e2
print(heigh)
a = .2
print(a)
d.复数 complex
跟数学定义一致
复数的虚部用j/J表示:例如
5+4j
4j
(4j)
a = 4j
print(a)
布尔值
布尔值就是用来表示真假的值
只有两个值:True/False
在python中,布尔值可以当数字使用
布尔值如果当数字使用,True=1,False=0
如果数字用来当作布尔值使用,0=False,其余当作True
# 布尔值当作数字使用
age = 18 + True
print(age)
age = 18 + False
print(age)
# 判断语句
a = -1
if a:
print("负数是True")
else:
print("负数是False")
字符串
表达文字信息的内容,比如"我爱你"
形式上是引导引起来的一段内容
引号包括
单引号
双引号
三引号,可以用来表示多行信息
单双引号含义一致
# 字符创案例
love = "Python"
print(love)
love2 = 'Python'
print(love2)
#三引号
love3 = """
J
A
V
A
"""
print(love3)
###None 类型
表示没有,通常用来占位
比如返回,用来表示返回一个空
表达式
- 由一个或几个数字或者变量或者运算符合成一行代码
- 通常返回一个结果
运算符
- 由一个以上的值经过一系列的运输得到新增的过程就叫运算
- 用来操作运算的符号叫运算符
- 运算符分类
- 算数运算符
- 比较或者关系运算符
- 赋值运算符
- 逻辑运算符
- 位运算
- 成员运算符
- 身份运算符
# 表达式案例
a = 1 + 2
算数运算符
- 用来进行算数运算的符号
- 通常用来表示加减乘除
- pythhon没有自增自减运算符
## 算术运算符案例
# 加减乘跟数学意义基本一致
a = 9 - 2
print(a)
b = 9 + 2
print(b)
c = 8 * 2
print(c)
# python除法分为普通除法,地板除,取余
# 此操作符在python2.x和3.x中有些不同
#正常除法
a = 9 / 2
print(a)
# 地板除 取整除
a = 9 // 2
print(a)
# 取余
a = 9 % 2
print(a)
# 除以负数的结果
# 理解这个结果参靠取余的定义
a = 9 % -4
print(a)
# 两个乘号就是指数
a = 7 ** 2
print(a)
比较运算符
- 对两个内容进行比较的运算符
- 结果一定是布尔值,即True/False
# 等于 ==
a = 3 == 4
print(a)
# 不等于 !=
a = 3 != 4
print(a)
# 其他的符号是
# >,>=,<,<=
print(3>=4)
print("小白" > "小")
赋值运算符
- 把一个值放到变量里边去
# 赋值符号 =
a = 9
# 复杂赋值
a = b = 9
a,b = 1,2
# 赋值的缩写
d = 0
d = d + 3
print(d)
# 注意下面符号仅仅是一个缩写
d += 3 # d = d + 3
print(d)
##所有数学运算符都可以缩写
# -=,*=,/=,//=,%=,**=,都是缩写形式
# python里面没有 ++,--
逻辑运算符
- 对布尔类型变量或者值进行运算的符号
- and :逻辑与
- or : 逻辑或
- not: 逻辑非
- python里面的逻辑运算没有异或
- 运算规则:
- and看做乘法,or看做加法
- True看做1,Flase看做0
- 则逻辑运算就能转换成整数数字运算
- 最后结果如果是0则为False,否则为True
- 逻辑运算的短路问题
- 逻辑运算式,按照运算顺序计算,一旦能够确定整个式子未来的值,则不再进行计算,直接返回
# 逻辑表达举例
a = True
b = True
c = False
aa = a and b # 左边表达式可以转换成 1 * 1
print(aa)
bb = a and c
print(bb)
cc = 100 and c
print(cc)
# 布尔值跟数字的转化
# 数字转换成布尔值的时候, 0 = false ,其余是true
# 布尔值转换成数字的时候,True = 1,Flase = 0
# 短路问题案例1
a = True
b = True
c = False
aa = a or b and (a and b) # 转换成算数 1 + .....
print(aa)
# 短路问题案例2
def a():
print('a')
return True
def b():
print("b")
return True
aaa = a() and b()
print(aaa)
# 字符创乘以数字,表示对是这个字符串重复多少遍
print("*" * 20)
bbb = a() or b() # 短路发生
print(bbb)
成员运算符
- 用来检测一个值或者变量是否在某个集合里面
- in: 成员运算符
- not in :不在里边的意思
# in 案例
L = [1,2,3,4,5]
a = 6
b = a in L
print(b)
# a没有在L里面吗?
b = a not in L
print(b)
身份运算符
- 用来确定两个变量是否是同一变量
- is : 变量运算符
- is not : 不是
- 学Python的想必都知道,对整数N \ IN[-5,256],解释器对他们做了单独的处理,放进了固定的内存中,不因你每次运行而变化
- 这里再记录一些相关的
- 不仅对小整数有这样的处理,内建的类(int,staticmane,object,TypeError…)也都是这样处理的。
- 看一个变量的内存是不是这样处理的,无需运行两次,只要看id()编号的长度就行,它们都是10位的,普通变量都是十三位的。
- 其实并不是每次运行结果都是一样的,比如重启一下电脑再试试。
- 不同的软件打开的同一个python解释器结果也是不同的(最先打开的那个会影响其他的),比如我的电脑线打开pycharm、cmd、jupyter得到的是不同的结果。
- 只要把解释器全部关闭再打开某一个,其余的都会是这个软件的值。
- 电脑不关机的话,软件重复关闭打开id值是一样的
- (当然同一台电脑上不同python解释器结果肯定是不相同,不同电脑那就更不用说了)
# 身份运算符定义
a = 1
b = 1000000
aa = a is b
print(aa)
#a,b仅仅是值一样,并不代表a,b是一个变量
a = 1000000
b = 1000000
aa = a is b
print(aa)
# 正确理解下面案例跟上面案例的不同
#-5 到 256 之间
a = 5
b = 5
aa = a is b
print(aa)
运算符优先级问题
- 小括号具有最高优先级
- ** 指数(最高优先级)
- ~±按位翻转,一元加号和减号(最后两个的方法名为+@ 和-@)
- / % // 乘,除,取模和取整数
- 加法减法
- ‘>>’ ‘<<’ 右移,左移运算符
- & 位 ‘AND’
- ^ | 位运算符
- <= < > >= 比较运算符
- <> == != 等于运算符
- = %= /= //= -= += *= **= 赋值运算符
程序结构
- 程序三种结构
- 顺序
- 循环
- 分支
分支结构
- 分支结构基本语法
if 条件表达式:
语句1
语句2
语句3
… - 条件表达式就是计算结果必须为布尔值的表达式
- 表达式后面的冒号不能少
- 注意if后面的出现的语句,如果属于if语句块,则必须同一个缩进等级
- 条件表达式结果为True执行if后面的缩进的语句块
# if 语句联系
# 如果你们都买我的习题课,我就发财了
# 字符串有内容就是True,空就是Fasle
a = " " # 这里面有空格
if a:
print("我就发财了")
print("迎娶白富美")
print("日子还得过啊")
# if 联系二
age = 19
if age > 16:
print("喝酒")
print("下次你请我")
双向分支
- if…else…表达
- 语法结构:
if 条件表达式:
语句1
语句2
…
else:
语句1
语句2
…
# 如果你们都买我的习题课,我就发财了
a = ""
# 字符串有内容就是True,空就是Fasle
if a:
print("我就发财了")
print("迎娶白富美")
else:
print("日子还得过啊")
# input的作用
# 1. 在屏幕上输出括号内的字符串
# 2. 接收用户输入的内容并返回到程序
# 3. input返回的内容一定是字符串类型
# input负责接收用户输入并把内容返回给变量
# input() 提示语句直接写在input中,是一个字符串
gender = input("请输入你的性别(man/girl):")
# 打印输入的内容
print(gender)
if gender == "man":
print("喝酒")
else:
print("回家去吧")
# 考试成绩判断
# 成绩由用户输入
# 90以上:输出优秀
# 80-90: 良
# 70-80:中
# 60-70: 平
# 60以下:输出:我没你这样的学生
# 输入成绩,需要用到input函数
# input输入的值全部是字符串类型
score = input("请输入你的分数:")
# 解决输入是字符串的问题
score = int(score)
if score >= 90:
print("优秀")
if score >= 80 and score < 90:
print("良")
if score >= 70 and score < 80:
print("中")
if score >= 60 and score < 70:
print("平")
if score < 60:
print("我没有你这样的学生")
多路分支
-
很多分支的情况,叫多路分支
if 条件表达式:
语句1
…
elif 条件表达式:
语句1
…
elif 条件表达式:
语句1
…
else
语句1
… -
elif 可以有很多个,根据实际情况
-
else 可选
-
多路分支最多只会执行一种情况
if语句补充
- if语句可以嵌套使用,但是不推荐
- python 没有switch语句
score = input("请输入你的分数:")
# 解决输入是字符串的问题
score = int(score)
if score >= 90:
print("优秀")
elif score >= 80:
print("良")
elif score >= 70:
print("中")
elif score >= 60:
print("平")
else:
print("我没有你这样的学生")
循环语句
- 重复执行某一个固定的动作或者任务
- 分类
- for
- while
for 循环
- 语法
for 变量 in 序列:
语句1
语句2
…
# 比如[1,2,3,4,5,6,7]
list_one=[1,2,3,4,5,6,7]
for shuzi in list_one:
print(shuzi)
print(shuzi + 100)
print(shuzi + 1000)
# 打印学生列表姓名
# 如果是xiaoming,那就是我的最爱
# 如果是别的学生,那就要拒绝
stu_list = ['小白','小黑','小明']
for stu in stu_list:
if stu == '小明':
print("我的最爱")
else:
print(stu + "你是个好人")
for-else 语句
- for循环结束的时候,有时候需要执行一些收尾工作,此时需要使用else语句
- else 语句是可选
# for-else 语句
# 打印列表中的同学
# 如果没有在列表中,或者列表结束了,我们需要打印提示语句,表示不在爱了
stu_list = ['小白','小黑','小明']
for stu in stu_list:
if stu == '小明':
print("我的最爱")
else:
print(stu + "你是个好人")
else:
print("不再爱了")
break , continue , pass
- break:无条件结束整个循环,简称循环猝死
- continue:继续,立即结束本次循环,继续执行下次循环
- pass : 只是占位符号,代表这句话啥也不干,也没有跳过功能
# 在一个数字队列中,寻找数字7,如果找到,打印出来即可,并且结束
# 确定是否包含,只要找到一个即可确定,不需要再继续往下找了,所有使用break
dig_list = [3,4,5,1,6,7,43,23,56,7]
for dig in dig_list:
if dig == 7:
dig = str(dig)
print(dig + "找到了")
break
else:
print(dig)
# continue 语句练习
# 在数字1-10中,寻找所有偶数,找偶数后打印偶数
dig_list = [1,2,3,4,5,6,7,8,9,10]
'''
# continue案例1
for dig in dig_list:
if dig % 2 == 0:
print(dig)
print("你是个偶数")
else:
continue
'''
# 此段代码跟上面代码等价
for dig in dig_list:
if dig % 2 == 1:
continue
print(dig)
print("你是个偶数")
# pass案例1
age = 19
if age > 19:
pass
else:
print("你还小")
# pass案例2
ages = [2,23,41,54,63,2]
for age in ages:
pass
print(age)
range函数
- 生成有序数列
- 生成数字队列可以定制
在这里插入代码片
# range案例1
# 生成一个从1到100的数字序列
# range的生成序列的规则是,左包括右不包括
dig_list = range(1,100)
for dig in dig_list:
print(dig)
# 一般在python中,连个表示范围的数字都是左包括右边不包括,randint函数是个特例
# range函数在python2.x和python3.x有严重区别
# range案例2
# 打印从1到9 的数字
for i in range(1,10):
print(i)
while循环
-
一个循环语句
-
表示当条件成立的时候,就循环,适应于不知道具体循环次数,但能够确定在某个条件成立时就循环
-
while语法:
while 条件表达式:
语句块另外一种表示式 while 条件表达式: 语句块1 else: 语句块2
# 如果说年利率是6.7%,本利是每年翻滚,则多少年后本钱会翻倍
benqian = 10000
year = 0 # 存放需要翻本的年数
while benqian < 20000:
benqian *= (1 + 0.067)
year += 1
print(year)
# 年利率案例2
while benqian < 20000:
benqian *= (1 + 0.067)
year += 1
else:
print(year)
函数
- 函数是代码的一种组织形式
- 函数应该能完成一项特定的工作,而且一般一个函数值完成一项工作
- 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的叫函数,无返回结果的叫过程,python不加以区分
- 函数的使用
- 函数适应需要先定义
- 使用函数,俗称调用
# 定义一个函数
# 只是定义的话不会执行
# 1.def关键字,后跟一个空格
# 2.函数名,自己定义,起名需要遵循命名规则,约定俗称,大驼峰命名只给类用
# 3.后面括号和冒号不能省,括号内可以有参数
# 4.函数内所代码缩进
def func():
print("我是一个函数")
print('python')
print("函数结束")
# 函数的调用
# 直接写出函数名字,后面小括号不能省略,括号内内容根据情况
func()