自学Python基础

# import this

print("ds"
      "dsds")
name = "ouyang"
print(type(name))
print(id(name))  # 内存地址
print(10**3)
#
# height = float(input("输入身高"))  # input进来的都是str
#
# weight = float(input("输入体重"))
# bmi = weight / (height * height)
# print("你的BMI指数为" + str(bmi))
# if bmi < 18.5:
#     print("轻")
#
# if 24.9 <= bmi < 29.9:
#     print("胖了")


print(6 if 10 > 6 else 10)



print(4 << 2)

year = 2019
result = "是闰年" \
    if (year % 4 == 0 and year % 100 == 0) or (year % 400 == 0) else "不是闰年"
print("")
print(str(year) + result)

print("")
print("")

print("if number%3==2 and number%5==3 and number%7==2:")
flag = True
number = 0
while flag:
    number += 1
    if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
        print(number)
        break
print("")

print("")

print("1+2+3+...+100")
result = 0
for i in range(101):


    result += i
print(result)

print("")
print("")

for i in range(1, 10, 2):
    print(i, end=' ')

print("")
print("")
for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+"x"+str(i)+" = "+str(i*j)+"\t",end=" ")

    print("")

print("")
print("")

array=[1,2,3,4,5,6]
print(array[1:6])  # 从一开始,不包括一
print(array[:]) #复制整个数组
list1=[8, 7, 9]
print(array + list1)
print(list1 * 3)
print(7 in list1)
print(len(list1))
print(min(list1))
print(max(list1))
print(str(list1))
print(sorted(list1))

list1.append(10)
print(len(list1))

# array.extend(array1)
print(list1)


# print(reversed(array1))


print(list(range(1,5,2)))

import datetime
mot=[1,2,3,4,5,6,7]
day=datetime.datetime.now().weekday()
print("星期"+str(mot[day]))

for i,item in enumerate(mot):
    print(i,item)  #索引加内容



print(list1)
del list1[0]
print(list1)

if list1.count(10)>0:  #如果这个元素出现次数大于0,remove
    list1.remove(10)
print(list1)

num=list1.count(7)
print(num)

print(list1.index(9)) #元素首次出现的下标
print(sum(list1)) #计算列表元素和

array2=["a","d","C","c",'e']

print(sorted(array2)) #内置的方法
print(sorted(array2,reverse=True))

array2.sort(reverse=True)#列表对象的方法
print(array2)
array2.sort(key=str.lower)#不区分大小写排序  lower没有括号
print(array2)

print("")
print("")

##   生成列表
import random
li=[i for i in range(5)]
print(li)

randomArr=[random.randint(10,100) for i in range(10)]
print(randomArr)

half=[x*0.5 for x in randomArr]
print(half)

select=[x for x in half if x>30]
print(select)
print("")
print("")

##  二维列表

binaryArr=[[j for j in range(5)] for i in range(4)]
print(binaryArr)

binaryArr1=[]
for i in range(4):
    binaryArr1.append([])
    for j in range(5):
        binaryArr1[i].append(j)
print(binaryArr1)

###元组
tuple1=tuple(range(10,20,2))
print(tuple1)
print(tuple1[:3])#first three elements


for i ,item in enumerate(tuple1):
    if i%2==0:  #序号为偶数不换行
        print(str(item), end=', ')
    else:
        print(str(item)+".")

print("")
print("")
print(tuple1)
tuple1=(10,11,12)
print(tuple1)

tuple1+=(13,) #元组单个元素后面也要加,
print(tuple1)
###  字典
dictionnary1={'name':'ouyang','qq':'2455356027'}
print(dictionnary1)

xin=["ouyang","gao"]
ming=["yu","jinliang"]
dictionnary2=dict(zip(xin,ming))  #打包两个列表为字典
print(dictionnary2)

# dictionnary3={xin:ming}
print(dictionnary2)
print(dictionnary2["gao"])
print("gao is ",dictionnary2.get("gao","none"))
#  查到就第一个,没有就第二个


#    key value  遍历 字典
for key,value in dictionnary2.items():
    print(key+" 是 "+value)

print(dictionnary2.keys())

for i in dictionnary2.keys():
    print(i)

dictionnary2["zhu"]="yangyu"
print(dictionnary2)
dictionnary2["zhu"]="YANGYU"
print(dictionnary2)
if "zhu" in dictionnary2:
    del dictionnary2["zhu"]

print(dictionnary2)

randomDict={i:random.randint(10,100) for i in range(1,5)}
print(randomDict)#字典推导式
set1={1,2,3}
set2={3,4,5}
print(set1&set2) #交
print(set1-set2)# 补
print(set1|set2) #并

