Python18动态语言Ruby Python python

python基础总结

2018-07-21  本文已影响134人  o_8319

一、快捷键

  1. ctr+b 执行
  2. ctr+/ 单行注释
  3. ctr+c 拷贝
  4. ctr+v 粘贴
  5. ctr+z 撤销
  6. ctr+shift+z 反撤销
  7. ctr+a 全选
  8. ctr+x 剪切

二、注释

注释:注释是穿插在代码中的说明文字,对于代码实现功能无任何作用,注释也不会参与执行。

1、单行注释

2、多行注释

三、标识符

标识符:在开发中使用的所有名字都是标识符(包括变量名、函数名、类名、对象名等)

四、关键字(保留字)

五、行与缩进

六、多行语句

七、数据类型

1、数字

python中的数字分为:整型(整数)、浮点型(小数)、布尔、复数(实部+虚部)

a、整型(int):python3中只有长整型int,python2中有long。

    例如:23、100、-25

b、浮点型(float):python3中只有float类型。

    例如:12.9、1.0、0.0、-10.5、2e2

c、布尔(bool):表示真假(是否)的值,值只有True(真)和False(假)两个值,True是1,False是0。
d、复数(complex):由实部和虚部组成。

    例如:10+1j,11.5+2j

2、字符串

八、进制转换

1、十进制

2、二进制

3、八进制

4、十六进制

九、变量

1.声明变量

十、运算符

1、算数运算符

2.比较运算符:>、<、>=、<=、==、!=

3、赋值运算符:=、+=、-=、=、/=、%=、//=、*=

4、逻辑运算符:and(与),or(或),not(非)

十一、运算优先级

十二、字符串

1、Python中的字符串都是Unicode字符串

2、字符串的长度

3、获取字符/子串

a、获取某一个字符

b、获取字符串中某一部分的字母(获取子串)

4、字符串的运算符

十三、print函数

十四、字符串的内置函数

十五、条件语句

1.if

2.if-else

3.if-elif-elif-else

十六、转换函数

1.int()

2.flot()

3.bool()

4.str()

十七、循环

1、for循环

2.while循环

 格式:
 while 条件语句:
    循环体

十七、break和continue

1、break

2、continue

十八、else

十九、多重循环

二十、列表

1、声明一个列表

声明了一个列表list1,有5个元素,分别是:1,2,3,10.2,'abc'。
list1=[1, 2, 3, 10.2, 'abc']
print(list1)
声明一个空的列表:
list[]

2、获取列表元素

a、获取某单个元素(通过元素对应的下标)

b.获取列表中的部分元素(切片)

c.遍历列表

    list4=[1, 22, 31, 2, 42, 24, 12]
    打印列表中所有的偶数
    for item in list4:
        if item%2==0:
            print(item)
    计算列表中所有元素的和:
    方法一:
    s=0
    for item in list4:
        s+=item
    print(s)
    方法二:
    n=0
    s=0
    while n<len(list4):
        s=s+list4[n]
        n+=1
    print(s)
    获取下标为奇数的元素
    方法一:
    n=1
    for item in list4:
        while n%2!=0:
            print(item)
            break
        n+=1
    方法二:
    n=0
    while n<len(list4):
        if n%2!=0:
            print(list4[n])
        n+=1
    方法三:
    n=1
    while n <len(list4):
        print(list4[n])
        n+=2

3、在列表中添加元素

a、append()方法:列表名.append(元素)

b、insert:列表名.insert(下标,元素)

4、修改列表中的元素

5、删除列表中的元素

a、del语句:在python中,del可以删除任何内容

b、通过remove方法删除指定元素

c、使用pop()方法删除指定下标的元素

6、列表的操作

a、求列表的长度

    list1=[1,2,34,1,4,51]
    print(len(list1))  # 6

b、列表的+操作

c、列表的 * 操作

d、元素 in 列表:判断指定的元素是否在指定的列表中

    list4=['abc',33,'a',2,1]
    print('abc' in list4)  # True

e、元素 not in 列表:判断指定的元素是否不在指定的列表中

    list5=['abc',33,'a',2,1,'asa']
    print('asa' not in list5)   # False

f、获取列表中的最大的元素

g、获取列表中的最小元素

