- 首页 > it技术 > >
Python学习|Python学习笔记
Pythonpython学习
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 库
推荐阅读