之前学习记录

目录

1.     数据类型... 1

2.     控制逻辑... 2

3.     函数作用域... 4

Ctrl+enter可以执行anaconda的Python语句。

Terminal中命令

conda create –n class2 python=2.7    #创建class2命名的环境

conda activate class2 #进入环境class2

conda list #显示当前环境下安装的所有包

conda install numpy #安装numpy包

conda update numpy

conda uninstall numpy

conda search numpy #找到所有numpy的版本

conda install numpy=1.05 #指定安装numpy包1.0.5版本

  1. 数据类型

# 整数

a=1

b=2

# 浮点数

c=1.0

d=0.11111

# 字符串

s1='HELLO WORLD'

s2="欢迎来到Python的基础课!"

s3='''我也是合法的字符串呢'''

s4='我是字符串'\

'并且我还可以换行写'

s5='这个是默认拼接' '非常有意思的写法!'

# 布尔值

f1=True

f2=False

# 空值

t=None

# 常量:指的是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI=3.14159

# 判断一个变量的数据类型

type(f1)   直接会显示bool类型

type(PI)

type(s5)

isinstance(f1,float)

isinstance(f1,bool)  判断f1是不是bool类型,是就返回true

isinstance(f1,(float,bool,int)) 判断f1是bool类型或者int类型吗?如果是二者其中一个返回true。

# 变量赋值

A=12

B=A

# 对象的赋值:指针

C=[1,2,3,4,5]

D=C

1>2

A=10

B='c'

A==B

A!=B

C=A

A is C

A==C

D=[1,2,3]

E=D

F=[1,2,3]

E==D  #判断的是内容

E is F

E is not F  #不仅判断内容而且判断存储的位置是否一致

A<=7

A>=12

1<=A<3234  #可以连接写进行判断

1&2

1|2|4

not 0

1 and 0 or 2 and not 3  #not的优先级最高,即1 and 0 or 2 and (not 3),然后从左到右依次执行

  1. 控制逻辑

直接输入一个pass可以表示什么都不执行

for循环的时候打印下标,还可以逆向遍历

# 中断循环与跳过循环:break(跳出整个循环,即终止循环)、continue(跳出本次循环,执行下一个for语句)

cnt=0

while True:

    if cnt==150:

        break

    elif not cnt in [111,122,133,144]:

        cnt+=1       

        continue

    else:

        print(f'hello,{cnt}!')

        cnt+=1

求1000以内的所有质数

for n in range(2,1001,1):

    flag=True

    for i in range(2,n,1):

        if n%i==0:

            flag=False

            break

    if flag:

        print(n,end='\t')

  1. 函数作用域

# 函数:高效复用代码

#例子:任意自然数1+2+...+n的求和

def get_sum(n):

    SUM =0

    for i in range(n):

        SUM+=(i+1)

    return SUM

get_sum(10)

函数的参数:默认参数、可变参数、关键字参数

# 默认参数

def get_power(val,n=2):

    result=1

    for i in range(n):

        result*=val

    return result

get_power(10) #此时使用的是默认参数

get_power(10,3) #此时使用的不是默认的数值

# 可变参数

def get_sum(*b):

    return [v**2 for v in b]

get_sum(1,2,3,4,5,6,7)

# 关键字参数

def get_info(name,age,**kw):

    print(f'name is {name},age is {age},other: {kw}')   

get_info('Jack',20,city='Shanghai')

递归函数

# 阶乘

def get_factorial(n):

    r=1

    for i in range(n):

        r*=i+1

    return r

get_factorial(10)

#使用递归求函数的阶乘

def get_factorial_2(n):

    if n==1:

        return n

    return n*get_factorial_2(n-1)

get_factorial_2(10)

练习:使用递归求解斐波那契数列第n项:

F(1)=1 F(2)=1 F(3)=F(1)+F(2)

.... F(n)=F(n-1)+F(n-2)

def get_fbnx(n):

    if n==1 or n==2:

        return 1

    return get_fbnx(n-1)+get_fbnx(n-2)

get_fbnx(10)

# 安装itchat库:pip install itchat

import itchat  #登录微信,获取好友信息

import pandas as pd #数据分析

# 登录网页版微信,获取好友信息:

itchat.auto_login(True) #自动登录,三分钟之后不必重复登录

friends = itchat.get_friends(update=True)

friends

type(friends)

print(‘朋友数:\t’, len(friends))

# 发送消息:

itchat.send('Hello, 你好',toUserName='filehelper')

# 回复消息:

@itchat.msg_register(itchat.content.TEXT)

def text_reply(msg):

    print("我收到了消息:",msg.text)

    return "收到了你的消息:"+msg.text

# itchat.auto_login()

itchat.run()

# 消息类型:TEXT, MAP, CARD, NOTE, SHARING、PICTURE, RECORDING, ATTACHMENT, VIDEO、FRIENDS

# 获取好友信息:itchat.get_friends(update=True)

#数据分析

df = pd.DataFrame(friends) #friend是一个list,然后可以转化为一张表

df.shape

df.columns.tolist()  #查看列的信息,转化为列表

df.RemarkName.tolist() #查看备注名

#保存信息,只需登录一次,避免重复登陆

with open(’friends.pickle’,’wb’) as f:

       pickle.dump(friends, f)

#使用以下方式进行加载