h、list将其他的数据转换成列表

二十一、元组(tuple)

1、声明元组

tuple1=(1, 2, 3, 4, 'aa', True)
print(tuple1)

2、查

print(tuple1[0])
print(tuple1[-1])

print(tuple1[:3])

for item in tuple1:
    print(item)

for index in range(len(tuple1)):
    print(tuple1[index])

3、 + ,*

print((1, 3, 5, 6)+('q', 'b', 'c'))
print((1, 2, 3)*3)

4、in , not in

a=10
print(a in (1, 4, 10, 5))
print(a not in (2, 3, 10, 5))

tuple2 = (1, 3, 5, 2, 7)
tuple2[2] = 10   # 报错(TypeError: 'tuple' object does not support item assignment)
del tuple2[1]    # 报错(TypeError: 'tuple' object does not support item assignment)

练习,输入1-7的数字,然后对应输出是星期几。例如:输入1,就输出“星期一”。
tuple3=('一', '二', '三', '四', '五', '六', '日')
while True:
num=int(input('请输入数字:'))
print('星期%s' % (tuple3[num-1]))

二十二、字典(dict)

1、声明/定义 字典(dict)

声明了一个字典对象,有两个键值对
dict1 = {'name': '骆昊', 'age': 18}
dict2 = {'score': 100, 10: 'aaa', (1, 2): [1, 2]}
print(dict2)

2、查

a.获取单个元素的值

b、遍历字典

3.修改

4.增加

5.删除(删除的是键值对)

a、del语句

b、pop()方法

6、keys和values方法

dict1 = {'a': 1, 'b': 2, 'c': 3}

a、字典.keys():获取字典中所有的key,结果是一个列表

print(dict1.keys())  # dict_keys(['a', 'b', 'c'])

b、字典.values():获取字典中所有的值,结果是一个列表

print(dict1.values())   # dict_values([1, 2, 3])

7、update

8、in 和 not in

二十三、集合(set)

1、声明一个集合

set1 = {1, 2, 3, 4, 1}
print(set1)   # {1, 2, 3, 4}
将字符串转换成集合:
set2 = set('abcdfreea')
print(set2)  # {'e', 'f', 'r', 'b', 'c', 'a', 'd'}
将列表转换成集合:
set3 = set([1, 2, 3, 4, 5, 6, 5, 3])
print(set3)  # {1, 2, 3, 4, 5, 6}
将字典转换成集合(是将字典的key取出来作为集合的元素):
set4 = set({'a': 1, 'b': 2, 'c': 3})
print(set4)  # {'b', 'a', 'c'}

练习:将字符串str1='abcdffaaaaaffs'去重
str1='abcdffaaaaaffs'
set5 = set(str1)
str2=''
for x in set5:
    str2=str2+x
print(str2)

2、查

3、增加

a、update()

b、add

4、删除

5.判断包含关系: >= 、 <=

6. | , & , - , ^

    set1 = set('12345')
    set2 = set('456789')

a、 |:求并集,求set1和set2中所有的元素

print(set1 | set2)  # {'2', '8', '9', '5', '7', '4', '6', '3', '1'}

b、 &:求交集,求在set1和set2的公共部分

print(set1 & set2)  # {'4', '5'}

c、 -:求差集,求在set1中,但是不在set2中的元素

print(set1 - set2)  # {'1', '3', '2'}

d、 ^:获取set1和set2中除了公共部分以外的所有元素

print(set1 ^ set2)  # {'6', '2', '9', '7', '8', '1', '3'}

7.copy

二十四、函数

1、认识函数

a.让界面更简洁(同样的功能对应的代码只写一遍)
b.如果功能发生改变,使用函数只需要修改一个地方的代码
c.让代码模块化

2、函数的声明(定义)

a、格式
def 函数名(参数列表):
说明文字
函数体

b、对于初学者来说,声明函数的步骤:

1.确定函数的功能(确定函数是做什么的)
2.确定函数名(根据功能确定函数名)
3.确定参数(确定是否有参数,确定参数有几个,看实现这个功能需不需要从外面传值进去)
4.确定是否需要返回值(返回值:就是函数返回给调用者的数据。python中所有的函数都有返回值,默认是None)
5.实现函数的功能