###########字符串
print("")
print("")

str1: str="高 锦 良 大 傻 瓜"
encode = str1.encode() #默认采用
print(encode)
print(encode.decode("UTF-8"))

print(len(str1))
print(len(str1.encode("GBK")))  #GBK字节数
print(str1[0:3])
print(str1.split())
print(str1.split("大"))
print(str1.split(" ",4)) #以空格分隔,且只分割前四个
print(str1.count("高"))
print(str1.find("大"))

print(str1.endswith("瓜"))



s="   .高锦良@@@...    "
print(s.strip())

import math  #格式化字符串
print("${:,.2f}".format(3950)) #货币格式
print("{0:E}".format(12000.1))  #科学计数法
print("{:.5f}".format(math.pi)) # 小数点后五位
print("{0:#x}".format(100)) # 十六进制
print('{:.0%}'.format(0.99))  #百分制
print("you are {},I am {}".format("SB","NB"))



a=10
b=20
a,b=b,a
print(a,b)


print(round(100/3,3))
print(math.radians(180))
print(math.sin(math.pi/2))
print(max(10,3,36,6,959,8888))

print(sum([10,66,846,21212])) #sum参数是列表

print(divmod(10,3))

print('s"d')
print(len("sdsa"))
print("asdf"[:2])

def charfliter(str1):
    '''
    过滤特定字符
    :param str:
    :return:
    '''
    import re
    patten=r'(黑客)|(病毒)'
    print(re.sub(patten,"XX",str1))

def charfliter1(str1):
    '''
    过滤特定字符
    :param str:
    :return:
    '''
    import re
    patten='(黑客)|(病毒)'
    return re.sub(patten,"XX",str1)
charfliter("我是黑客,我喜欢搞病毒")
print((charfliter1("我是黑客,我喜欢搞病毒")))



###可变参数,参数为长度可变的列表
def listname(*name):
    for item in name:
        print(item)
listname("asd",45,54)

list4=["asd",98,90,False]
listname(*list4)  #直接用列表当成参数,加*

def dictprint(**dict):  #直接用字典当成参数,加**
    for key,value in dict.items():
        print(key+"--->"+value)

dictprint(**dictionnary2)
print("asd"[-1:])   #  -1表示最后一个元素
# print('\n'.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))

##匿名函数
r=10
result=lambda r:math.pi*r*r
print(result(r))

####           class
class People:

    '''
    
    '''


    def __init__(self,name):
        self.legs=2
        print("my name is "+name)
    __age=20
    def eat(self,food):
        print("I am eating "+food)

me=People("ouyang")  #创建对象时候自动执行init方法
me.eat("noodles")

People.hands=2   #动态添加类属性
print(me.hands)
print(People.hands)
print(me.legs)
#print(People.legs)   实例属性只能通过实例访问

# print(People.__age)
# print(me.__age)
# print(me.People.__age)


class Tvshow:
    list=[1,2]
    def __init__(self,show):  #构造一个实例属性
        self.__show=show     #实例属性 :__show
    @property               #方法转换为属性,默认不可更改
    def show(self):
        return self.__show

    @show.setter
    def show(self,value):     #自定义更改的方法
        if value in Tvshow.list:
            self.__show="change to "+str(value)
        else:
            self.__show="change failed"

tv=Tvshow(7)
print("now "+str(tv.show))
print("you can change this form ",Tvshow.list)
tv.show=2
print(tv.show)
tv.show=6
print(tv.show)

print(math.pi)
from math import *
print(pi)

print(dir())  #查看具体导入了那些定义
import sys
print(sys.path)
print()
print()
print()
for i in range(1, 10):
    print(i, end=' ')
#   help('modules')  Python都有那些模块

#############   FILE

fp = open('E:\ouYang.txt', 'a+')  # a--->append   w--->rewrite
print("高锦良", file=fp)
fp.close()  #

with open('E:\ouyang.txt','r') as file:   #读取文件内容
    message=file.read(10)
    print(message)
    print(file.readline())
    messageAll=file.readlines()
    for item in messageAll:
        print(item)

import os
print(os.getcwd())  #当前项目的路径
print(os.listdir('C:\\Users\\Administrator\\PycharmProjects\\Learn'))
#  要用转移字符  或者用/

print(os.path.exists('E:\ouyang.txt'))  #判断目录或文件是否存在

path="E:\demo\demo\ouyang"
if not os.path.exists(path):
    os.makedirs(path)
    print("SUCCEED")

# if os.path.exists(path):
#     os.rmdir(path)
#     print("DELETE SUCCEED")

