Python学习笔记实用技巧及知识点汇编
交换变量的值a, b, c = 10, 20, 30 print(a, b, c) a, b, c = b, c, a print(a, b, c) 输出结果: 10 20 30 20 30 10链式比较score = 75 if 70 <= score < 80: print("成绩:良")快速合并字典dict1 = {"数学": 90, "语文": 98, "英语": 93} dict2 = {"地理": 78, "化学": 70} dict3 = dict1 | dict2 print(dict3) 输出结果: {"数学": 90, "语文": 98, "英语": 93, "地理": 78, "化学": 70}将两个列表组合成一个字典key = ["数学", "语文", "英语"] value = [90, 99, 87] result = dict(zip(key, value)) print(result) 输出结果: {"数学": 90, "语文": 99, "英语": 87}对列表元素进行随机排序(洗牌效果)import random lst = [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]从列表中选择指定个数的随机且不重复的元素(抽奖效果)import random lst = ["z", "b", "Ab", "CDE", "5", 6, 100, True, 3.14] result = random.sample(lst, 3) print(result) 输出结果: [6, "z", "CDE"]从列表或字符串中随机选择一个元素或字符(可用于生成验证码或动态密码)import random str1 = "0123456789abcdefghijklmnopqtstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()" result="" for i in range(8): result = result+random.choice(str1) print(result) 输出结果: ZItOAZyC语音朗读文本import winsound import win32com from win32com.client import Dispatch, constants import time speak_out = win32com.client.Dispatch("sapi.spvoice") str="今天的气温是"+" "+"零下19度" speak_out.speak(str) # 输出方言解释 winsound.PlaySound(str, winsound.SND_ASYNC) # 输出结束音 time.sleep(3) # 不加延迟程序马上结束,上面语句的结束音出不来计算两个日期时间差import datetime day1 = datetime.datetime(2022, 7, 17) day2 = datetime.datetime(2022, 10, 8) print(f"{day1.strftime("%Y-%m-%d")}与{day2.strftime("%Y-%m-%d")}相隔了" + str((day2 - day1).days) + "天!") 输出结果: 2022-07-17与2022-10-08相隔了83天!阿拉伯数字快速转换为中文数字info = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"] data = input("请输入数字:") for i in range(len(data)): print(info[int(data[i])], end="") 输出结果: 请输入数字:3698 三六九八else与for和while搭配使用(如果循环执行完毕,没有遇到break,则执行else)for num in range(3): pwd = input("请输入密码:") if pwd == "8888": print("输入的密码正确!") break else: print("输入的密码错误,请重新输入!") else: print("输入次数达到上限,系统将自动退出!")蜂鸣器鸣叫import time, sys, ctypes """ time库中包含sleep延迟函数 sys库中包含stdout标准输出刷新函数flush ctypes库中包含Beep(首字母大写)蜂鸣器,第一个参数是频率,第二个参数是鸣叫时长 """ player = ctypes.windll.kernel32 for i in range(1, 11): print("r", "-●-" * i, end="%d0%%" % i) # r表示返回行首,在字符串里显示%必须用%% sys.stdout.flush() player.Beep(1000, 100) time.sleep(1) player.Beep(2000, 1000)异常处理之else和finally(如果未发生异常则执行else,而无论是否发生异常都必须执行finally,即使前面有return语句)def func(opr): result = 0 try: a = int(input("请输入第一个数:")) b = int(input("请输入第二个数:")) if opr == "+": result = a + b elif opr == "-": result = a - b elif opr == "*": result = a * b elif opr == "/": result = a / b else: print("您输入的操作符错误!") except Exception as err: print("出错啦!出错信息:", err) else: print("运行未发生错误") return result # 由于有finally语句,这条return语句会在finally下面的语句执行完毕后再执行 finally: print("-----执行finally语句-----") r = func("+") print("返回结果:", r) 运行结果: 请输入第一个数:2 请输入第二个数:0 运行未发生错误 -----执行finally语句----- 返回结果: 2字符串内容逐字循环输出import sys import time def repeat(string): sys.stdout.write("r") # 回车,让光标回到行首 sys.stdout.flush() # 刷新,即输出缓冲区数据 for i in string: # 遍历字符串 sys.stdout.write(i) # 写到缓冲区 sys.stdout.flush() # 输出 time.sleep(0.3) # 延迟0.3毫秒 while True: repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZ")将字符串中数量不等的连续空格统一变成一个空格word="编号 姓名 性别 年级 学校 奖项" list=word.split(" ") listnew=[i for i in list if i!="" ] new=" ".join(listnew) print(new) 输出结果: 编号 姓名 性别 年级 学校 奖项巧用列表判断日期对应星座(不需要反复判定月份和日期范围)def sign(m, d): # 判断星座函数 if d < date[m - 1]: # 如果日期小于该月在date列表中对应的日期临界值 print(sign_list[m - 1]) # 直接输出星座列表中对应月份的星座 else: print(sign_list[m]) # 否则输出星座列表中下一月对应的星座 date = [20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22] # 每个月份的星座日期临界值 sign_list = ["摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座"] 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": "澳门"} def idget(str): if dic.get(str): return dic[str] else: return "未知省份" instr = input("请输入您的身份证号:") if instr[:16].isdigit() and len(instr) == 18: print("你来自:", idget(instr[0:2])) print("你的生日是:" + instr[6:10] + "年" + instr[10:12] + "月" + instr[12:14] + "日") gender = "女" if int(instr[16]) % 2 == 0 else "男" print("你的性别是:" + gender) 输出结果: 请输入您的身份证号:220000198308124527 你来自: 吉林省 你的生日是:1983年08月12日 你的性别是:女巧用随机数和字符串切片完成成语答题效果import random list = ["春暖花开", "十字路口", "千军万马", "白手起家", "张灯结彩", "风和日丽", "万里长城", "人来人往", "自由自在", "瓜田李下", "助人为乐", "白手起家", "红男绿女", "春风化雨", "马到成功", "拔苗助长", "安居乐业", "走马观花", "念念不忘", "落花流水", "张灯结彩", "一往无前", "落地生根", "天罗地网", "东山再起", "一事无成", "山清水秀", "别有洞天", "语重心长", "水深火热", "鸟语花香", "自以为是"] i = 1 count = 20 print("直接填写答案,回车进入下一关。什么也不填忽略本成语!!") while True: word = random.choice(list) # 随机选择成语 bank = random.randint(0, 3) # 随机生成要抹去的字 new = word[:bank] + "___" + word[bank + 1:] # 输出考题 print(new) num = input("输入:") if not num: # 如果直接回车则略过此题 print("过!") continue elif num.strip(" ") == word[bank]: count += 2 print("正确,你真棒!") else: count -= 2 print("错了,正确答案:", word[bank]) i += 1 if i > 3: # 答题次数 break print("选手最后得分:", count) 输出结果:直接填写答案,回车进入下一关。什么也不填忽略本成语!! 风和___丽 输入:日 正确,你真棒! ___往无前 输入: 过! 马到成___ 输入:功 正确,你真棒! 自___自在 输入:由 正确,你真棒! 选手最后得分: 26根据日期生成产品序列号type_num = "BRM8S" date = "2021:12:28" date = date.split(":") year_num = date[0][2:] month = hex(int(date[1])).replace("0x", "") # 取月份的十六进制字符 day = date[2] date_num = year_num + month + day start = 100 count = int(input("请输入要生成的产品序列号(SN)数量:")) sn = "" for i in range(count): num = type_num + date_num + str(start + i).zfill(5) # 用0填充空位 sn += num + " " print(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:42395" gdp_dict = {} gdp_list = [] base = 3000 new = gdp.split(" ") # 切割列表 for item in new: gdp_list = item.split(":") # 切割字符串 gdp_dict.update({gdp_list[0]: [gdp_list[2], gdp_list[1]]}) # 生成字典 up = sorted(gdp_dict.items(), key=lambda x: float(x[1][0]), reverse=False) # 使用匿名函数对字典排序 for item in up: lenb = format(float(item[1][0]) / base, ".0f") # 计算需要输出的■的个数 print(item[0].ljust(4) + " " + int(lenb) * chr(9632) + " 2019年GDP:" + str(item[1][0])) lenb = format(float(item[1][1]) / base, ".0f") print("".ljust(4) + " " + int(lenb) * chr(9632) + " 2018年GDP:" + str(item[1][1])) 输出结果: 河北 ■■■■■■■■■■■■ 2019年GDP:35104.5 ■■■■■■■■■■■■ 2018年GDP:36010.30 湖南 ■■■■■■■■■■■■■ 2019年GDP:39752.12 ■■■■■■■■■■■■ 2018年GDP:36425.78 福建 ■■■■■■■■■■■■■■ 2019年GDP:42395 ■■■■■■■■■■■■ 2018年GDP:35804.04 湖北 ■■■■■■■■■■■■■■■ 2019年GDP:45828.31 ■■■■■■■■■■■■■ 2018年GDP:39366.60 四川 ■■■■■■■■■■■■■■■■ 2019年GDP:46615.82 ■■■■■■■■■■■■■■ 2018年GDP:40678.10 河南 ■■■■■■■■■■■■■■■■■■ 2019年GDP:54259.2 ■■■■■■■■■■■■■■■■ 2018年GDP:48055.90 浙江 ■■■■■■■■■■■■■■■■■■■■■ 2019年GDP:62353 ■■■■■■■■■■■■■■■■■■■ 2018年GDP:56197.00 山东 ■■■■■■■■■■■■■■■■■■■■■■■■ 2019年GDP:71067.5 ■■■■■■■■■■■■■■■■■■■■■■■■■ 2018年GDP:76469.70 江苏 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2019年GDP:99631.52 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2018年GDP:92595.40 广东 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2019年GDP:107671.07 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2018年GDP:97277.77利用字符串子串个数统计功能实现敏感词汇统计word = input("请输入或者拷贝含有敏感词的宣传文字: ") sensitive = ["第一", "国家级", "最高级", "最佳", "独一无二", "一流", "仅此一次", "顶级", "顶尖", "尖端", "极品", "极佳", "绝佳", "绝对", "终极", "极致", "首个", "首选", "独家", "首发", "首次", "首款", "金牌", "名牌", "王牌", "领袖", "领先", "领导", "缔造者", "巨星", "掌门人", "至尊", "巅峰", "奢侈", "资深", "之王", "王者", "冠军"] sensitive_find = [] newword = word for item in sensitive: if word.count(item) > 0: # 判断敏感词出现的次数 sensitive_find.append(item + ":" + str(word.count(item)) + "次") # 记录敏感词出现次数 newword = newword.replace(item, " 33[1;31m" + item + " 33[0m") # 敏感词描红输出 print("发现敏感词如下:") for item in sensitive_find: print(item) print("敏感词位置已用星号进行标注: " + newword) 输出结果: 请输入或者拷贝含有敏感词的宣传文字: 他的技术绝对一流,堪称全国第一,国家级大师! 发现敏感词如下: 第一:1次 国家级:1次 一流:1次 绝对:1次 敏感词位置已用星号进行标注: 他的技术 绝对 一流,堪称全国 第一, 国家级大师!利用匿名函数和max函数取出数字字符串中的最大数num = "2748123" max_num = max(num, key=lambda x: int(x)) print(max_num) 输出结果: 8利用字符串替换方法去除指定子字符串with open("users.txt") as rfile: str1 = rfile.readline() str2 = str1.replace(" ", "") print(str1 == str2) 输出结果: False利用列表推导式去除指定子字符串word = "赵 钱 孙 李 周 吴 郑 王" word = "".join([i for i in word if i != " "]) print(word) 输出结果: 赵钱孙李周吴郑王利用字符串切片去除指定位置的子字符串str = "我爱40982345Python!" new_str = str[:2] + str[10:] print(new_str) 输出结果: 我爱Python!使用汉字转拼音模块对汉字以拼音为序进行排列# 导入汉字转拼音模块 from xpinyin import Pinyin names = ["张三", "李四", "王五", "赵六", "田七"] pin = Pinyin() # 创建汉字转拼音对象 temp = [] # 保存转换结果的空列表 for i in names: # 获取汉字的拼音,跟汉字组合成元组放到临时列表中 temp.append((pin.get_pinyin(i), i)) print(temp) # 输出获取拼音后的列表 temp.sort() # 对列表进行排序 result = [] # 保存排序后的列表 for i in range(len(temp)): result.append(temp[i][1]) # 取出汉字保存到新列表中 print(result) 输出结果: [("zhang-san", "张三"), ("li-si", "李四"), ("wang-wu", "王五"), ("zhao-liu", "赵六"), ("tian-qi", "田七")] ["李四", "田七", "王五", "张三", "赵六"]
98天消灭542名敌军,半张脸被打掉依旧生还白色死神西蒙海耶1905年西蒙海耶出生在芬兰大公国维保省中一个拥有传统信义宗教信仰的农村家庭,在家中八个孩子中排行第七。从很小的时候起海耶跟随自己的父亲成为一位农民和猎人,野外生活使小海耶对森林的
兴于兵变亡于兵变,董卓之弟董旻陷入的命运怪圈当董旻站在郿坞城楼上,看到皇甫嵩的军队攻打坞堡时,不知是否想起了,曾被他杀死的何进之弟何苗。就隔三年的时间,作为董卓的弟弟,现在他也和当年的何苗一样,体会到了墙倒众人推的背叛和绝望
董鄂妃18岁入宫,仅4个月封皇贵妃,成为顺治反抗孝庄的牺牲品在康熙王朝中有这样一段董鄂妃与三阿哥玄烨(康熙)都得了天花,苏麻喇姑说芨芨草(芨芨草是牛吃的)可以救玄烨,实在是没有别的办法孝庄选择相信苏麻喇姑,玄烨喝了药以后确实有了效果,不禁说
烽火泗水滨36作者韦忠试县大队消灭假八路从风仙庄到黄土崖不过六七里路,韦良厚不大会儿就到了。他进村口见一只黄狗正拉完屎,他还真用粪叉子除起来放到粪箕筐里。县大队在这村里驻过,这里的大街小巷他都熟
图斯摩斯三世围攻梅吉多时,发现城市被摧毁的证据,证据真实吗?图片来源于网络文蒋冉Jiang编辑蒋冉Jiang因此,在被图斯摩斯三世占领后,米吉多成为埃及控制下更重要的城市。这种情况一直持续到公元前12世纪的后三分之一。然而,有证据表明这不是
传教士利玛窦的一封信明清衰败的真实原因传教士利玛窦的一封信这篇文章不在于揭露中世纪的真相虚构的文艺复兴,或者追究欧洲工业革命科技母体,其主要目的是重新理解近代史,明清衰败的真实原因,欧洲反超中国的原因,解释为什么中华文
代表风采张仕滨黄土地里种出金新身份里获幸福市十四届人大二次会议将于1月4日在三明召开。三明日报微信公众号近期推出人大代表风采系列报道,展现我市人大代表践行使命担当作为履职尽责的精神风貌。本期市人大代表张仕滨(永安市绿丰蔬菜
岳占东散文山村小景山村小景1太阳很暖,懒懒地上了矮墙,照着了倚墙的妇人。妇人粉红色的衣衫像一团火烧起来,手中的针线活半掬在胸前缓缓地跳跃着。妇人觉得这暖日像毛毛虫,给她一种痒痒的感觉,这感觉让她舍不
卖出50亿件商品,亚马逊的低售价,连沃尔玛都卷怕了帮顾客节省每一分钱,山姆沃尔顿自创业时就给沃尔玛注入这一基因。因此,沃尔玛一直都是便宜的代名词,也是有名的性价比之王。然而,最新一项调查数据显示,沃尔玛的商品价格,已经卷不过亚马逊
郭台铭,输了!富士康一度成为我国最大的代工厂,它解决了我国很大一部分就业问题,靠着庞大的规模和人力资源,它也得到了一笔又一笔的大订单,并且成为苹果的长期合作伙伴。而郭台铭作为富士康的CEO,他靠
峥嵘三年科创板迈入500家时代12月28日,随着萤石网络(688475)清越科技鸣锣上市,科创板上市公司数量达到500家。从最初的25只星宿股到如今迈入500时代,科创板用时不足三年半标的扩容了19倍。东方财富