3、函数的调用

a.位置参数(用实参依次给形参赋值)

my_sum(2,3)  # 5 执行这句代码:先将num1=2,在将num2=3.在执行my_sum的函数

b.关键字参数

my_sum(num2=5, num1=10)   # 15
练习:写一个函数,打印一个数的立方
def lifang(num):
    """ 打印num的立方"""
        print(num**3)
lifang(5)   # 125

c.参数的默认值

d.参数个数不定

4、函数的返回值

a.就是函数调用表达式的值;
b.就是return关键字后的表达式的值;
c.就是函数返回给调用者的值。

5、函数调用

6、return

a.将值传给函数调用者(函数调用表达式)
b.结束函数

7、函数的结束

a.没有return,函数体执行完毕,函数结束;
b.如果函数中有return,遇到return函数就结束,程序直接回到函数调用的位置,接着往下执行。

练习:写一个函数,找出100-200之间第一个能被13整除的数
def zhao_shu():
for i in range(100, 201):
    if i % 13 == 0:
        return i
print(zhao_shu())   # 104

8、将列表作为参数

9、函数变量

a.函数名就是函数类型的变量(类型名:function),存的是函数入口的地址

def func1():
    print('aaa')

b.可以用一个变量给另外一个变量赋值

a = func1()    # 这样赋值。是将函数func1的返回值赋给a
a = func1      # 将函数变量func1赋给啊,a就会变成一个函数
a()  # 心在就可以用函数变量a,去调用函数func1
def func2(num):
    return num * 2
b = func2
print(func2(10))  # 20
print(b(10))      # 20

c.函数变量作为函数的参数

def calculate(num1,num2,fn):
    if not(isinstance(num1,int) or              isinstance(num1,float)):
        print('num1不是数字')
        return  None
    if not(isinstance(num2,int) or isinstance(num2,float)):
        print('num2不是数字')
        return None
    return fn(num1, num2)
def func_add(n,m):
    return n + m
def func_sub(n, m):
    return n - m
print(calculate(20,10,func_sub))  # 10

d.函数作为返回值

10.匿名函数

11、递归函数

a.递归函数:在函数的声明中调用函数本身

这儿的func1就是一个递归函数
def func1():
    print('aaa')
    func1
func1()

b.递归作用:理论上循环能够做到的事情,递归都可以做。(但实际除非是非用不可的情况,一般不用递归)
c.步骤:

12.函数的调用

a.调用函数的时候,首先会在栈中开辟一块内存空间,用来保存函数调用过程中产生的数据(包括函数的参数和在函数中声明的变量)
当函数执行完成后,被调用函数对应的内存空间会被回收(释放)

13、使用模块管理函数

a.通过import关键字导入模块,然后通过模块名.函数的方法去使用模块中的函数

    通过 import 模块名
    import random
    s=random.randint(1,10)
    print(s)

b.通过from-import直接导入指定的函数或者类。导入后就可以直接调用函数

c.通过 as关键字:通过as给导入的模块或者函数重命名

    1.通过as改变模块名
    import  random as my_random
    s=my_random.randint(1,10)
    print(s)
    2.通过as改变模块中的函数名
    from random import randint as my_randint
    s=my_randint(1,9)
    print(s)

二十五、作用域

1、全局变量

2、局部变量

a、global关键字的使用
b=100
def func5():
#想在这个地方去修改全局变量b的值为200
global b
b = 200
func5()
print(b) # 200

二十六、文件操作

1.打开文件
2.对文件进行读/写操作(读:获取文件内容 写:修改文件内容)
关闭文件

1、文本文件

a.打开文件

(1)直接写全路径(不推荐使用): 'E:/Python资料/python作业/上课笔记/6.24/code/aaa.txt'
(2)一般将涉及到的文件放到工程中:'lalala.txt'

a.文件和代码对应的.py文件在一个目录下面:路径直接写文件名
在工程文件夹下,但是不直接和代码文件在一个目录里面: ./文件对应的文件夹名/文件名

'r'(文本读,以读的形式打开,只能获取文件内容,不能修改文件内容)
'w'(文本写,以写的形式打开,只能修改文件内容,不能获取文件内容)
'a'(文本写)
'rb'(二进制读)
'wb'(二进制写)
'ab'(二进制写)

