b站黑马程序员视频链接记笔记懒的打字的用winH语音转文字哦#第一天pycharm常用快捷键ctrl / 注释快捷键双引号包裹的叫字符串。单行注释#开头 和注释内容建议以一个空格隔开多行注释三对双引号变量就是在程序运行时记录数据用的格式变量名称变量的值变量的值可以变print()里面输出多份内容用隔开三类数据类型string、int、float验证数据类型:语法 type(被查看类型的数据)查看的是变量存储的数据类型变量无类型它的存储数据有name哈哈哈 name_typetype(name) print(name_type)转换类型numstr(11) print(type(num),num)任何类型都可以转换成字符串字符串转成数字必须字符串内是数字浮点数转整数会丢尾数缺失精度标识符只允许出现英文数字下划线中文中文不推荐数字不可以开头英文大小写敏感可以被区分不可以使用关键字大小写敏感完全一样才报语法错误运算符算术运算符-*/ // % **//整除 %取余 **次方赋值运算符复合型赋值运算符 表示的是将本身去进行运算 例子c a等效于 c ca单引号双引号三引号都可以定义字符串三引号可以分行类似注释字符串本身带有引号则本身是有单引号我们就使用双引号定义反之有双我们用单或则使用\转义字符name 哈哈哈 print(name) name 刚刚 print(name) name \好坏\ print(name) name \积极\ print(name)打印出来哈哈哈 刚刚 好坏 积极字符串拼接字符串与字符串进行拼接不能和非字符串进行拼接字符串格式化%占位 s把变量放进来name 一一一 message 我是%s %name print(message) class_num 57 avg_salary 1234 message 北京%s期毕业平均工资%s %(class_num,avg_salary) print(message)我是一一一 北京57期毕业平均工资1234数据类型占位%s内容转字符串 %d 转整数 %f 转浮点型数字精度控制m.n形式控制m为宽度.n为精度会对小数部分进行四舍五入限制m比数子本身宽度还小m不生效#第二天字符串格式化2语法f内容{变量}不理会类型不做精度控制name 哈哈哈 set_up_year_ 2002 stock_price 19.9 print(f我是{name},成立于:{set_up_year_},今天股价为:{stock_price})对表达式进行格式化表达式一条具有明确执行结果的代码语句综合小练习股票计算小程序name 传智播客 stock_price 19.99 stock_code 1003032 stock_price_daily 1.2 growth_days 7 print(f公司{name},股票代码{stock_code},当前股价{stock_price}) print(每日增长系数是%.1f,经过%d天增长股价达到了:%.2f %(stock_price_daily,growth_days,stock_price*stock_price_daily**growth_days))公司传智播客,股票代码1003032,当前股价19.99 每日增长系数是1.2,经过7天增长股价达到了:71.63input语句数据输入默认输出字符串类型print(请告诉我今天星期几) day input() print(我知道了今天%s %day)请告诉我今天星期几 星期一 #我自己输入的 我知道了今天星期一也可以等同于printday input(请告诉我今天星期几) print(我知道了今天%s %day)转类型num input(银行卡密码) num int(num) print(银行卡密码类型是, type(num))判断语句比较运算符布尔类型bool1 True bool2 False print(fbool1变量内容是{bool1},类型是{type(bool1)}) print(fbool2变量内容是{bool2},类型是{type(bool2)}) num1 10 num2 10 print(num1num2) name1 qqq name2 www print(name1!name2)if判断语句print(欢迎来到儿童乐园儿童免费成人收费) age input(请输入你的年龄:) age int(age) if age18: print(你已经成年需要购票) print(祝你玩的愉快)if else用法print(欢迎来到儿童乐园儿童免费成人收费) age input(请输入你的年龄:) age int(age) if age18: print(你已经成年需要购票) else: print(你不需要购票) print(祝你玩的愉快)if elif else用法判断是互斥且有顺序的上一个满足后面就不会判断了空格缩进不可省if int(input(请输入身高cm))120: print(免费) elif int(input(请输入vip等级))3: print(免费) elif int(input(今天几号))1: print(免费) else: print(需要购票)判断语句的嵌套if int(input(请输入身高cm:)) 120: print(身高超出免费区间) print(如果vip等级大于3可以免费) if int(input(vip等级)) 3: print(免费) else: print(需要买票) else: print(免费)练习题发礼物限制年龄18-30且工作时间两年以上或者等级3级以上if 18int(input(请输入年龄))30: print(年龄满足) if int(input(请输入入职时间))2: print(满足条件) elif int(input(请输入等级))3: print(满足) else: print(不满足) else: print(不满足)猜数字游戏案例三次机会要有提示猜的数字对应的情况import random num random.randint(1,10) guess_num int(input(请输入数字)) if guess_numnum: print(第一次就猜对了) else: if guess_numnum: print(猜大了你还有两次机会) else: print(猜小了你还有两次机会) guess_num int(input(再次输入数字)) if guess_num num: print(第二次猜对了) else: if guess_num num: print(猜大了你还有一次机会) else: print(猜小了你还有一次机会) guess_num int(input(请再次输入数字)) if guess_num num: print(第三次猜对了) else: print(猜错了没有机会了)while循环语句条件需提供布尔类型结果True继续False结束空格缩进不能忘规划好循环终止条件否则无限循环求1-100的和i1 sum0 while i100: sum sumi i 1 print(1-100的和为,sum)猜数小游戏无限次并输出猜测次数import random num random.randint(1,100) #记录猜测次数 count 0 #通过一个布尔类型的变量做循环是否继续的标记 flag True while flag: guess_num int(input(请输入你猜的数字)) count 1 if guess_num num: print(猜中了) flag False else: if guess_num num: print(猜大了请重猜) else: print(猜小了请重猜) print(f你一共猜测了{count}次)#第三天while嵌套循环表白案例i 0 while i100: print(f这是第{i}天进行表白) j 1 while j10: print(f送{j}枝玫瑰) j 1 print(我爱你) i 1 print(f第{i-1}天表白成功)While循环打印九九乘法表案例使用print语句输出不换行在括号里加end \t 制表符效果等同于键盘按下tab键 使多行字符串进行对齐i 1 while i9: j 1 while j i: print(f{j}*{i}{j*i}\t,end) j 1 i 1 print()for循环本质上是遍历语法从待处理数据集中逐个取出数据赋值给临时变量for临时变量 in 待处理数据集循环满足条件时执行的代码待处理数据集称之为序列类型其内容可以一个个依次取出的一个类型统计字母a的个数案例name hduwdfuweiaaaadhudqwaa count 0 for x in name: if xa: count 1 print(f有{count}个a)range语句获取一个简单的数据序列语法range(num)获取一个从0开始到num结束的数字序列不含num本身语法2range(num1,num2)获取一个从num1到num2的数字序列不含num2本身语法3range(num1,num2,step)获取一个从num1到num2结束的序列(不含num2本身数字步长以step为准默认为1假设为2则是隔一个取一个表白案例i 1 for i in range(1,101): print(f表白第{i}天) for j in range(1,11): print(f送的第{j}朵花) print(我喜欢你) print(f第{i}天表白成功)for循环打印九九乘法表i 1 for i in range(1,10): j 1 for j in range(1,i1): print(f{j}*{i}{j*i}\t, end) j 1 i 1 print()continue中断本次循环直接进入下一次循环可用于for循环和while循环效果一致只对自己所在循环生效break直接终止所在的本次循环发工资案例自己写的不知道对不对20个员工公司有一万奖金绩效大于5可领取i 1 sum 10000 for i in range(1,21): import random num random.randint(1, 10) while num5: if sum 1000: sum - 1000 print(f向员工{i}发放工资1000元账户余额还剩{sum}元) else: print(f员工{i}绩效合格但工资发完了下个月再来领取) break else: print(f员工{i}绩效分{num}分低于5不发工资下一位) continue i 1函数定义语法def 函数名传入参数函数体return 返回值使用步骤先定义函数后调用函数参数不需要可以省略返回值不需要可以省略#定义函数 def add(x,y): #形参 result xy print(f{x}{y}结果是{result}) #调用函数 add(1,2) #实参def add(a,b): result ab return result radd(5,6) print(r)#第四天None类型空的无实际意义用于声明无内容的变量使用在函数返回值、if判断、变量定义函数说明文档通过多行注释形式对函数进行说明解释鼠标悬停在调用函数上会显示说明文档函数嵌套调用一个函数里面调用了另一个函数def funb(): print(2) def funa(): print(1) funb() print(3) funa()变量变量作用域指的是变量的作用范围分为局部变量和全局变量局部变量是定义在函数体内部的变量只在函数体内部生效全局变量在函数外面定义变量全局变量代码num 200 def test_a(): print(ftest_a:{num}) def test_b(): num 500 print(ftest_b:{num}) test_a() test_b() print(num)test_a:200 test_b:500 200global关键字将函数内定义的变量声明为quanum 200 def test_a(): print(ftest_a:{num}) def test_b(): global num #设置内部定义的变量为全局变量 num 500 print(ftest_b:{num}) test_a() test_b() print(num)test_a:200 test_b:500 500取款机案例money 5000000 name input(请输入姓名) def query(show_header): if show_header: print(----------查询余额--------------) print(f{name},你的余额剩余{money}元) def saving(num): global money money num print(--------------存款----------------) print(f{name},你存款{num}元成功) query(False) def get_money(num): global money money - num print(--------------取款----------------) print(f{name},你取款{num}元成功) query(False) def main(): print(--------------主菜单-------------------) print(f{name},欢迎来到ATM请选择操作) print(查询余额/t[输出1]) print(存款/t[输出2]) print(取款/t[输出3]) print(退出/t[输出4]) return input(请输入你的选择) #设置循环 while True: keyboard_input main() if keyboard_input 1: query(True) continue elif keyboard_input 2: numint(input(请输入存款金额)) saving(num) continue elif keyboard_input 3: numint(input(请输入取款金额)) get_money(num) continue else: print(程序退出) breakpython数据容器一个容器可以容纳多份数据每一份数据称之为1个元素每一个元素可以是任意类型的数据如字符串、数字、布尔容器根据特点不同分为五类列表、元组、字符串、集合、字典下标索引从前往后从0开始递增从后往前从-1开始递减下标索引取值范围超出范围无法取出会报错my_list [haha,jajaja,kakakka] print(my_list[0]) print(my_list[1]) print(my_list[2]) print(my_list[-1]) print(my_list[-2]) print(my_list[-3]) my_list [[1,2,3],[4,5,6]] print(my_list[1][1]) #第一个[]为0 第二个为1 取德第二个里面的第二个 print(my_list[-2][1]) #第一个[]为-2 第二个为-1 取德第一个里面的第二个haha jajaja kakakka kakakka jajaja haha 5 2列表的常用操作插入、删除元素、清空列表、修改元素、统计元素个数这一系列功能称为列表的方法查找下标语法列表.index(元素)my_list [haha,jajaja,kakakka] index my_list.index(haha) print(fhaha下标索引是:{index})修改下标索引的值my_list[0]hhhhh print(f修改后的值为{my_list})插入元素语法列表.insert(下标元素)在指定下标位置插入指定元素my_list.insert(1,best) print(f插入后结果是{my_list})追加元素语法列表.append(元素)指定元素追加到列表的尾部my_list.append(babab) print(f插入后结果是{my_list})语法列表.extend(其他数据容器)将其他数据容器的内容取出依次追加到列表尾部元素删除语法1del 列表[下标]语法2列表.pop(下标)语法3列表.remove(元素清空列表语法列表.clear()统计某元素在列表的数量语法列表count(元素)统计列表内有多少元素语法len(元素)练习案例mylist [21,25,21,23,22,20] mylist.append(31) print(f追加数字{mylist}) mylist.extend([29,33,30]) print(f追加数字{mylist}) print(f取出第一个元素{mylist[0]}) print(f取出最后元素{mylist[-1]}) index mylist.index(31) print(f31下标为{index})追加数字[21, 25, 21, 23, 22, 20, 31] 追加数字[21, 25, 21, 23, 22, 20, 31, 29, 33, 30] 取出第一个元素21 取出最后元素30 31下标为6#第五天列表的遍历——while循环my_list [hde,huidwq9,jioqhih] index 0 while index len(my_list): element my_list[index] print(f列表元素{element}) index 1for循环def list_for_func(): my_list[1,2,3,4] for element in my_list: print(f元素列表有{element}) list_for_func()while和for循环对比while可以自定义循环条件for不可以只可以一个个取出while可以通过控制条件实现无限循环for理论上不可以因为被遍历的容器容量不是无限的while循环适用于任何想要的场景for适用于遍历数据容器的场景或简单的固定次数循环场景输出偶数列表案例my_list[1,2,3,4] even_for [] for element in my_list: if element % 2 0: even_for.append(element) print(f元素列表有{even_for}) even_whlie [] index0 while indexlen(my_list): current my_list[index] if current%20: even_whlie.append(current) index 1 print(f元素列有有{even_for})元组列表可以修改传递信息不能修改列表就不合适了元组一旦定义完成就不可修改元组也可以封装多个不同类型的元素在内可以修改内部list的内部元素使用小括号定义使用逗号隔开数据数据可以是不同的数据类型操作方法index 、count 、len(元组)特点支持for循环 、和list基本相同唯一不同在于不可修改小案例t1 (周杰伦,11,[aaaa,bbbb]) indext1.index(11) print(f{index}) name t1[0] print(name) t1[2].remove(aaaa) print(t1) t1[2].append(ccc) print(t1)字符串字符的容器一个字符串可以存放任意数量的字符长度任意支持下标索引允许重复字符串存在不可以修改支持for循环字符串替换语法字符串.replace(字符串1字符串2)将字符串内全部字符串1替换成字符串2不是修改字符串本身而是得到一个新字符串字符串分割语法字符串.split(分隔符字符串)按照指定的分隔符字符串将字符串划分为多个字符串并存入列表对象中字符串本身不变而是得到了一个列表对象字符串的规整操作语法字符串.strip() #去前后首位空格语法字符串.strip(字符串) #去前后指定字符串案例t iiiiudwh iuhduiewq wduh num t.count(i) print(num) new t.replace( ,|) print(new) list new.split(|) print(list)#第六天序列切片不省略下标结束那个不取省略了取从头到尾案例t asdhu shdiqwhd wuhd result t[::-1][5:13] print(result) result2 t[6:14][::-1] print(result2)集合去重无序下标索引不支持访问可以用for循环进行变量不可以用while案例去重my_list [aaa,bbb,ccc,aaa] my_set set() for i in my_list: my_set.add(i) print(my_list) print(my_set)[aaa, bbb, ccc, aaa] {bbb, ccc, aaa}字典提供基于key检索value的场景实现可以是任意类型key不可为字典key不可以重复重复添加等于覆盖原有数据不可以用下标索引常用操作升职加薪案例my_dict { A:{ 部门:科技部, 工资:4000, 级别:1 },B:{ 部门:科技部, 工资:3000, 级别:2 },C:{ 部门:科技部, 工资:3000, 级别:1 },D:{ 部门:科技部, 工资:3000, 级别:2 } } for i in my_dict: if my_dict[i][级别]1: my_my_dict my_dict[i] my_my_dict[级别] 2 my_my_dict[工资] 1000 my_dict[i] my_my_dict print(my_dict)数据容器分类应用场景容器通用功能#第七天字符串大小比较从头到尾一位位比较其中一位大后面就无需比较了单个字符通过ASCII码表确定字符对应的码值数字来确定大小函数的多返回值def test_return(): return 1,aaa,True x,y,z test_return() print(x,y,z)函数参数种类def user_info(name,age,gender): print(f姓名是{name},年龄是{age},性别是{gender}) #位置参数 —— 默认使用形式 user_info(小明,20,男) #关键字参数 user_info(name小王,age11,gender女) user_info(age10,gender女,name潇潇) #可以不按照参数的定义顺序传参 #缺省参数默认值 def user_info(name,age,gender男): print(f姓名是{name},年龄是{age},性别是{gender}) user_info(小天,13) user_info(小天,13,gender女) #不定长参数匿名函数使用lambda关键字进行定义语法lambda 传入参数函数体一行代码用于临时构建一个函数只用一次的场景函数体只能写一行代码多行要使用def定义带名函数文件操作文件编码翻译规则记录如何将内容翻译成二进制以及如何将二进制翻译回可识别内容文件读取操作f open(C:/Users/佳美/Desktop/text.txt,r,encodingUTF-8) #方式1读取全部内容 # content f.read() # count content.count(aaa) # print(content) # print(count) #方式2读取内容一行一行读 count 0 for line in f: line line.strip() #去除开头结尾的空格和换行 words line.split( ) for word in words: if word aaa: count 1 print(count) f.close()文件写操作文件追加操作同上操作把w换成af open(C:/Users/佳美/Desktop/text.txt,a,encodingUTF-8) f.write(dgwvuivuehahahha) f.close()