Python学习笔记
一、 环境配置
Python解释器的安装:
运行代码,翻译代码
● 安装:
双击可执行文件-----【勾选添加环境变量】----【install】,按提示操作即可
- install Now 默认安装在C盘————不建议选择此安装选项
- Customize insttallation————自己选择安装位置,需要记住
- 勾选Add Python 3.6 to PATH的作用相当于配置环境变量,可在系统中查看
“下一步”后————勾选Install for all users
选择安装位置————选择安装位置,不建议默认C盘
● 验证解释器安装成功:
○ windows系统:cmd命令后回车进入命令提示符页面,输入:python——>回车
如果安装在C盘,直接进入命令提示符的界面,是以普通身份运行,如下图:
如果右键选择以管理员身份运行,权限更大一些,如下图:
备注:一般情况下普通身份运行即可,如提示需要管理员身份再以管理员身份运行
○ mac系统:在终端输入python3,如下图:
● 解释器安装失败的解决办法:
○ 提示:python不是内部或者外部命令
出现原因:环境变量没有配置成功,即安装python解释器时未勾选Add python to path
解决办法:1、卸载,重新安装勾选Add python to path
2、手动添加到path中,如下图:
Pytharm:编辑工具
● 安装方法:
均选择“下一步”即可
● 分类:
专业版(收费,开发使用有框架)、教育版、社区版(免费,需要手写框架)
● 使用:
● 创建新的项目:
● 选择解释器:
● 创建python文件:
● 设置:
● 无解释器的报错:
如下图:
是因为:
解决办法: 添加python解释器即可
● 查找python文件路径
如下图:
方法一:
方法二:
二、第一个程序:Hello,wold!
● 代码:
快捷键shift+3 可以打印出#,注释单行,不会被解释器解释
代码从上往下运行
print(‘Hello,world!’)
● 运行结果:
备注:code 0 --运行成功
code 1 --运行出错
三、变量
● 多行注释:
格式:
英文3对单引号,或者3对双引号
作用:
在注释里面写很多对内容
● 变量:
定义:
存储程序中数据的容器,方便数据在程序的多个地方复用
语法:
变量名=程序中的数据
=赋值运算符
代码:
text=‘hello,world’
#定义变量名
text=‘hello,world’
#定义变量名
print(text)
print(text)
print(text)
#打印三遍命名为text的字符串
运行结果:
扩展—print:
定义:
把内容打印到控制台,用于代码的调试,且具有自动换行的功效
格式:
print() 括号内的标点符号必须是英文格式
● 标识符
定义:
包括变量、函数名字、类名、方法名
组成:
字母、数字、下划线,且不可以数字开头
特点:
1、 区分大小写:A、a是两个变量
2、 不能使用关键字命名
keyword.kwlist() 通过这个命令查看系统的关键字;
通过不断积累;
关键字:python解释器底层已经定义好的一些标识符名字
代码-列举系统关键字:
import keyword
#导包
print(keyword.kwlist)
#打印系统的关键字
运行结果:
命名规则:
- 见名知意 引申:写代码要写注释 如:name=‘小党’
- 大驼峰:每个单词首字母大写 如:MyName
- 小驼峰:除了第一个单词的首字母小些,其他都大写 如:myName
- 下划线命名 如:my_name
备注:不强制,非必须
● 数据类型
数据类型:字符串(str)、整数(int)、浮点数(float)、列表(list)、元祖(tuple)、字典(dict)
字符串(str):
用引号包裹的叫做字符串,引号包括:单引号、双引号、三引号(""" “”",可以保留原来数据的格式)
单引号里面可以嵌套双引号、三引号,双引号里面可以嵌套单引号、三引号,三引号里面可以嵌套单引号和双引号,不可以单引号嵌套单引号,双引号里面嵌套双引号,三引号里面嵌套三引号,需要间隔着使用
name=‘xiaodang’
name=’‘xiaodang’’
代码:
“”"
思考:今天是周日
天气很好
“”"
name = “今天是周日”
weather = “天气很好”
print(name)
print(weather)
运行结果:
备注:print默认带换行符(\n),\n换行的意思,用法:end=’\n’——换行;end=’ '——不换行
代码:
运行结果:
代码:
运行结果:
快捷键:windows:control+/,注释选中内容;mac:command+/
代码—三引号使用:
运行结果:
三引号就是把里面的内容按照原格式打印出来
如何判断数据类型?
返回值:调用别人写好的方法的时候,可以用变量接受返回值
- 语法:type(变量)返回值:数据类型
代码—方法一:
代码—方法二:
运行结果:
- isinstance(返回值,数据类型) 返回值:True(返回值是括号里面写的数据类型),False(返回值不是括号里面写的数据类型)
代码:
num = “5”
num1 = isinstance(num,int)
print(num1)
运行结果:
整数:int
1,2,3…
代码:
运行结果:
浮点数:float
小数
布尔类型:
True(真)、False(假)
代码:
运行结果:
备注:搜索顺序,关键字、变量、是不是程序的数据,bool的值必须首字母大小
方法——eval():
可以返回字符串内包裹的内容,及其原本的数据类型
代码:
a =“1+1”
b =“1.8”
c =“True”
d =“5”
#此时以上变量均为字符串
a_eval=eval(a)
b_eval=eval(b)
c_eval=eval©
d_eval=eval(d)
#以上均还原了引号内的数据
print(“a_eval是:”,a_eval,“a_eval的数据类型:”,type(a_eval))
print(“b_eval是:”,b_eval,“b_eval的数据类型:”,type(b_eval))
print(“c_eval是:”,c_eval,“c_eval的数据类型:”,type(c_eval))
print(“d_eval是:”,d_eval,“d_eval的数据类型:”,type(d_eval))
运行结果:
字符串格式化:
将变量和字符串拼接在一起
语法:
- 用英文逗号,拼接
- 占位符:%s 字符串占位 %d整数占位 %f浮点占位
- “名字:{},身高:{},年龄:{}”.format(name,height,age)
前面需要先定义变量name,height,age - f"名字:{name},身高:{height},年龄:{age}"
备注:第四种是第三种的升级版,第四种方式是python3.6之后才有的用法
代码—方法一:
运行结果:
代码—方法二、三、四:
name=‘小党’
height=170
age=30
print(‘名字:%s,身高:%d,年龄:%d’%(name,height,age))
方法二:占位符:%s 字符串占位 %d整数占位 %f浮点占位
print(“名字:{},身高:{},体重:{}”.format(name,height,age))
方法三:“名字:{},身高:{},年龄:{}”.format(name,height,age)
print(f’名字:{name},身高:{height},体重:{age}’)
方法四:f"名字:{name},身高:{height},年龄:{age}"
运行结果:
类型转换
为什么转换成类型?
方便后面调用:数据类型一致的时候,才可以做运算,做比较;知道数据类型,才能针对此类型的数据做处理;知道 列表、字符串、字典 的类型,才可以选择对应的api方法去处理数据
-
str()
把其他类型转化成字符串
代码:
s1=‘1’
s2=‘1.5’
s3=5
#定义变量
ts1=str(s1)
ts2=str(s2)
ts3=str(s3)
#将其他类型转换成字符串类型
print(type(ts1))
print(type(ts2))
print(type(ts3))
运行结果: -
int()
将引号包裹的整数转化成整数型,浮点数不能转化成整数
代码-整数型:
s1=‘1’
s3=5
#定义变量
is1=int(s1)
is3=int(s3)
#转化成整数型
print(f’值是:{is1},类型是{type(is1)}’)
print(f’值是:{is3},类型是{type(is3)}’)
运行结果:
代码-浮点型不能转化成整数型:
s2=‘1.5’
is2=int(s2)
#浮点型不能转化成整数型
print(f’值是:{is2},类型是{type(is2)}’)
运行结果:
代码—eval()
s2=‘1.5’
is2=eval(s2)
#浮点型不能转化成整数型
print(f’值是:{is2},类型是{type(is2)}’)
运行结果:
- float()
只能化转化包裹的是浮点数、整数的字符串
代码:
s1=‘1’
s2=‘1.5’
is1=float(s1)
is2=float(s2)
print(f’值是:{is1},类型是{type(is1)}’)
print(f’值是:{is2},类型是{type(is2)}’)
运行结果:
四、常用方法
-
input()
定义:捕获到用户从键盘上输入的信息
代码:
c = input(“请输入剪刀石头布”)
#获取到用户输入的信息
print©
print(‘从input获取到的类型是:’,type©)
#只有数据类型一致的才可以做比较
运行结果: -
random
a:random.choice()
定义:从一个集合重随机选择一个字符串
方法:
需要先导包,再定义方法
代码:
import random
#d导包
computer = random.choice([‘石头’,‘剪刀’,‘布’])
#从集合里面随机选择一个字符串
print(computer)
运行结果:
备注:Ctrl+p 查看函数
b:random.randint()
定义:随机生成整数
代码:
import random
data=random.randint(0,2)
#从0,1,2随机产生一个整数
print(data)
运行结果:
- string.isdigit()
定义:判断字符串里包裹的是否全是数字
代码:
score = input(‘请输入你的分数’)
if score.isdigit():
#判断字符串score里面是否是整数
score =float (score)
if 80<=score <=100:
print(‘优秀’)
elif 60<=score<80:
print(‘及格’)
elif score<60:
print(‘不及格’)
else:
print(‘输入分数有误’)
else:
print(‘输入的不是整数’)运行结果:
- 小标题2
- 小标题3
- 小标题4
- 小标题5
五、分支语句 - if
a:单条件
语法:
if 条件:
四个空格/一个tab键
备注:一个tab键代表4个空格
代码:
score = 0
if score == 0:
print(“完蛋了!!!”)
运行结果:
b:多条件
语法:
if 条件:
elif 条件:
elif 条件:
…
else:
代码:
while True:
try:
score = input(‘请输入你本次的分数: ‘)
num_score = int(score)
if isinstance(num_score, int):
if 100 >= num_score >= 80:
print(‘优秀’)
elif 60 >= num_score >= 79:
print(“及格”)
elif num_score < 60:
print(‘不及格’)
else:
print(‘输入的分数有误’)
break
else:
print(‘输入的不是整数’)
except ValueError as e:
print(’----请重新输入----’)
运行结果:
- 循环-while
语法:
while 条件:
代码:
方法一:
“”"
计算1~100的和
“”"
a=1
#定义初始值
sum=0
#定义变量
while a<=100:
sum+=a
a+=1
print(‘循环结束!’)
print(f’1~100的和为{sum}’)
方法二:
n=1
sum=0
while n<=100:
if n%2==0:
sum += n
n+=1
print(f’1~100之间的数字之和为{sum}’)
运行结果:
while循环和else的结合
语法:else的代码,当while循环正常退出,else代码才会执行
正常退出指的是的while循环里面有break就叫做不正常退出,其它的都叫正常退出
代码:
#一共5个苹果,吃到第4个饱了,第5个就不吃了
n=1
while n<=5:
print(f’开始吃第{n}个苹果’)
if n == 4:
print(‘吃饱了’)
break
n+=1
else:
print(‘吃饱了,不吃了’)
运行结果:
代码:
n = 1
while n<=5:
print(f’吃第{n}个苹果’)
n+=1
else:
print(‘注意身体健康’)
运行结果:
代码:
n=1
while n<=5:
print(f’开始吃第{n}个苹果’)
if n == 4:
print(‘吃出了一条虫子’)
n += 1
continue
#提前退出单次循环,本次循环体代码不会继续往下走
n+=1
else:
print(‘注意身体健康’)
运行结果:
- break
定义:退出整个循环体,代码继续往下走
代码:
#一共5个苹果,吃到第4个饱了,第5个就不吃了
n=1
while n<=5:
print(f’开始吃第{n}个苹果’)
if n == 4:
print(‘吃饱了’)
break
n+=1
运行结果:
-
continue
定义:退出单次循环体,而不是整个循环体
代码:
n=1
while n<=5:
print(f’开始吃第{n}个苹果’)
if n == 4:
print(‘吃出了一条虫子’)
n += 1
continue
#提前退出单次循环,本次循环体代码不会继续往下走
n+=1
运行结果: -
循环-for
a:for …in…
(1) for 临时对象 in 可迭代对象(字符串、列表、字典、元组)
1.1使用场景: 获取到容器中的某个元素,进行响应判断
代码:
s =‘dang’
for e in s:
print(e)
运行结果:
(2) for 临时变量 in range(start,end,step)
step 步长 后一个数-前一个数=step步长
如果range()括号里面只有一个数字,则是end的数字,默认从0开始,start可以不写
end:数值取不到,只能取到end前面的一个数
如果range()括号里面可以有一个值,2个值,3个值
一个值默认为(end)
2个值为(start,end)
3个值为(start,end,step)
代码:
for i in range(2):
print(i)
运行结果:
代码:
for i in range(3,5):
print(i)
运行结果:
代码:
for i in range(3,20,5):
print(i)
运行结果:
step是正数,start end是不符合从小到大的顺序,就取不到
step是负数,start end是倒叙,从大到小,可以正常取
代码:
for i in range(10,2,-3):
print(i)
运行结果:
2.1 应用场景:构造循环
6. 小标题5
六、特殊字符
- 列表
定义:可以放任何数据类型的元素
方法:列表【】 - 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
七、API_Str
定义:用引号包裹的就叫字符串 - 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
八、 - 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
二十、实战 - 猜拳小游戏
代码:
“”"
需求:猜拳游戏 石头剪刀布
策略:
1.client 用户赢:c 石头 p 剪刀 ;c 剪刀 p 布; c 布 p 石头
2.computer 电脑赢:p 石头 c 剪刀 ;p 剪刀 c 布; p 布 c 石头
3.平局:c 石头 p 石头 ;c 剪刀 p 剪刀; c 布 p 布
“”"
name = input('请输入你的名字: ')
client = input(f"请{name}输入剪刀石头布:")
#获取到用户输入的信息
print(client)
import random
#d导包
computer = random.choice([‘石头’,‘剪刀’,‘布’])
#从集合里面随机选择一个字符串
print(computer)
if client ==computer:
print(‘平局’)
elif (client == ‘石头’ and computer == ‘剪刀’) or (client == ‘剪刀’ and computer == ‘布’) or (client == ‘布’ and computer == ‘石头’):
print(‘恭喜你赢了!!!’)
elif (client == ‘石头’ and computer == ‘布’) or (client == ‘剪刀’ and computer == ‘石头’) or (client == ‘布’ and computer == ‘剪刀’):
print(‘很遗憾,你输了!!!’)
else:
print(‘你输入的字符串有误!’)
运行结果:
- 九九乘法表
代码:
运行结果:
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3
- 标题3