tupledir=os.walk(path)
for item in tupledir:
    print(item)

dir(__builtins__)

ouyang='E:\ouyang.txt'

# if os.path.exists(ouyang):
#     os.rename(ouyang,"E:\gao")
#     print("RENAMED")

if os.path.exists(ouyang):
    os.remove(ouyang)
    print("REMOVED")
else:
    print("NO FILE")


#GUI


import wx

class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"LOGIN IN",size=(400,300))
        panel=wx.Panel(self)  #面板

        self.title=wx.StaticText(panel,label='input your name and password') #实例属性添加到面板

        self.label_user=wx.StaticText(panel,label="username")
        self.input_user=wx.TextCtrl(panel,style=wx.TE_LEFT)

        sizer_user=wx.BoxSizer(wx.HORIZONTAL)
        sizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5)
        sizer_user.Add(self.input_user,proportion=1,flag=wx.ALL,border=5)

        self.label_pass=wx.StaticText(panel,label="password")
        self.input_pass=wx.TextCtrl(panel,style=wx.TE_PASSWORD)

        sizer_pass = wx.BoxSizer(wx.HORIZONTAL)
        sizer_pass.Add(self.label_pass, proportion=0, flag=wx.ALL, border=5)
        sizer_pass.Add(self.input_pass, proportion=1, flag=wx.ALL, border=5)

        self.bt_cancel=wx.Button(panel,label="NO")
        self.bt_comfirm=wx.Button(panel,label="YES")
        self.bt_cancel.Bind(wx.EVT_BUTTON,self.Cancel)
        self.bt_comfirm.Bind(wx.EVT_BUTTON,self.Confirm)

        sizer_button = wx.BoxSizer(wx.HORIZONTAL)
        sizer_button.Add(self.bt_comfirm, proportion=0, flag=wx.ALL, border=5)
        sizer_button.Add(self.bt_cancel, proportion=1, flag=wx.ALL, border=5)



        sizer_all = wx.BoxSizer(wx.VERTICAL)
        sizer_all.Add(self.title,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,proportion=0,border=15)
        sizer_all.Add(sizer_user,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,proportion=0,border=45)
        sizer_all.Add(sizer_pass,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,proportion=0,border=45)
        sizer_all.Add(sizer_button,flag=wx.ALIGN_CENTER|wx.TOP,proportion=0,border=15)
        panel.SetSizer(sizer_all)

    def Confirm(self,event):
        name=self.input_user.GetValue()
        passw=self.input_pass.GetValue()
        message=""
        if name=="" or passw=="":
            message="NO VOID"
        elif  name=="ouyang" and passw=="gao":
            message="WELCOME"
        else :
            message="NO VALID"
        wx.MessageBox(message)

    def Cancel(self,event):
        self.input_pass.SetValue("")
        self.input_user.SetValue("")


if __name__=='__main__':
    app=wx.App()
    frame=MyFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()




#pygame

pygame

import sys
import pygame
import random

class Bird(object):
    def __init__(self):
        self.birdRect=pygame.Rect(65,50,50,50)
        self.birdStatus=[
            pygame.image.load("bird.jpg"),  #默认状态
            pygame.image.load("bird.jpg"),#jump
            pygame.image.load("bird.jpg")#dead
        ]
        self.status=0
        self.birdX=120
        self.birdY=350
        self.jump=False
        self.jumpSpeed=10
        self.gravity=5
        self.dead=False


    def birdUpdate(self):
        if self.jump:
            self.jumpSpeed-=1
            self.birdY-=self.jumpSpeed
        else:
            self.gravity+=0.2
            self.birdY+=self.gravity #下降坐标增加
        self.birdRect[1]=self.birdY  #赋值为矩形第二个元素



class Pipeline(object):
    def __init__(self):
        self.wallX=400
        self.pineUp=pygame.image.load("up.png")
        self.pineDown=pygame.image.load("down.png")

    def updatePipeline(self):
        self.wallX-=5 #坐标递减,向左移动
        if self.wallX<-80:
            global score
            score+=1
            self.wallX=400 #back to default



def createMap():
    screen.fill((255,255,255))
    screen.blit(background,(0,0))
    screen.blit(Pipeline.pineUp,(Pipeline.wallX,100)) #显示上管道和坐标
    screen.blit(Pipeline.pineDown,(Pipeline.wallX,500)) #显示上管道和坐标
    Pipeline.updatePipeline()



    if Bird.dead:
        Bird.status=2
    elif Bird.jump:
        Bird.status=1
    screen.blit(Bird.birdStatus[Bird.status],(Bird.birdX,Bird.birdY))
    Bird.birdUpdate()

    screen.blit(font.render(str(score),-1,(255,255,255)),(200,50))

    pygame.display.update()