b.读操作

c.修改读取的位置

d.写操作

f = open('aaa.txt', 'w', encoding='utf-8')

2、二进制文件

a.二进制文件的读

b.二进制文件的写

3、json文件

最外层:要么是字典结构,要么是数组(列表)结构,要么是字符串
里面的数据:字符串、二进制、数字、字典、数组(列表)

{}->字典结构
{
    "name":"aa",
    "age":18,
    "score":[100,22,44]
}

[]->数组结构
[
    100,
    "name"
]

->字符串
“
    name,awdf,[1,2,3]
”

a.读取json文件中的内容

b.json文件的写操作

二十七、异常的捕获

二十八、面向对象编程

1、编程思想:

面向过程编程:c(只有逻辑和过程)
a=1
b=2
print(a+b)

面向对象编程java 、c++、oc、python(有类语法)-->(以对象为工具实现功能)
对象.sum(1,2)

函数式编程:c、java、python (以函数为工具实现功能)
def sum(num1,num2):
    return num1+num2
sum(1,2)

2、类和对象

a.class:python中声明类的关键字
b.类名:标识符(1.首字母大写!! 2.见名知义)
c.冒号:固定格式,冒号后一个缩进的内容就是类的内容
d.类的内容:

1.类变量:声明在类中,方法外的变量;要通过类去获取(通过类能够让其具体的属性)
2.对象属性
3.方法(构造方法、对象方法、类方法、静态方法):声明在类中的函数就叫方法

声明一个人对应的类:
class Person:
    count = 61  
    def __init__(self):
        # 我们一般在这个地方去声明对象的属性
        self.name = '啦啦啦'
        self.age = 18
        self.gender = '男'
    def run(self):
        print('跑起来')

二十九、类的定义

a.class:python中声明类的关键字
b.类名:标识符。 首字母大写、见名知义。
c.属性:分类的字段和对象的字段。---->属性
d.方法:对象方法(构造方法)、类方法、静态方法。---->功能

  • 方法:就是声明在类中的函数(都有一个默认参数,不需要调用的时候给他传值)
  • 对象方法:在类中直接声明的函数,带一个参数self;要使用对象来调用。
# 声明类
class Person:
    """人类"""    # 说明文档
    # 在类中声明了eat方法,默认有一个参数self,调用eat方法的时候,不需要给self传参
    # 在类中直接声明的函数都是对象方法,对象方法必须使用对象来调用
    # 直接写在类中的函数,必须带参数self
    def eat(self):
        print('吃饭~')
    # 注意:如果要在类中声明带参的对象方法,那么其它的参数必须写在self后面
    def run(self,num):
        print('跑了%d米'%(num))
# 创建对象

p1 = Person()
# p1就是Person类的一个实例(对象)
# 可以通过对象去调用类中的对象方法、和使用类中声明的对象属性(字段)

三十、对象属性和init方法

  1. 示例一:init方法会自动调用
    class Person:

2.示例二:带参的init方法

class Dog:
    """狗"""

3.示例三:对象属性

4.示例四:

class Student1:
    def __init__(self, name1='', age1='', tel1=''):
        self.name = name1
        self.age = age1
        self.tel = tel1

三十一、self

三十二、属性的增删改查

class Dog:
    """狗"""
    # Dog类有name和age两个属性
    def __init__(self,name='',age=0):
        self.name = name
        self.age = age
dog1 = Dog('恭喜发财',20)

1.查

a.方式一:对象.属性

特点:如果属性存在就获取属性的值。如果属性不存在就会报AttributeError错误

print(dog1.name)  # 恭喜发财
# print(dog1.score)  # 报错(AttributeError: 'Dog' object has no attribute 'score')

b.方式二:getattr(对象,属性名,默认值)--->获取指定对象的指定属性

如果不设置默认值:属性如果存在就获取属性值,如果属性不存在就报错
如果设置默认值:属性如果存在就获取属性值,如果属性不存在,不报错,并且将默认值作为结果

print(getattr(dog1, 'name'))  # 恭喜发财
# print(getattr(dog1, 'score'))  # 报错(AttributeError: 'Dog' object has no attribute 'score')
print(getattr(dog1, 'score', 100)) # 100

