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'
sdf

df
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 dayup


dayup1 = 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 = 0

for 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,<default>)
# dist.pop(k,<default>)
# 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 txt


hamletTxt = getText()
words = hamletTxt.split(" ")
counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1

print(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 <packet>
#     pip uninstall
#     pip download
#     pip show <package>
#     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 库


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值