def checkDead():
    upRect=pygame.Rect(Pipeline.wallX,
                       100,
                       Pipeline.pineUp.get_width()-10,
                       Pipeline.pineUp.get_height())
    downRect=pygame.Rect(Pipeline.wallX,
                       500,
                       Pipeline.pineDown.get_width()-10,
                       Pipeline.pineDown.get_height()  )

    if upRect.colliderect(Bird.birdRect) or downRect.colliderect(Bird.birdRect):
        Bird.dead=True
    if not 0<Bird.birdRect[1]<height:
        Bird.dead=True
        return True
    else:
        return False

def getResult():
    text1="Game Over"
    text2="your score is "+str(score)

    font1=pygame.font.SysFont("Arial",70)
    surf1=font.render(text1,1,(242,3,36))
    font2=pygame.font.SysFont("Arial",50)
    surf2=font.render(text2,1,(253,177,6))

    screen.blit(surf1,[screen.get_width()/2-surf1.get_width()/2,100])
    screen.blit(surf2, [screen.get_width()/2-surf2.get_width()/2,200])

    pygame.display.flip()




if __name__=="__main__":
    # pygame.init()
    pygame.font.init()
    font=pygame.font.SysFont(None,50)

    size = width,height=400,720
    # clock=pygame.time.Clock()
    Pipeline=Pipeline()
    Bird=Bird()

    screen=pygame.display.set_mode(size)
    score=0
    while True:
        # clock.tick(60)
        for event in pygame.event.get():
           if event.type==pygame.QUIT:
                sys.exit()
           if (event.type==pygame.KEYDOWN or event.type==pygame.MOUSEBUTTONDOWN) and not Bird.dead:
               Bird.jump=True
               Bird.gravity=5
               Bird.jumpSpeed=10
        background=pygame.image.load("gao.jpg")
        if checkDead():
            getResult()
        else:
            createMap()
    # pygame.quit()







    # pygame.init()


# pygame.quit()



爬虫

from bs4 import BeautifulSoup

import requests

list_url = "https://bj.lianjia.com/zufang/"

result = requests.get(list_url)

# print(result.text)
soup = BeautifulSoup(result.text, "lxml")

items = soup.find_all("div", class_="content__list--item")  # 所有   div标签  类为pic-panel的列表

print("https://bj.lianjia.com" + items[0].a.get("href"))  # 每一个层的a 标签下的href属性

items_links = ["https://bj.lianjia.com" + item.a.get("href") for item in items]


house_url = "https://bj.lianjia.com/zufang/BJ2388975025706508288.html"
result = requests.get(house_url)
soup = BeautifulSoup(result.text, "lxml")
house_price = soup.find("p", class_="content__aside--title").text
house_typ = soup.find_all("span")
# print(house_typ)

def getPrice(url):

    soup=BeautifulSoup(requests.get(url).text,"lxml")
    return soup.find("p", class_="content__aside--title").text

for url in items_links:
    print(getPrice(url))

数据处理

import numpy as np

li1 = list(range(10))
ndarray = np.array(li1)  # from list to array

a = np.zeros(10, dtype=int)
print(a.dtype)  # int32

b = np.zeros(10)
print(b.dtype)  # float64

c = np.zeros((4, 4), dtype=int)
print(c.dtype)
print(c)
'''
int32
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
 '''
d=np.ones((4,4),dtype=int)
print(d)
'''
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
'''
e=np.full((3,3),3.14)
print(e)
'''
[[3.14 3.14 3.14]
 [3.14 3.14 3.14]
 [3.14 3.14 3.14]]
 '''
f=np.full_like(d,555)
print(f)   #按照d的样子(行列数相等)

print(np.random.randint(0,10,(5,5),int))
'''
[[6 1 1 2 4]
 [6 2 3 5 2]
 [1 4 0 8 0]
 [2 5 6 3 6]
 [3 7 9 4 6]]
'''

print(np.arange(0, 10, 2)) #[0 2 4 6 8]
np.linspace(0,3,10)  #0 to 3   ,10 numbers

eye = np.eye(5,dtype=int)
print(eye) #n 维 的单位矩阵
print(eye[:2,:2])  #数组切片 ,取前两行列
print(eye.ndim)  #数组维度
print(eye.shape)# 数组行列
print(eye.size) #数组大小
print(eye.itemsize)#每个元素字节数
print(eye.nbytes)#数组所占字节数
print(eye.reshape(1,25))

#### 数组的运算


print(eye*2)  # 不改变原来eye