c.方式三:对象. _ _ getattribute _ _ (属性名)

获取指定对象的指定属性。如果属性不存在就会报错。

print(dog1.__getattribute__('name'))  # 恭喜发财

2.改(修改)

a.方式一:对象.存在的属性=新值

dog1.name = '小黄'
print(dog1.name)  # 小黄

b.方式二:setattr(对象,存在的属性名,新值)

setattr(dog1, 'name', '小白')
print(dog1.name)  # 小白

c.方式三:对象. _ _ setattr _ _ (存在的属性名,新值)

dog1.__setattr__('name', '小黑')
print(dog1.name) # 小黑

3.增(对象添加属性)

a.方式一:对象.不存在的属性=值

dog1.sex = '公'
print(dog1.sex)  # 公

b.方式二:setattr(对象,不存在的属性名,值)

setattr(dog1, 'he', 'dagoou')
print(dog1.he)  # dagoou

c.方式三:对象. _ _ setattr _ _ (不存在的属性名,值)

dog1.__setattr__('hehe', '无语')
print(dog1.hehe)  # 无语

4.删除属性

a.方式一:del 对象.属性

# 将dog1的age属性删除
del dog1.age

b.方式二:delattr(对象,属性名)

delattr(dog1, 'hehe')

c.方式三:对象._ _ delattr _ _ (属性名)

dog1.__delattr__('he')

5.判断对象是否拥有某个属性

    class Person:
        def __init__(self,name ='',age=0,id_num='',sex=''):
            self.name = name
            self.age = age
            self.id_num = id_num
            self.sex = sex
    p1 = Person('小明', 10)
    # 给不存在的属性赋值,就是添加属性
    p1.score = 100
    print(p1.score+100)   # 200
    p2 = Person('小黄', 20)

三十三、内置类属性

class Dog:
    """狗"""
    def __init__(self,name='',age=0,color=''):
        self.name = name
        self.age = age
        self.color = color
    def run(self):
        print('%s跑起来了'%(self.name))
    def shout(self):
        print('%s在叫唤'%(self.name))
dog1 = Dog()

a. 类. _ _ name _ _ :获取类的名字(只有类有这个属性)

print(Dog.__name__)   # Dog

b. 类. _ _ doc _ _ :获取类的说明文档

print(Dog.__doc__)   # 狗

c. _ _ dict _ _

类. _ _ dict _ _ :获取类中所有的类属性(类字段)和对应的值的键值对--->结果是字典
对象. _ _ dict _ _ :以键值对的形式获取指定对象的所有的属性和值

print(Dog.__dict__)
print(dog1.__dict__)  # {'name': '', 'age': 0, 'color': ''}

e. 类. _ _ module _ _ :获取类所在的模块的名字

print(Dog.__module__)  # __main__

f. 类. _ _ bases _ _ :获取指定类的基类

print(Dog.__bases__)   # (<class 'object'>,)

三十四、类和对象

1、属性私有化

2、假的私有属性

3、类字段和类方法

4、静态方法

5、类的继承

6、类的继承重写

三十五、类和对象

1、类的多态

2、运算符的重载

3、多继承

4、对象的内存管理

6、包的应用

三十六、pygame

import pygame

1.初始化

pygame.init()

2.创建窗口

3.设置填充颜色

4.显示图片/文字/图形

1、显示图片

a.创建一个图片对象

image = pygame.image.load('./files/1.jpg')

b.获取图片的大小

c.对图片进行缩放

d.对图片进行旋转

e.对图片进行旋转缩放

d.将对象添加到窗口对象中

2、显示文字

a.创建字体对象

b.根据字体创建文字对象

c.将文字对象添加到窗口上

screen.blit(text, (80, 170))

3、画图形

a.画线

b.画矩形

c.画弧线

4.显示在屏幕上

pygame.display.flip()
# pygame.display.update()

5.让窗口停留

