Python
第一章python语言开山
1.1python的环境,官方网站
官网:https://www.python.org/
问题:mac安装python模块时出现的异常错误
Mac 提示错误”xcrun: error“
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解决方法:
执行命令
xcode-select --install
1.1.1如果想在mac上执行python的命令
eccho 'alias python="python3" ' >> .bash_profile
退出终端,直接打开,输入python就能直接使用
1.2python总结
print ("hello.world")
下载pycharm时,下载commit免费版
print ("hello.world\n" "键盘敲烂\n" "月薪十万")
第二章Python基础语法
2.1字面量的含义
在代码中,被写下来的固定的值,是字面量
常见的字面量含义
2.2注释,单行注释和多行注释
多行注释快捷键:第一行 """ 最后一行“”“
2.3变量
定义:在程序运行时,能储存计算结果或能表示值的抽象概念
定义格式:变量名称=变量的值
print ("hi,hello") # print ("123") # 定义一个变量值,姓名是谁 name = "yangchaofan" #输出这个变量值 print ("姓名是",name) #字符串变为其他的名字 name = "chaofan" print("名字发生改变,最终的名字是",name)
变量的特征:变量存储的值可以发生改变
#定义一个变量为money,并输出 money = 50 print("当前钱包余额:",money) # 购买了冰淇淋花费10 money = money - 10 print("购买了冰淇淋花费10元") # 购买了可乐花费5 money = money - 5 print("购买了可乐花费5元") print("最终的余额为:",money)
2.3数据类型
2.3.1判断变量的数据类型 type
print (type("zifuchuan")) print (type (666)) print (type (1.234))
2.3.2查看变量中存储的的数据类型
#第一种方式:直接输出type类型 print(type("zifuchuan")) print(type(666)) print(type(1.234)) #第二种方式:使用变量存储type语句的结果 string_type = type ("zifuchuan") int_type = type (777) float_type = type (1.234) print(string_type) print(int_type) print(float_type) #第三种方式:查看变量的类型信息 name = "shuaige" name_type = type(name) print(name_type)
变量存储的数据类型,变量无类型,变量存储的数据是有类型的
2.4数据类型的转换
在特定场景下,数据类型之间是可以相互转换的,如字符串转数字,数字转字符串等
# 整数、浮点数转换为字符串的数据类型 string = str(613) print(type(string),string) string2 = str(6.13) print(type(string2),string2) #字符串、浮点数转换为整数类型 #init = int("zhengshuleixing") #字符串是不能转换为整数类型的 init2= int(6.13) print(type(init2),init2) #字符串、整数转换为浮点类型 float_num = float(6) #float_str = float("zifuchuan") #字符串是不能转换为浮点类型的 print(type(float_num),float_num)
2.5标识符
用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名叫做标识符
2.5.1变量的命名规则
用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名
内容限定(英文、中文、数字、下划线),不能以数字开头
区分大小写敏感
不可使用关键字
#本代码实现命名规范和命名规则 #1.命名必须有内容限定(英文、数字、下划线、中文命名),但是不能以数字开头 #2 = 34 错误示范 name_first = "chaofan" _name = "fan" #2.区分大小写敏感 class1_name = "1班" class2_name = "2班" print(class1_name,class2_name) #3.不能使用相应的关键字命名 #class = "错误的示范" #False = "错误的示范"
2.5.2变量的命名规范
见名知意、简洁
下划线命名法(first_name)
英文字母全小写
2.6运算符
2.7字符串扩展
字符串的三种定义方式:单引号、双引号、多引号
2.7.1字符串的引号嵌套
#本代码是字符串嵌套引号的作用 #1.使用单引号进行嵌套 string = '"chengxuyuan"' print(type(string),string) #2.使用双引号进行引号嵌套 string1 = "'chengxuyuan'" print(type(string1),string1) #3.使用转义符进行引号嵌套 string3 = "\"chengxuyuan\"" string4 = '\'chengxuyuan\'' print(type(string3),string3) print(type(string4),string4)
2.7.2字符串的拼接
#字符串之间的拼接 print("chaofan"+"zhenshuai") #用加号和不用加号都可以 #字符串和变量之间的拼接 name = "chaofan" address = "baidu" tel = 155 print("我的名字是"+name,"我的地址在",address,"我的电话是",tel) #注意,如果用+号,可以将字符串链接起来,如果用逗号,会将字符串以空格隔开
2.7.3字符串格式化
数字类型格式化
总结:
字符串格式化的语法:print ("%s") % (变量)
常用的占位符有哪些 %s(字符串) %d(整数类型) %f(浮点类型)
#此代码反应格式化字符串、数字等的输出类型 #1.通过占位的方式,完成字符串拼接 name = "霞" ADC = "lol中ADC其中一个是%s"% name print(ADC) #2.通过占位的形式完成字符串和数字的拼接 name = "霞" skill = 4 name3 = "洛" many = "%s的技能有:%s" % (name,skill) print(f"{name}的技能有{skill}") #f的输出,后面会学到 print(many) #3.通过占位形式完成,数字的占位类型的拼接 name2 = "寒冰" Cd = 60 buff = 2.333 message = "%s的技能冷却时间是%d,buff冷却时间是%f" % (name2,Cd,buff) print(message)
2.7.4字符串的精度控制
2.8字符串快速格式化
语法:可以通过 f "内容{}" 的形式快速格式化
#本代码演示用f参数输出格式化数据类型 name2 = "寒冰" Cd = 60 buff = 2.333 message = "%s的技能冷却时间是%d,buff冷却时间是%fs" % (name2,Cd,buff) message_f = f"{name2}的技能冷却时间是{Cd},buff的冷却时间是{buff}s" print(message) print(message_f)
总结:这种方式不理会类型,不做精度控制,适合对精度没有要求的时候快速使用
2.9对表达式进行格式化
表达式:一条具有明确执行结果的代码语句
#对表达式进行直接格式化输出两种方法 print("字符串在python中的类型是 %s" % type("zifuchuan")) print(f"字符串在python中的类型是{type('zifuchuan')}")
如何格式化表达式
f"{表达式}"
“%s %d %f” % 表达式
3.0测试题
#本代码演示练习试题,股价计算程序,经过几天的增长后,股价达到了多少钱 name = "传智" stock_price = 19.99 stock_code = "003032" #formatted_code = '{:06o}'.format(stock_code) #此方法还待研究,在4行和5行代码中,{:06o} 是格式化字符串,其中的 0 表示输出的数字以零填充,6 表示总宽度为 6 个字符,o 表示八进制格式。 stock_price_daily_growth_factor = 1.2 growth_dath = 7 print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}") price =stock_price * stock_price_daily_growth_factor ** growth_dath print(("每日增长系数是:%.1f,经过%d天的增长后,股价达到了 %.2f") % (stock_price_daily_growth_factor,growth_dath,price))
3.1input语句掌握
数据输出:print
数据输入:input
#此代码演示input的语句 #1.输入input字样 name = input ("lol其中的一个ADC是谁") print (name) print(type(name)) #2.输入的语句不管什么都会是字符串类型,转换一下数字类型 many = input ("奥巴马的技能有几个") many = int(many) print (many,type(many))
总结:
1.input提示信息,用一在使用输入内容之前吸纳是提示信息
2.无论键盘输入什么语句,输出的数据类型都是字符串类型
练习
#此代码为input练习题展示 #请输入用户名称 user_name = input ("请输入用户名称") user_type = input ("请输入用户类型") print ("您好我是",user_name,"您是尊贵的",user_type,"用户,欢迎")
第三章Python判断语句
3.1布尔类型和比较运算符
布尔类型的字面量
True:表示真
False:表示假
定义比阿亮存储布尔类型数据
变量名称 = 布尔类型字面量
#此代码通过布尔值类型的判断语句 #通过定义True和False来定义 bool1 = True bool2 = False print(bool1,type(bool1)) print(bool2,type(bool2)) #通过比较运算符来定义 num_1 = 20 num_2 = 20 print(f"num_1和num_2的大小比较是{num_1 > num_2}") #字符串的比较运算符的定义 string1 = "霞" string2 = "奥巴马" print(f"输入的两个lol英雄的名字不一样{string1 != string2},输出的类型是布尔类型{type(string1 != string2)}")
除了可以定义布尔类型外,还可以通过比较运算符得到布尔类型
3.2if语句基本格式
#此代码演示if语句的基本使用 lolADC = input("请输入lolADC的英雄个数") if lolADC <= "30": print(f"lolADC的英雄有{lolADC}个") else: print("lolADC的英雄大于30个")
总结:
if语句的基本格式
练习
#此代码测试游乐场成年收费,儿童免费 print("欢迎来到游乐场,儿童免费,成人收费") age = int(input("请输入你的年龄")) if age >= 18: print("您已经成年,需要补票10元") print("祝您游玩愉快")
3.3else语句
总结:
if和其代码快,条件满足时执行
else搭配if的判断条件,当不满足时候执行
注意事项:
else不需要判断条件,if条件不满足,else执行
else也需要执行四个缩进
#此代码演示elese代码语句 print("欢迎来到动物园") height = int(input("请输入你的身高(cm)")) if height >= 120: print("您的身高超过120cm,游玩需要购票10元") else: print("您的身高未超过120cm,可以免费游玩") print("祝您游玩愉快")
3.4elif语法
ctrl / 选中内容注释
# #此代买演示elif示例(此代码内容如果第一条判断成功还会继续判断,输出第一条) hero = int(input("请输入lol的英雄个数:")) hero_skin = int(input("请输入lol的皮肤个数:")) vip_leavel = int(input("请输入自己的VIP等级{1..5}:")) if hero >=100: print("英雄数量超过了90%的玩家,可以上号") elif hero_skin >=60: print("英雄皮肤数量超过了90%的玩家,可以上号") elif vip_leavel >=3: print(f"你的vip等级是{vip_leavel}级,可以上号") else: print("您的条件都不满足,不能上号") #此代码演示简便写法,不需要定义变量(此代码内容如果第一条条件判断成功则直接输出,以此类推) # if int(input("请输入lol的英雄个数:")) >=100: # print("英雄数量超过了90%的玩家,可以上号") # elif int(input("请输入lol的皮肤个数:")) >= 60: # print("英雄皮肤数量超过了90%的玩家,可以上号") # elif int(input("请输入你的vip_leavel")) >= 3: # print("你的vip级别大于3可以上号") # else: # print("您的条件都不满足,不能上号")
注意点:
练习、
#此代码演示elif使用简洁 int_type =10 if int(input("请输入你猜的数字:")) == int_type: print("恭喜你,猜对了") elif int(input("请再次输入你猜的数字")) == int_type: print("恭喜你,猜对了") elif int(input("最后一次输入你猜的数字")) == int_type: print("恭喜你,猜对了") else: print(f"都没猜对,我想的数字是{int_type}")
3.5判断语句的嵌套
3.5.1案例需求1
#此代买演示if嵌套的需求 age = int(input("请输入你的年龄")) if 18 <= age < 30: print("你的年龄在预期内") if int(input("请输入你的入职时间year:")) >2: print("你的入职时间大于2年,可以领取奖品") elif int(input("请输入你的级别:")) >3: print("你的级别大于3,可以领取奖品") else: print("你的级别和级别和入职时间都不满足,不能领取") else: print("不好意思,你的年龄不满足,不能领取")
3.5.2案例需求2
#此代码演示if嵌套案例2 #首先定义一个变量,变量内存储随机数字{1..10} import random num = random.randint(1,10) print(num) #有三层嵌套的机会,通过3层嵌套来实现 #每次猜不中都会提示大了或者小了 number = int(input("第一次请输入你猜的数字:")) if number == num: print("恭喜你猜对了") else: if number > num: print("sorry,猜大了") else: print("sorry,猜小了") number = int(input("第二次请输入你猜的数字:")) if number == num: print("恭喜你猜对了") else: if number > num: print("sorry,猜大了") else: print("sorry,猜小了") number = int(input("第三次请输入你猜的数字:")) if number == num: print("恭喜你猜对了") else: print(f"正确数字是{num}")
3.6总结
if嵌套循环当中,如果第一条if循环结果执行完成后,还会接着往下执行,如果应用的是elif,则是判断两个条件满足一条即可
第四章Python循环语句
4.1while循环的基础语法
#此代码演示while循环 i = 0 while i <100: print("表白100次") i =i+1
练习案例:
通过while循环,计算从1累加到100的和
#计算从1累加到100的和 num =1 num1 = 0 while num <= 100: #循环100次 num1 = num1 + num num =num +1 print(f"1累计加到100的和是{num1}")
4.2while循环的基础案例
#猜数字案例 import random num = random.randint(1,100) print(num) count= 0 #请输入一个变量,来定义while循环的终止 flag = True while flag: number = int(input("请输入你猜的数字")) count = count + 1 if number == num: print("恭喜你,猜对了") flag = False else: if number > num: print("猜大了") else: print("猜小了") print(f"你猜了{count}次")
4.3while循环的嵌套应用
注意条件的控制,避免无限循环,多层嵌套,主要空格缩进来确定层次关系
循环条件的控制,层次越多越复杂
案例:表白100天,每天都会送10朵玫瑰花
#此代码演示while嵌套循环案例 #每天表白100次。每天送10朵玫瑰花 day = 0 while day <=100: print(f"今天是表白的第{day}天") flower = 1 while flower <=10: print(f"第{day}天,你送了{flower}朵玫瑰花") flower = flower +1 day = day +1 print(f"恭喜你表白成功,你表白了{day-1}天")
4.4while嵌套循环案例
输出语句不换行
print("hello")
print("world")
如何将上面的不换行
print("hello", end='') print("world", end='')
99乘法表
#此代买演示99乘法表 #i定义行数 i = 0 while i <= 9: i = i + 1 #j定义i行有j个 j = 1 while j <= i: print(f"{j}*{i}={j * i}""\t",end='') j = j+1 print()
4.5for循环的基础语法
while循环的循环条件是自定义的,自行控制循环条件
for循环是一种轮询机制,是对一批内容进行逐个处理
总结:
for 临时变量 in待处理数据集:
循环满足条件是执行的条件
for循环无法定义循环条件,只能从被处理的数据集中,依次去除内容进行处理,for循环无法进行无限循环
无法定义循环条件,只能被动取出数据处理
注意循环内的语句,需要有空格缩进
#此代码演示for循环基础语法使用 # name = "lolhero" # for i in name: # print(i) #统计name变量中有几个a name = "lolhero aobama xia hanbing dazui" count = 0 for i in name: print(i) if i == "a": count = count +1 print(f"a有{count}个")
4.5.1range语句
语法1:
range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)
例如range(5),取得的数是[0,1,2,3,4]
此代码演示range语法 for i in range(10): print(i) #获得的数是[0,1,2,3,4,5,6,7,8,9],不包含10本身
语法2:
range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num本身)
如range(5,10)取得的数是[5,6,7,8,9]
for x in range(5,10): print(x) #获得的数是[5,6,7,8,9],不包含10本身
语法3:
range(num1,num2,step)
获得一个从num1开始,到num2结束(不含num2),以step数为+的数
如range(5,10,2)取得的数是[5,7,9]
for a in range(10,100,8): print(a) #获得的数是[10,18,26,34....98],不包含100本身
总结:
range的语句功能是获取数字序列
#此代买演示range的用法,求100以内有多少偶数 num = 100 count = 0 for i in range(1,num): if i % 2 == 0: count = count + 1 print(f"1到100(不含100本身)有{count}个偶数")
4.5.2变量作用域
临时变量,再变成规范上,作用范围(作用域),只限定在作用域内
1.for循环中临时变量,起作用域限定为:循环内
2.这种限定,不遵守也能运行,不建议这样做,如需访问临时变量,可以提前在循环外定义它
4.6for循环的嵌套使用
总结:
1.for 循环的嵌套语法
2.注意事项:注意缩进,for循环和while循环可以相互嵌套
#此代码演示for循环的嵌套语句 #99乘法表 #定义一个i变量有几行 for i in range(1,10): #定义一个j变量来控制每一行有几个相乘的数 for j in range(1,i+1): print(f"{i}*{j}={i * j}""\t", end='') print()
4.7循环中断,break和continue
#continue的中断语句 for i in range(1,5): print("lol") continue print("hero") print("----------------------------------------------------") #continue的嵌套中断语句 for i in range(1,10): print("lol") for a in range(1,3): print("hero") continue print("ADC") print("AP")
#break的应用 for i in range(1,101): print("hero") break print("lol") print("ADC") print("----------------------------------------------------") #break的嵌套应用 for i in range(1,5): print("xia") for a in range(1,30): print("hanbing") break print("aobama") print("dazui")
总结:
continue的作用:中断所在循环中的当次执行,进入下次执行
break作用:直接中断for循环的执行,直接结束
两者在while和for循环中作用一致,在嵌套循环中,无法对上次的循环起作用
4.8综合案例
#发工资代码功能 #首先定义变量工资 1w money = 10000 #员工编号(1,20),如果积分小于5,则不发工资跳过,如果工资发完,则结束发工资 for i in range(1,21): # 定义随机变量num,为随机生成的员工积分 import random integral = random.randint(1, 10) if integral < 5: continue # 用于结束员工的积分不够 else: money = money - 1000 print(f"{i}号员工发了1000元") if money == 0: print("工资已经发完,请下个月再领取") break
第五章Python函数
5.1函数
函数:是组织好的,可重复使用的,用来实现特定功能的代码块
使用函数为了提高应用性,减少重复性,为了特定需求可重复利用的代码段
#此代码演示def函数对于统计字符长度 name1 = "hero" name2 = "lol" name3 = "ADC" def lenth(data): count = 0 for i in data: count = count +1 print(f"{data}字符长度是{count}个") lenth(name1) lenth(name2) lenth(name3)
5.2函数的定义
5.2.1函数的基本语法
def 函数名(传入参数):
函数体
return 返回值
函数的调用
函数名(参数)
注意事项:
函数使用步骤:
先定义函数,后调用函数
#定义def函数用法 def name(): print("hello,world") #调用函数语法 name()
案例:
#调用函数语法,输出语句 def huanying(): print("欢迎来到lol") print("请选择你的hero") huanying()
5.3函数的参数
#定义一个函数 def num(x,y): result = x + y print(f"{x}+{y}的结果是{result}") num(1,10)
传入的参数的数量是不受限制的:
总结:
案例:
#定义函数接受参数传入(数字类型,表示体温) import random x = random.randint(30, 40) print(x) def num(x): #在函数内进行体温判断,正常范围小于等于37.5 if x < 37.5: print(f"你的体温是{x},正常体温,可以进入") else: print(f"你的体温是{x},大于37.5,不能进入") num(x)
5.4函数的返回值
5.4.1函数返回值的定义return
所谓返回值,程序中函数完成事情后,最后给调用的结果
函数返回值返回语法
def 函数(参数..):
函数体
return 返回值
变量 = 函数(参数)
注意:return后的代码都不会执行了
#此代码演示return返回值示例 #首先定义函数 def add(a,b): result = a+b #执行return返回值 return result #定义变量调用add函数 r = add(11,22) print(r)
5.4.2 None类型
None类型的应用场景
#此代码演示none返回值类型 #无return的返回值类型 def say_hi(): print("nihao") result = say_hi() print(f"无return的返回值类型,返回内容是{result}") print(f"无return的返回值类型,返回内容的类型是{type(result)}") #有return的返回值类型,输出None def say_hi1(): print("nihao") return None result = say_hi1() print(f"无return的返回值类型,返回内容是{result}") print(f"无return的返回值类型,返回内容的类型是{type(result)}") #Nono用于if函数 def check(age): if age > 18: return "SUCCESS" else: return None result1 = check(16) if result1 == None: print("不好意思,你的年龄小于18,不能进入") #None用于变量 name = None
5.5函数的说明文档
5.6函数的嵌套调用
总结:
1.函数的嵌套使用中,调用另一个函数
2.函数A执行到调用函数B的语句,会将函数B全部调用完成后,继续执行函数A的内容
#嵌套函数的调用 #声明函数B def func_b(): print("--------2------") def func_a(): print("--------1------") func_b() print("--------3------") func_a()
5.7变量的作用域
5.7.1局部变量
#局部变量 def num1(): num = 2 print(num) num1() print(num) #局部变量不能作用全剧变量
5.7.2全局变量
#全局变量声明局部变量,在函数北部和外部均可使用 shuzi = 4 def state_a(): print(shuzi) def state_b(): shuzi = 5 print(shuzi) state_a() state_b() print(shuzi)
5.7.3global关键字,声明全局变量
#global声明关键字全局变量 shuzi = 4 def state_a(): print(shuzi) def state_b(): global shuzi shuzi = 5 print(shuzi) state_a() state_b() print(shuzi)
5.8综合案例
#代码演示ATM机器 #定义全局变量银行卡余额和客户姓名 money = 5000000 name = input("请输入你的姓名") #定义查询余额函数 def query(header): #定义header函数是可以为True,为True时会输出查询yue的字样,如果定义query为False时,直接输出余额多少元 if header: print("--------查询余额-----") print(f"{name},你好,你的余额是{money}元") #定义存款函数 def saving(num): global money money = money + num print("----------存款-------") print(f"{name},你好,你的存款{num}元成功") query(False) #调用query函数查询余额 #定义取款函数 def get_money(num): global money money = money - num print("----------取款-------") print(f"{name},你好,你取款{num}元成功") query(False) #调用query函数查询余额 #定义主菜单函数 def main(): print("-------主菜单-----") print("查询余额\t [1]") print("存款\t\t [2]") print("取款\t\t [3]") print("退出\t\t [4]") return input("请输入你的选择") #循环调用函数 while True: key = main() if key == "1": query(True) continue elif key == "2": num = int(input("请输入你的存款金额")) saving(num) continue elif key == "3": num = int(input("请输入你的取款金额")) get_money(num) continue else: print("程序退出") break