print(eye>0)
'''
[[ True False False False False]
 [False  True False False False]
 [False False  True False False]
 [False False False  True False]
 [False False False False  True]]
'''
print(np.all(a>0))
print(np.any(eye>0))
'''
False
True
'''

补充

string="abcdefg"
print(string[:3])
print(string[2:3])  #取序号为二的字符

print(string[:7:2]) #在前7个里面步长为二取


print(string[-1:]) #取最后一个字符
print(string[-2:-1]) #取倒数第二个字符
print(string[-2:]) #取最后两个字符

print(string[::-1])  #反转字符

print(string.capitalize())  #Abcdefg
print(string.center(30,"-"))#-----------abcdefg------------
print(string.center(9))    #           abcdefg

print(string.find("s"))
print(string.find("s",2))  # 从..开始找
print(string.istitle())  #是否首字母大写
string="      SDSDSsdsds5  5151   "
print(string.strip())   #去掉两端的空格
print(string.lstrip())  #去掉左边空格
print(string.swapcase()) #交换大小写
print(string*3)

li=[2,3,4,2]
li1=li.copy()   #两块地址,互不干扰
li1[0]=9999
print(li)

li2=li     # 指向同一块地址,改新的,
li2[0]=666666
print(li)

li.extend(li1)
li.append("ds")#li=li+li1

print(li)

li.insert(0,100)
print(li)

li.pop()
print(li)

li.remove(3)
print(li)   #first occurrence

li.sort()
print(li)
li.sort(reverse=True)
print(li)

print(100 in li)



# tuple
a=(3)
print(type(a))  #  int


a=(3,)  #元组一个元素必须加逗号,否则就是括起来的内容
print(type(a))    #<class 'tuple'>


###
condition=""  #任何空的变量都可以当做False
if not condition:
    print("False")

a="asd"
b="bbb"

print(a and b)   #非布尔做and  返回b
print(a or b)    #非布尔做or   返回第一个不为空的(False)

#assert b=="asd","b不是bbb"  #如果断言不通过,程序会弹出 异常,通过则什么都不发生


#当出现了9就终止

import random
numbers=[]
while (9 not in numbers):
    numbers.append(random.randint(0,10))
print(numbers, len(numbers))



# import time
# number=0
# while True:
#     time.sleep(0.5)
#     number+=1
#     print("gao.{}".format(number))



#循环中的else :如果没有执行break语句,就一定会执行else里的代码

for item in numbers:
    break
else:
    print("没有break")


dict1={
    1:111,
    2:222,
    3:111
}

print(dict1[2])  #2  not index ,is key
print(dict1 )


li3=[key for key,value in dict1.items() if value==111]
print(li3)   #[1, 3]


def get_keys(dict,value):
    return [k for k,v in dict.items() if v==value]

print(get_keys(dict1,111))

import functools



def test():
    return random.random()

def dec(func):
    @functools.wraps(func)
    def wrapper(*args,**kwargs):
        # do something here


        return round(func(*args,**kwargs),2)
    return wrapper()


# print(dec(test()))


def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print('call %s():' % func.__name__)
        print('args = {}'.format(*args))
        return func(*args, **kwargs)
    return wrapper



print(test())



pandas

import pandas

#
# df =pd.read_csv("‪C:\Users\Administrator\Desktop\test.csv")
# print(df)

import numpy
import matplotlib.pyplot as plt
from pandas.plotting._matplotlib import hist

x=numpy.linspace(0,10,50)
y=numpy.sin(x)

# plt.plot(x,y)
# plt.plot(x,numpy.cos(x),"--")  #虚线
# plt.show()

# plt.subplot(2,1,1)   #两行一列第一个
# plt.plot(x,numpy.sin(x),"o",color="red",label="sin(x)")   #点状
# plt.legend()
#
# plt.subplot(2,1,2)
# plt.plot(x,numpy.cos(x),"--",label="cos(x)")  #图注
# plt.legend()
# plt.show()
#
# x=numpy.random.rand(100)
# y=numpy.random.rand(100)
# colors=numpy.random.rand(100)
#
# sizes=100*numpy.random.rand(100)
# plt.scatter(x,y,c=colors,s=sizes,alpha=0.5)
# plt.colorbar()
# plt.style.use("classic")
# plt.show()



df=pandas.DataFrame(numpy.random.rand(100,4).cumsum(0),columns=["A","B","C","D"])
df.plot()
plt.show()

df=pandas.DataFrame(numpy.random.randint(10,50,(3,4)),
                    columns=["A","B","C","D"],
                    index=["one","two","three"])
df.plot.bar()
df.hist()
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值