while True:
    for event in pygame.event.get():
        # 关闭事件
        if event.type == pygame.QUIT:
            exit()
        # 鼠标按下事件
        if event.type == pygame.MOUSEBUTTONDOWN:
            # 获取鼠标按下的位置
            print(event.pos)
            print('鼠标按下')
        # 鼠标弹起事件
        if event.type == pygame.MOUSEBUTTONUP:
            # 获取鼠标弹起的位置
            print(event.pos)
            print('鼠标弹起')
        # 鼠标移动事件
        if event.type == pygame.MOUSEMTTON:
            print('鼠标移动')

三十七、正则表达式

1、正则符号

不带任何正则符号的正则表达式
.--> 匹配任意的字符
\w-->匹配字母、数字、下划线
\s-->匹配空白字符(包括空格(\r)、制表符(\t)和回车(\n)等)
\d-->匹配数字
\b-->匹配单词边界(字符串的开始和结束、空白、标点符号、括号、~等)

^ -->匹配开头
$ -->匹配字符串结束
\相应的大写字母-->\相应的小写字母的功能取反
[]-->匹配[]中任意的一个字符

[^]-->匹配不在[]中的任意的一个字符
' * '' -->匹配0次或者多次
'+'' --> 匹配1次或者多次
'?'' -->匹配0次或者1次
{N}-->匹配N次
{M,}-->匹配至少M次
{M,N}-->匹配至少M次,最多N次
| -->分之(相当于逻辑运算符中的or)
'?'' -->重复任意次,尽可能少的匹配
print(re.match(r'a
?', 'aaabcd')) # match=''
+? --->重复一次或者多次,尽可能少的匹配

2、正则函数

a. compile:将正则表达式字符串编译成正则对象(就可以去调用相关的正则表达式对象方法)

import re
result = re.compile(r'\d\d[a-zA-Z]{2}')
print(type(result))  # <class '_sre.SRE_Pattern'>

b. match

  1. re.match(正则表达式字符串/对象,要匹配的字符串)
  2. 正则表达式对象.match(要匹配的字符串)

c. search

  1. re.search(正则表达式/对象,指定的字符串)
  2. 对象.search(指定的字符串)

d. findall

re.findall(正则表达式/对象,指定的字符串)

e. split

  1. re.split(正则表达式/对象,指定的字符串,最大拆分数)
最大拆分数:拆分数量,默认是0. 0-->代表全部拆分
  1. 正则对象.split(指定的字符串)
result = re.compile(r'[,\s]').split('abc,bcd,amm,ssff affefe erefef')
print(result)
result = re.compile(r'[,。]').split('床前明月光,疑是地上霜。举头望明月,低头思故乡。')
del result[-1]
print(result)  # ['床前明月光', '疑是地上霜', '举头望明月', '低头思故乡']

f. sub

re.sub(正则表达式,替换字符串,原字符串)-->替换后原字符串不变,返回一个新的字符串

三十八、获取网络数据

1. 确定请求的地址(url)

2.通过GET方式请求数据,请求结束后会返回响应

response = requests.get(url,{'type': 1, 'page': 1})

3.获取数据内容

a.获取字符串形式的数据

print(type(response.text), response.text)

b.获取json格式的数据

reslut = response.json()
print(type(reslut), reslut)

c.获取二进制形式的数据

data = response.content
print(type(data), data)

三十九、socket _ sever

1.创建套接字对象,并且指定服务类型

2.绑定IP地址和端口

3.监听访问

server.listen()
print('开始监听....')
# 让服务器一直运行,等待访问
while True:
    # 当有客户端访问当前服务器后就建立连接
    connet, addr = server.accept()  # 当有一个客户端来连接当前服务器的时候才会执行
    print('=========')
    while True:
        # 通过会话给客户端发送消息
        # 发送的内容必须是二级制数
        #字符串转二进制:字符串.encode('utf-8')
        #二进制转字符串:二进制数据.decode('utf-8')
        message = input('>>>')
        connet.send(message.encode('utf-8'))
        # 接收客户端发送给服务器的消息
        data = connet.recv(1024)
        print(data.decode('utf-8'))
    # 关闭连接
    # connet.close()

四十、socket _ 客户端

import socket

1.创建套接字对象

client = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)

2.连接服务器

client.connect(('10.7.154.62', 12346))
while True:

3.接收服务器返回的数据

4.给服务器发送数据

message = input('>>>')
client.send(message.encode('utf-8'))
上一篇下一篇

猜你喜欢

热点阅读