Python学习笔记实用技巧及知识点汇编
交换变量的值a,b,c10,20,30print(a,b,c)a,b,cb,c,aprint(a,b,c)输出结果:102030203010链式比较score75if70score80:print(成绩:良)快速合并字典dict1{数学:90,语文:98,英语:93}dict2{地理:78,化学:70}dict3dict1dict2print(dict3)输出结果:{数学:90,语文:98,英语:93,地理:78,化学:70}将两个列表组合成一个字典key〔数学,语文,英语〕value〔90,99,87〕resultdict(zip(key,value))print(result)输出结果:{数学:90,语文:99,英语:87}对列表元素进行随机排序(洗牌效果)importrandomlst〔1,2,3,4,5,6,7,8,9,0〕random。shuffle(lst)print(lst)输出结果:〔2,7,4,6,3,8,5,1,0,9〕从列表中选择指定个数的随机且不重复的元素(抽奖效果)importrandomlst〔z,b,Ab,CDE,5,6,100,True,3。14〕resultrandom。sample(lst,3)print(result)输出结果:〔6,z,CDE〕从列表或字符串中随机选择一个元素或字符(可用于生成验证码或动态密码)importrandomstr10123456789abcdefghijklmnopqtstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!()resultforiinrange(8):resultresultrandom。choice(str1)print(result)输出结果:ZItOAZyC语音朗读文本importwinsoundimportwin32comfromwin32com。clientimportDispatch,constantsimporttimespeakoutwin32com。client。Dispatch(sapi。spvoice)str今天的气温是零下19度speakout。speak(str)输出方言解释winsound。PlaySound(str,winsound。SNDASYNC)输出结束音time。sleep(3)不加延迟程序马上结束,上面语句的结束音出不来计算两个日期时间差importdatetimeday1datetime。datetime(2022,7,17)day2datetime。datetime(2022,10,8)print(f{day1。strftime(Ymd)}与{day2。strftime(Ymd)}相隔了str((day2day1)。days)天!)输出结果:20220717与20221008相隔了83天!阿拉伯数字快速转换为中文数字info〔零,一,二,三,四,五,六,七,八,九〕datainput(请输入数字:)foriinrange(len(data)):print(info〔int(data〔i〕)〕,end)输出结果:请输入数字:3698三六九八else与for和while搭配使用(如果循环执行完毕,没有遇到break,则执行else)fornuminrange(3):pwdinput(请输入密码:)ifpwd8888:print(输入的密码正确!)breakelse:print(输入的密码错误,请重新输入!)else:print(输入次数达到上限,系统将自动退出!)蜂鸣器鸣叫importtime,sys,ctypestime库中包含sleep延迟函数sys库中包含stdout标准输出刷新函数flushctypes库中包含Beep(首字母大写)蜂鸣器,第一个参数是频率,第二个参数是鸣叫时长playerctypes。windll。kernel32foriinrange(1,11):print(r,i,endd0i)r表示返回行首,在字符串里显示必须用sys。stdout。flush()player。Beep(1000,100)time。sleep(1)player。Beep(2000,1000)异常处理之else和finally(如果未发生异常则执行else,而无论是否发生异常都必须执行finally,即使前面有return语句)deffunc(opr):result0try:aint(input(请输入第一个数:))bint(input(请输入第二个数:))ifopr:resultabelifopr:resultabelifopr:resultabelifopr:resultabelse:print(您输入的操作符错误!)exceptExceptionaserr:print(出错啦!出错信息:,err)else:print(运行未发生错误)returnresult由于有finally语句,这条return语句会在finally下面的语句执行完毕后再执行finally:print(执行finally语句)rfunc()print(返回结果:,r)运行结果:请输入第一个数:2请输入第二个数:0运行未发生错误执行finally语句返回结果:2字符串内容逐字循环输出importsysimporttimedefrepeat(string):sys。stdout。write(r)回车,让光标回到行首sys。stdout。flush()刷新,即输出缓冲区数据foriinstring:遍历字符串sys。stdout。write(i)写到缓冲区sys。stdout。flush()输出time。sleep(0。3)延迟0。3毫秒whileTrue:repeat(ABCDEFGHIJKLMNOPQRSTUVWXYZ)将字符串中数量不等的连续空格统一变成一个空格word编号姓名性别年级学校奖项listword。split()listnew〔iforiinlistifi!〕new。join(listnew)print(new)输出结果:编号姓名性别年级学校奖项巧用列表判断日期对应星座(不需要反复判定月份和日期范围)defsign(m,d):判断星座函数ifddate〔m1〕:如果日期小于该月在date列表中对应的日期临界值print(signlist〔m1〕)直接输出星座列表中对应月份的星座else:print(signlist〔m〕)否则输出星座列表中下一月对应的星座date〔20,19,21,20,21,22,23,23,23,24,23,22〕每个月份的星座日期临界值signlist〔摩羯座,水瓶座,双鱼座,白羊座,金牛座,双子座,巨蟹座,狮子座,处女座,天秤座,天蝎座,射手座,摩羯座〕sign(7,15)调用星座判断函数输出结果:巨蟹座巧用字典判断身份证号信息(字符用于连接上下两行语句)dic{11:北京市,12:天津市,13:河北省,14:山西省,15:内蒙古自治区,22:吉林省,23:黑龙江省,31:上海市,32:江苏省,33:浙江省,35:福建省,36:江西省,37:山东省,41:河南省,42:湖北省,44:广东省,45:广西壮族自治区,46:海南省,50:重庆市,51:四川省,53:云南省,54:西藏自治区,61:陕西省,62:甘肃省,63:青海省,65:新疆维吾尔自治区,71:台湾省,81:香港,82:澳门}defidget(str):ifdic。get(str):returndic〔str〕else:return未知省份instrinput(请输入您的身份证号:)ifinstr〔:16〕。isdigit()andlen(instr)18:print(你来自:,idget(instr〔0:2〕))print(你的生日是:instr〔6:10〕年instr〔10:12〕月instr〔12:14〕日)gender女ifint(instr〔16〕)20else男print(你的性别是:gender)输出结果:请输入您的身份证号:220000198308124527你来自:吉林省你的生日是:1983年08月12日你的性别是:女巧用随机数和字符串切片完成成语答题效果importrandomlist〔春暖花开,十字路口,千军万马,白手起家,张灯结彩,风和日丽,万里长城,人来人往,自由自在,瓜田李下,助人为乐,白手起家,红男绿女,春风化雨,马到成功,拔苗助长,安居乐业,走马观花,念念不忘,落花流水,张灯结彩,一往无前,落地生根,天罗地网,东山再起,一事无成,山清水秀,别有洞天,语重心长,水深火热,鸟语花香,自以为是〕i1count20print(直接填写答案,回车进入下一关。什么也不填忽略本成语!!)whileTrue:wordrandom。choice(list)随机选择成语bankrandom。randint(0,3)随机生成要抹去的字newword〔:bank〕word〔bank1:〕输出考题print(new)numinput(输入:)ifnotnum:如果直接回车则略过此题print(过!)continueelifnum。strip()word〔bank〕:count2print(正确,你真棒!)else:count2print(错了,正确答案:,word〔bank〕)i1ifi3:答题次数breakprint(选手最后得分:,count)输出结果:直接填写答案,回车进入下一关。什么也不填忽略本成语!!风和丽输入:日正确,你真棒!往无前输入:过!马到成输入:功正确,你真棒!自自在输入:由正确,你真棒!选手最后得分:26根据日期生成产品序列号typenumBRM8Sdate2021:12:28datedate。split(:)yearnumdate〔0〕〔2:〕monthhex(int(date〔1〕))。replace(0x,)取月份的十六进制字符daydate〔2〕datenumyearnummonthdaystart100countint(input(请输入要生成的产品序列号(SN)数量:))snforiinrange(count):numtypenumdatenumstr(starti)。zfill(5)用0填充空位snnumprint(sn)以横式条形图的形式形象展示GDP数据gdp广东:97277。77:107671。07江苏:92595。40:99631。52山东:76469。70:71067。5浙江:56197。00:62353河南:48055。90:54259。2四川:40678。10:46615。82湖北:39366。60:45828。31湖南:36425。78:39752。12河北:36010。30:35104。5福建:35804。04:42395gdpdict{}gdplist〔〕base3000newgdp。split()切割列表foriteminnew:gdplistitem。split(:)切割字符串gdpdict。update({gdplist〔0〕:〔gdplist〔2〕,gdplist〔1〕〕})生成字典upsorted(gdpdict。items(),keylambdax:float(x〔1〕〔0〕),reverseFalse)使用匿名函数对字典排序foriteminup:lenbformat(float(item〔1〕〔0〕)base,。0f)计算需要输出的的个数print(item〔0〕。ljust(4)int(lenb)chr(9632)2019年GDP:str(item〔1〕〔0〕))lenbformat(float(item〔1〕〔1〕)base,。0f)print(。ljust(4)int(lenb)chr(9632)2018年GDP:str(item〔1〕〔1〕))输出结果:河北2019年GDP:35104。52018年GDP:36010。30湖南2019年GDP:39752。122018年GDP:36425。78福建2019年GDP:423952018年GDP:35804。04湖北2019年GDP:45828。312018年GDP:39366。60四川2019年GDP:46615。822018年GDP:40678。10河南2019年GDP:54259。22018年GDP:48055。90浙江2019年GDP:623532018年GDP:56197。00山东2019年GDP:71067。52018年GDP:76469。70江苏2019年GDP:99631。522018年GDP:92595。40广东2019年GDP:107671。072018年GDP:97277。77利用字符串子串个数统计功能实现敏感词汇统计wordinput(请输入或者拷贝含有敏感词的宣传文字:)sensitive〔第一,国家级,最高级,最佳,独一无二,一流,仅此一次,顶级,顶尖,尖端,极品,极佳,绝佳,绝对,终极,极致,首个,首选,独家,首发,首次,首款,金牌,名牌,王牌,领袖,领先,领导,缔造者,巨星,掌门人,至尊,巅峰,奢侈,资深,之王,王者,冠军〕sensitivefind〔〕newwordwordforiteminsensitive:ifword。count(item)0:判断敏感词出现的次数sensitivefind。append(item:str(word。count(item))次)记录敏感词出现次数newwordnewword。replace(item,33〔1;31mitem33〔0m)敏感词描红输出print(发现敏感词如下:)foriteminsensitivefind:print(item)print(敏感词位置已用星号进行标注:newword)输出结果:请输入或者拷贝含有敏感词的宣传文字:他的技术绝对一流,堪称全国第一,国家级大师!发现敏感词如下:第一:1次国家级:1次一流:1次绝对:1次敏感词位置已用星号进行标注:他的技术绝对一流,堪称全国第一,国家级大师!利用匿名函数和max函数取出数字字符串中的最大数num2748123maxnummax(num,keylambdax:int(x))print(maxnum)输出结果:8利用字符串替换方法去除指定子字符串withopen(users。txt)asrfile:str1rfile。readline()str2str1。replace(,)print(str1str2)输出结果:False利用列表推导式去除指定子字符串word赵钱孙李周吴郑王word。join(〔iforiinwordifi!〕)print(word)输出结果:赵钱孙李周吴郑王利用字符串切片去除指定位置的子字符串str我爱40982345Python!newstrstr〔:2〕str〔10:〕print(newstr)输出结果:我爱Python!使用汉字转拼音模块对汉字以拼音为序进行排列导入汉字转拼音模块fromxpinyinimportPinyinnames〔张三,李四,王五,赵六,田七〕pinPinyin()创建汉字转拼音对象temp〔〕保存转换结果的空列表foriinnames:获取汉字的拼音,跟汉字组合成元组放到临时列表中temp。append((pin。getpinyin(i),i))print(temp)输出获取拼音后的列表temp。sort()对列表进行排序result〔〕保存排序后的列表foriinrange(len(temp)):result。append(temp〔i〕〔1〕)取出汉字保存到新列表中print(result)输出结果:〔(zhangsan,张三),(lisi,李四),(wangwu,王五),(zhaoliu,赵六),(tianqi,田七)〕〔李四,田七,王五,张三,赵六〕