Python学习|Python学习笔记

from operator import index from os import O_LARGEFILE from os.path import getctime from sys import path import wordcloud import time import random import jieba from wordcloud.wordcloud import WordCloud import os import numpy as np# import turtle # from turtle import *# left(45) # fd(200) # turtle.right(135) # turtle.fd(300) # turtle.left(135) # turtle.fd(300) # import turtle as t # t.left(40) # t.fd(1000)for i in range(4): print(i)# print(pow(2, 200)) # "".format() print(int("34"))a = 1 + 1j print(a) b = 1 + 2j print(a + b)def day(df): print(1)for i in range(10): if i > 10: print(i)# 字符串的操作 print(""" sdfs 'sdf' sdfdf d d e """)# 字符串切片 # [M,N,K] print("123456789"[0:5:2]) # [M,N,K] print("123456789"[0:5]) # [M,N,K] print("123456789"[::-1]) # 转义字符\t \b \g # 字符串的操作符 (+) (n*x) (in)weekStr = "星期亦" print("星期" in weekStr)# 字符串的处理函数 # len(x) 英文字符中文字符都是一个长度 # str(x) hex(x)十六进制 oct(x)八进制 #unicode编码 chr ord print(chr(9801))# 字符串的处理方法 # 面向对象的专有名词 # str.lower .upper # .split(sep=None) # .count .replace(old,new) # .center(20,"=") # .strip(chars) # join # " ".join(['d','r','w'])空格连接字符串 print("python".strip("np")) print(" python ".strip("np")) print("python,".strip(" ")) # .join(',') 增加分隔符# 字符串格式化 # {}槽 print("{} mmmm{}nnnn".format(1, 2)) # {:} 填充 对其 <> 宽度 20千位分隔符 , 精度 .2 整数类型 b c d # 2021.1.30 # time库的使用 # time.time() 获取时间戳 浮点数 # time.ctime() 人类易读 print(time.ctime()) # time.gmtime() 其他程序可以利用的时间格式 print(time.gmtime().tm_year) # 时间格式化 # 需要展示模板 # time.strftime("%Y-%m-%d %H:%M:%S",t) # time.strptime(t, "%Y-%m-%d %H:%M:%S") print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))print(time.time())# 程序计时 # perf_counter() 返回时间秒 # start = time.perf_counter(); # end = time.perf_counter(); # sleep() 程序休眠# 实例:文本进度条 # *->----- for i in range(10): a = '*' * i b = '-' * (10 - i) print("{}->{}".format(a, b)) # time.sleep(0.1) print("end") # #->---------- # *->--------- # **->-------- # ***->------- # ****->------ # *****->----- # ******->---- # *******->--- # ********->-- # *********->-# 单行进度条 # print("\r",end='') start = time.perf_counter() for i in range(10): a = '*' * i b = '-' * (10 - i) print("\r{}->{}".format(a, b), end='') # time.sleep(0.1) print("end {}".format(time.perf_counter() - start))# 第三章练习 dayup = pow(1.001, 365) daydown = pow(0.999, 365) print("{:.2f} {:.2f}".format(dayup, daydown))# 周末会退步 dayori = 1 dayfactor = 0.01 for i in range(365): if i % 7 in [0, 6]: dayori *= (1 - dayfactor) else: dayori *= (1 + dayfactor) print(dayori)# 如果周末休息,判断工作日怎么努力才能跟每天努力一样def test(fac): dayup = 1.0 for i in range(365): if i % 7 in [0, 6]: dayup *= (1 - 0.01) else: dayup *= (1 + fac) return dayupdayup1 = pow(1.01, 365) for i in range(1000): if test(i * 0.001) > dayup1: print("工作日的努力参数是: {:.3f}".format(i * 0.001)) break# 实例4:文本进度条 # num = eval(input()) # print("{:-^20}".format(pow((num), 3)))# 读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? # 第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。# num = int(input()) # if num % 2 == 1: #for i in range(1,num+1, 2): #template = "{: ^"+str(num)+"}" #print(template.format('*'*i))# 答案使用嵌套槽 # n = eval(input()) # for i in range(1, n+1, 2): #print("{0:^{1}}".format('*'*i, n))# 凯撒密码 # str="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"# str = input() # for i in range(len(str)):#if str[i].islower(): #baseCode = (ord(str[i]) - ord('a') + 3) % 26 #print(chr(baseCode + ord('a')), end='') #elif str[i].isupper(): #baseCode = (ord(str[i]) - ord('A') + 3) % 26 #print(chr(baseCode + ord('A')), end='') #else: #print(str[i], end='')# 程序的分支结构 # 单分支结构 # 二分支结构 # 二分支结构的紧凑形式 guess = 99 print("及格" if guess >= 60 else "不及格")# 条件组合 # or and not # 异常处理 # try: #<> # except: #<># try: #num = eval(input('请输入一个数字')) #print(num) # except NameError: #print('您没有输入一个数字')# try: #num = eval(input('请输入一个数字')) #print(num) # except: #print('您没有输入一个数字') # else: #不发生异常时执行 #print('您成功输入一个数字') # finally: #print('bye')# 循环 for i in [8, 33]: print(i)# 循环高级用法 # for i in range() #<> # else: 正常运行完执行 else: #<># random 随机库 # 基本随机数函数 seed() random() # 扩展随机数函数 # randint(a,b) a-b之间的整数 # getrandbits(16) 16个比特长度 # uniform() a-b随机小数 # randrange(M, N, K) # choice([2,4,5,7,8])列表中随机选择一个元素 # shuffle([2,4,5,7,8]) 对序列随机打乱输出# 需要再现需要种子 # random.seed(1) # print(random.random()) random.seed(1) # print(random.random())# 圆周率的计算 N = 1 M = 0for i in range(N): x = random.random() y = random.random() if x ** 2 + y ** 2 < 1: M += 1 print(M/N*4)# 程序控制结构# height, weight = map(float, input().split(',')) # BMI = weight/(height ** 2) # print("BMI数值为:{:.2f}".format(BMI)) # if BMI < 18.5: #print("BMI指标为:国际'偏瘦',国内'偏瘦'") # elif BMI < 24: #print("BMI指标为:国际'正常',国内'正常'") # elif BMI < 25: #print("BMI指标为:国际'正常',国内'偏胖'") # elif BMI < 28: #print("BMI指标为:国际'偏胖',国内'偏胖'") # elif BMI < 30: #print("BMI指标为:国际'肥胖',国内'偏胖'") # else: #print("BMI指标为:国际'肥胖',国内'肥胖'")# 整数的加减和 sum = 0 for i in range(966 + 1): if i % 2 == 0: sum -= i else: sum += i print(sum)# 水仙花数s = "" for i in range(100, 1000): b = int(i / 100) si = int(i / 10) % 10 g = i % 10 if b ** 3 + si ** 3 + g ** 3 == i: s += "{},".format(i) print(s[:-1])# s = "" # for i in range(100, 1000): ## t = str(i) ## if pow(eval(t[0]), 3) + pow(eval(t[1]), 3) + pow(eval(t[2]), 3) == i: #s += "{},".format(i) # print(s[:-1])# 用户登录的三次机会# uername = 'Kate' # password = '666666'# count = 0 # while count < 3: #u = input() #p = input() #if u == uername and p == password: #print("登录成功!") #break #count += 1 # else: #print("3次用户名或者密码均有误!退出程序。")# 函数的定义 # 函数的参数 函数的返回值# 可选参数 # def func(n, m=1): # 第二个参数根据情况使用# 可变参数 # def func(n, *m): #for i in m:# 按照名称来传递参数 # def func3(n, m): #<> # func3(m=3, n=1)# 函数返回值可以有多个或者一个 # 全局变量 局部变量 # lambda 函数 f = lambda x, y : x + y print(f(3,4))# 七段数码管# pyinstaller 的使用 # 使用pyinstaller可以将python程序直接打包成可执行文件 # 在windows linux mac 平台上使用 # 不需要安装解释器# 科赫雪花# 第六周 # 组合数据类型# 集合数据类型 # a = {}, a = set() # 多个元素的无序组合# A = {"python", 123, ("python", 123)} # C = {"python", 123,"python", 123}# 集合间的操作 # 并| 差- 交& 补^ # <= < >= > 包含关系(比较) A = set({"pypy123"}) B = {'p', 'y', 123} print(set("pypy123")) print({'p', 'y', 123})print(A - B)# add() discard() 不存在不报错 remove() 不存在报错 # clear() pop() 随机返回的一个元素,更新S,若S为空产生KeyErro异常 # copy() 返回集合副本 len(S)# 集合类型的应用场景 # 包含关系的比较 # ===============数据去重# 序列类型 # 序列是一堆元素,可以不同类型 # x in s # x not in s # s + t # s*n 或者 n*s将序列s复制n次 # s[i] # min(ls) max(ls) # s.index(x) # s.count(x)ls = ["python", 123, 'io'] print(ls[::-1])# 元组类型(),也可以不使用() creature = "h","d","s","a" # 比如 return 1,2 不使用creature# 列表 # ls[i] = x # ls[i:j:k] = lt # del ls[i] # del ls[i:j:k] ls.append(0) ls.insert(3,"human") ls.reverse() ls+=[1,2,3] # for item in ls:# ls.remove()# 数值特征 # 总个数 len() # sort(ls)排序# 字典类型的定义 dist = {'d':'f'} # {}默认为生成空字典,要想生成空集合,采用set()# 字典处理函数与方法 # del d[k] # k in d # d.keys() # d.values() # d.items() # dist.get(k,) # dist.pop(k,) # d.popitem() //随机获取工程 # d.clear() # len(d)# for k in d: # <># jieba库的使用,对中文进行分词 # 精确模式 # 全模式 # 搜索引擎模式str = "中华人民共和国是一个美丽的国家" # print(jieba.lcut(str)) # print(jieba.lcut(str, cut_all=True)) # print(jieba.lcut_for_search(str))# 文件的词频的统计 def getText(): txt = open("hamlet.txt", "r").read() txt = txt.lower() for ch in '|"#%&()*+,-./:; <=>?@[\\]^_{|\'}~': txt = txt.replace(ch,' ') return txthamletTxt = getText() words = hamletTxt.split(" ") counts = {} for word in words: counts[word] = counts.get(word, 0) + 1print(counts.items())items = list(counts.items()) # items.reverse() # items = counts.items()items.sort(key = lambda x : x[1], reverse=True)# print(items)# 文件和数据 # 文件数据格式话 # 一定规格和样式 # 数据格式化 # 文件的使用 # 文件的类型:文本文件,二进制文件 # 文件是数据的抽象和集合 # tf = open("f.txt", "rt") 文本形式 # print(tf.readline()) # tf.close()# tf = open("f.txt", "rb") 二进制形式 # print(tf.readline()) # tf.close()# 文件路径的写法 相对路径,绝对路径 # r 读,默认,不存在报错 # w 覆盖写,不存在报错 # x 创建写 # a 追加写,不存在创建 # b 二进制 # t 字符 # + 读写能力# 文件关闭 # .close()# 文件内容的读取 # f.read() # f.readline() # f.readlines() return []# 按数量读入 # fname = input("") # 逐行遍历文件: # fo = open(fname, "r") # for line in fo: #print(line)# 写入文件 # f.write(line) # f.writelines(["中","法","美"]) # : 中法美 没有换行也没有空格# f.seek(offset) offset = 0 文件开头, 1 当前位置, 2文件结尾 # seek函数调整指针的位置# 一维数据的存储 # 存储方式:采用空格分隔,采用逗号分隔,采用特殊符号$#&# 二维数据的表示 # 二维数据的格式化 # CSV格式 comma separated value # CSV文件如下: # 北京,雁栖湖,故宫 # 上海,东方明珠,外滩 # csv 数据读入 # 自己操作, # 数据写入 # 自己操作# 第三方库: wordcloud w = wordcloud.WordCloud() # w.generate("I am a good man and woman, i like apple") # w.to_file("wordcloud.png")w.generate(hamletTxt) w.to_file("hamlet.png")# items 对象为hamlet书中出现词频对象 # words = [] # for i in items: # words.append(i[0])# min_font_size # max_font_size # font_path //指定字体路径 # background_color # font_step # mask 不局限词云为矩形,可以为其他形状# (class) WordCloud(font_path=None, width=400, height=200, margin=2, # ranks_only=None, prefer_horizontal=0.9, mask=None, scale=1, color_func=None, #max_words=200, min_font_size=4, stopwords=None, random_state=None, #background_color='black', max_font_size=None, font_step=1, mode="RGB", #relative_scaling='auto', regexp=None, collocations=True, colormap=None, #normalize_plurals=True, contour_width=0, contour_color='black', # repeat=False, include_numbers=False, min_word_length=0, collocation_threshold=30)# "".isspace()# 第8周 # 程序设计的方法 # 采用自顶向下和自底向上的方法 # 模块化设计思想# 3种人类的设计思维: # 逻辑思维:推理与演绎,数学为代表 # 实证思维:实验和验证,物理为代表,引力波<-实验 # 计算思维:设计和构造,计算机为代表,汉诺塔递归# 比如: # 累计求和,圆周率的计算 # 天气预报: # 量化分析:股市中常用的方法# 提高用户体验 # 1.如果程序需要大量的时间,增加进度条,增加用户体验 # 2.异常处理,采用异常处理 # 3.打印输出,用户的使用# 基本程序设计:# 引擎+配置# Python PyPI python package index # 实例:开发区块链相关的程序 # 1.在pypi.org搜索blockchain # 2.挑选合适的第三方库 # 3.完成自己需要的功能# 如何安装第三方库: # 1.pip 安装 #pip install -U 【Python学习|Python学习笔记】#pip uninstall #pip download #pip show #pip search blockchain #pip list# 2.集成安装 Anoconda 集成800个库 # 为了数据分析,数据展示,那么推荐使用# 3.文件安装方法 # 只是下载的源代码,不是编译文件,pip安装出现问题,推荐网站UCI可以下载编译后的库 # UCI网站为:https://www.lfd.uci.edu/~gohlke/pythonlibs/ # 1. 搜索 # 2. 下载 # 3. pip install <文件名># OS库的使用 # 路径操作:os.path # # import os.path # # import os.path as op# os.path.abspath(path) # os.path.normpath(path) # os.path.relpath # dirname # join exists, isfile, isdir, # getatime 上一次的访问时间 # getmtime 上一次的修改时间 # getctime 文件创建时间 # getsize 文件大小# 进程管理: # import os #************************************************ # 相当于命令行的执行,啊啊啊啊啊啊太有用了啊啊啊啊啊,这样可以批量执行 # os.system("计算器程序的路径") #************************************************# os库环境参数: os.chdir("d:") #//修改当前程序创建的路径 os.getcwd() # >>> import os # >>> os.getcwd() # 'C:\\Users\\Crouse\\Desktop\\ucas_course_helper_2.0-master' # >>> os.chdir('D:') # >>> os.getcwd() # 'D:\\' os.getlogin() os.cpu_count()# 自动执行安装第三方库,批量安装# python库的数据分析 # Numpy C语言实现,计算速度优异,数据分析及科学计算的基础库,支撑Pandas等,# pandas 提供了简单易用的数据结构和数据分析工具 # 理解数据类型与索引的关系,操作索引即操作数量 # pandas 拓展的对一维与二维数据的表示,简化数学分析的运行# scipy : 数学、科学和工程计算功能库 # 提供了一批数学算法及工程数据运算功能 # 类似于matlab,可用于如傅里叶变换,信号处理等应用# python数据可视化 # matplotlib:数据可视化 # 提供了超过100种数据可视化展示效果图 # 通过matplotlib。pyplot子库调用各种可视化效果 # python最主要的数据可视化功能库,基于numpy开发# seaborn 统计类数据 # 高层次统计类数据可视化 # 基于numpy pandas开发# 三维库 mayavi 三维可视化 # 3D 展示# python库文本处理 # pyPDF2 处理pdf文件# NLTK 自然语言文本处理第三方库# python-docx 程序创建修改docx文件# scikit-learn :机器学习方法工具集 # 提供聚类,分类,回归,强化学习等计算功能 # 机器学习最基本最优秀的Python第三方库# TensorFlow : AlphaGo背后机器学习计算框架 # 开源机器学习框架# MXNet 基于神经网络的深度学习的计算框架 # 自动驾驶,图像识别web 解析 Requests : 网络爬虫 Scrapy : 网络爬虫框架 构建网络爬虫系统的框架功能,功能半成品 支持批量和定时网页爬取、提供数据处理流程等pyspider 提供完整的网页爬取系统构建功能 支持数据库后端、消息队列优先级、分布式架构等 Python 重要的网络爬虫类的第三方库web 信息提取 Beautiful Soup: HTML和XML的解析库Re 正则表达式Python-Goose: 提取文章类型Web页面的功能库 获取标题正文Django 最流行的web应用框架Pyramid 规模适中的web应用框架Flask 简单规模web框架Python库的网络应用开发WeRoBot 微信公众号开发框架 提供了解析微信服务器消息及反馈的消息 建立微信机器人的重要手段aip:百度AI开放平台接口 提供访问百度AI服务的Python功能接口 语音,人脸,ORC,NLP,知识图谱,图像搜索等领域 Python百度AI应用的最主要的方式MyQR 二维码生成库图形界面、操作界面、 PyQt5 : PyGObject : GTK + 开发GUI的功能库游戏开发 PyGame Panda3D 开源、跨平台3D渲染和游戏开发库 一个3D游戏引擎,提供Python和C++两种接口 迪士尼与卡耐基梅隆大学共同开发coco2d VR Zero 树莓派上VR开发Vizard 基于Python通用的库图形艺术: Quads库ascii_art: ASCII艺术库turtle 库


    推荐阅读