with open(‘friends.pickle’,’rb’) as f:

       friends = pickle.load(f)

print(‘朋友数:\t’, len(friends))

import os

# 列举当前路径下所有文件

files=os.listdir('./')

print(files)

# 加载指定文件

## 方法一:不太好,会产生错误

fp=open(files[4],'r',encoding='utf-8')

text=fp.read() # 读取所有文本

lines=fp.readlines() # 读取所有行

fp.close()

## 方法二

with open(files[4],'r',encoding='utf-8') as fp:

    text2=fp.read()

    lines=fp.readlines()

# 输出文件内容

print('text与text2相同:',text==text2)

print('方式一读入:\n',text,'\n','*'*50)

print('方式二读入:\n',text2)

## 文件的保存

with open('data.txt','w',encoding='utf-8') as fp:

fp.write('你好,这里是万门大学的Python基础课,从这里开启你的Python之旅吧!')

#数据持久化

import pickle

d={'course':'Python基础课程','student':'零基础','feature':'有趣有用'}

print(type(d))

print(d)

# 保存, wb表示保存的是二进制的字节流

with open('data.dict','wb')as fp:

    pickle.dump(d,fp) #d表示保存的对象,fp表示保存的文件

# 加载

with open('data.dict','rb')as fp:

    d2=pickle.load(fp)

print('d2==d:',d2==d)

print(d2)

如果要给java开发的工程师传输文件,则不能使用pickle,可以采用import json。

#随机数的生成

import random

for x in range(10):

        r = random.random() #生成0-1的浮点数

#        r = random.randint(1,10) #生成1-10的随机整数

#     r=10+random.random()*10

#        r=random.uniform(10,20) #生成指定范围内的浮点数

        print(r)

#图像的读取和保存

from PIL import Image

# pip install Pillow

img = Image.open('signature.png')

img.show()  #调用系统的图片查看器

print(img.format, img.size, img.mode)

img.save("copy.png")

#图通道的分离与合并

r, g, b = img.split() #分离

print(r.size,r.mode)

# do something

img = Image.merge("RGB", (r,g,g)) #图通道的合并

img.show()

#图像区域的裁剪

img2 = img.copy() #直接复制图像

box = (0, 100, 400, 600)

region = img2.crop(box)

region.show()

#图像的缩放、旋转、翻转

out = img.resize((128, 128))

out.show()

out = img.rotate(45) # 逆时针角度表示

out.show()

out = img.transpose(Image.FLIP_LEFT_RIGHT)  #左右翻转

out.show()

out = img.transpose(Image.FLIP_TOP_BOTTOM)  #上下翻转

out.show()

out = img.transpose(Image.ROTATE_90)

out.show()

out = img.transpose(Image.ROTATE_180)

out.show()

out = img.transpose(Image.ROTATE_270)

out.show()

#数据的可视化

import seaborn as sns  #seaborn是在matplotlib的基础上的抽象

import matplotlib.pyplot as plt

import numpy as np

import random

mat=np.random.random((100,100))*255

mat=np.array(mat,dtype=np.uint8)

plt.figure(figsize=(10,10))

# 1:1行;2:两列;1:第一个图

plt.subplot(2,2,1)

plt.axis('off')

plt.imshow(mat)

plt.subplot(2,2,4)

sns.lineplot([x for x in range(100)],[random.random()*x for x in range(100)])

plt.show()

#词云、分词

with open("sign.txt","r",encoding="utf-8") as f:

    text=f.read()

print(text)

from wordcloud import WordCloud

import jieba

import re

#words=[word for word in jieba.cut(text) if re.sub(r’\n|, |。',’’,word)] #如果word中存在\n,逗号,句号等则替换为空格

words=[word for word in jieba.cut(text) if re.search(r'[\u4e00-\u9fa5]+',word)] #从text中剪切到word,然后查询其中的中文字符,

# words=[word for word in jieba.cut(text) if re.search(r'[a-zA-Z]+',word)] #筛选出英文字符

# words=[word for word in jieba.cut(text) if re.search(r'[0-9]+',word)] #筛选出数字

# print(words)

wc = WordCloud(

        background_color="white",

        max_words=2000,

        font_path='C:\\Windows\\Fonts\\simfang.ttf',

        height=1000,

        width=1000,

        max_font_size=80,

        random_state=50,

    )

myword = wc.generate(text)

wc.to_file('signature.png')

os.system('start signature.png')

#多线程

# GIL 全局线程锁

# IO密集

# 多进程:multiprocessing

import threading

import time

from datetime import datetime as dt

def say_hello(word):

    time.sleep(1) #休眠1s

    print(word)

pool=[]

now=dt.now()

for x in range(10):

    t=threading.Thread(target=say_hello,args=(x,))

    t.start()

    pool.append(t)

   

for t in pool:

    t.join()

end=dt.now()

print('总用时:',(end-now).total_seconds())

#正则表达式

import re

# 查找所有数字, +表示查找一个以上的数字

# nums=re.findall(r'\d+',text)

# print(nums)

# # 查找所有单词:

# words=re.findall(r'[a-zA-Z]+',text)

# print(words)

# # 查找所有汉字

chinese_words=re.findall(r'[\u4e00-\u9fa5]+',text)

chinese_words=re.findall(r'[\u4e00-\u9fa5]{4,10}',text) #指定要查找的汉字个数

print(chinese_words)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值