python

数据类型

int : 整型

float

bool : True False . C89中C语言是没有bool类型 C99中有bool类型

#define true 1 #define false 0

str: 字符串.

list: 列表 容器,里面存放各种类型的数据

tuple: 元组 容器

dict: 字典

标识符

程序员自定义的符号.

规则:

1.由数字,字母,下划线组成,并且数字不能开头

2.不能和关键字重合

3.见名知意

4.驼峰命名法

                     大驼峰:每一个单词的首字母大写 eg:类名

                       小驼峰:第一个单词首字母小写其他的大写

                           eg:windows编程中 函数名, 变量名

5.通过下划线链接

eg: Linux编程当中. 统一使用下划线链接

关键字

语言的作者赋予一些词语特殊的含义.

python当中的关键字

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

运算符

/ : 除法 9 /2 = 4.5

//: 整除 9//2 = 4

: 幂运算 210 = 2 ^ 10 = 1024

python中没有 ++ -- 这种赋作用的运算符.

python支持同时赋值 a,b=10,20;

交换值

c语言中:

int c=a;

a=b;

b=c;

/

若对空间有限制,不能申请变量

用两个数的和

a=a+b;

b=a-b;

a=a-b;

/

若数值过大

异或:相同为0,异或与顺序无关

a=a^b; //a=a^b

b=a^b;// b=a^b^b =a^0=a

a=a^b; //a=a^a

/

python中:

a,b=10,20;

a,b=b,a;

逻辑运算符

and : 与运算符: 两个真且为真

or : 或运算符: 有真就为真

not : 非运算符: 真假互换

input函数

特点: 无论输入任何类型的数据,最终在程序中都是以 字符串 形式显示的.

eg:

type函数

功能:查看变量的类型强制类型转换格式: 想要转换的类型(变量)

            强制类型转换格式: 想要转换的类型(变量)

python逻辑语句

判断语句

概念:

判断某件事情是否成立,根据是否成立,执行相应的语句

格式1:

if 判断条件:

(Tab) 条件成立执行的语句

if else 格式

if condition1:

code1 // condition1成立执行代码

else:

code2 // condition1不成立执行的代码

########################################################

python 当中的随机数:

import random # 随机数模块

# 产生随机数

computer = random.randint(0, 2)

while condition:

code

i = 1

while i < 101:

print("第 %d 次 .妈妈,我错啦. 我再也不敢了" )

i += 1

for 循环

for格式:

for 临时变量 in 字符串 列表 字典等可迭代对象:

code

可迭代对象:拥有迭代器的对象,就称为可迭代对象

迭代器:通过++找到对象的下一个位置;用* 取出迭代器里面的值

用途:遍历:将不同的类型按照相同的格式进行遍历

range函数

用法:range(起始位置,终止位置,步长) 步长:每次加多少

特点:前面是闭区间后面是开区间

字符串string

引号之间的内容就是所谓的字符串

单引号和双引号之间的内容就是字符串

三引号之间的内容就是多行字符串 //分行

访问

数组支持下标访问:

从左到右,下标从0开始;

从右到左,下标从-1开始

切片

格式: var变量 [ 初始位置:终止位置:步长 ]

初始位置:默认字符串的开始位置

终止位置:字符串的结尾

步长:默认为1

字符串处理

查询统计家族

功能:在原字符串查找子字符串的位置

函数: find rfind index rindex

find函数:

功能:在原字符串查找子字符串的位置

返回值:

成功:子字符串的初始下标

失败:-1

rfind函数

功能:从右到左查找子字符串在原字符串的位置

返回值:

成功:子字符串的初始下标

失败:-1

index函数

功能:在原字符串中查找子字符串的位置

返回值:

成功:子字符串的初始下标

失败:报错

rindex函数

功能:从右到左查找子字符串在原字符串的位置

返回值:

成功:子字符串的初始下标

失败:报错

分割家族

split函数

功能:按照指定的字符对字符串进行分割

splitlines函数

功能: 按行分割

返回值:根据行分割好的字符串列表

变换家族

功能:对字符串中的字母进行大小写变换

upper函数

功能:将字符串的内容全部转换成大写

返回值:转换成功后的字符串

lower函数

功能:将字符串的内容全部转换成小写

返回值:转换成功后的字符串

判断家族

功能:对字符串进行判断

startswitch函数

功能:对字符串是否以xxxxx开头

返回值:

成功:True

失败:False

endswitch函数

功能:对字符串是否以xxxxx结尾

返回值:

成功:True

失败:False

is族判断

isalpha :判断是否全是由字母组成

isdigit: 判断是否全是由数字组成

isalnum:判断是否全是由字母或数字组成

isspace: 判断是否全是由空格组成

对齐家族

center

功能:按照指定的长度对字符串进行居中,默认填充的字符是空格

ljust

功能:按照指定的长度对字符串进行左对齐,默认填充的字符是空格

rjust

功能:按照指定的长度对字符串进行右对齐,默认填充的字符是空格

整理家族

功能:去除字符串左右两端指定的字符

strip函数

功能:去除字符串两端指定的内容

lstrip函数

功能:去除字符串左端指定的内容

rstrip函数

功能:去除字符串右端指定的内容

运算符家族

+:

字符串拼接操作

*:

字符串复制

孤儿家族

count函数

功能:统计子字符串在原字符串出现的次数

返回值:出现的次数

join函数

功能:将容器(列表中)的字符串拼接起来

返回值:拼接好的字符串

python数据类型

列表:

列表是一种容器,可以存放任意类型的数据

访问

列表是支持下标进行访问的

下标:从左到右,下标从0开始,

从右到左,下标从-1开始

列表也支持切片访问的

语法:var变量[ 初始位置:终止位置:步长 ]

列表的增删改查

len函数:

指定要进行长度统计的字符串

a='www.PaAey.net'

>>>len(a) #输出13

排序

c语言中,冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

sort函数:排序

元组

概念:

元组也是一个容器,可以存放数据(int bool,str......),元组里面的内容不可以进行修改

只有访问和查找

支持下标和切片进行访问

查找:in not in count

字典

概念:字典也是容器,使用{},{}里面的值,以key和value类型存在

注意:字典的key必须是不可以改变的类型:字符串,数字。元组

字典里面的底层原理是用红黑树实现的

红黑树

每个节点不是红色就是黑色

根节点必须是黑色

每个叶子节点都有null节点,颜色都是黑色

如果一个节点是红色,那么它的子节点必须是黑色(不能连续红色)

从一个节点到该节点的所有子节点包含相同的黑色节点

字典的定义

dic ={"name":"小白"}

字典的访问

#字典的增删改查
stu={"name":"张三","age":18}

#字典是可以根据key值进行访问
print("my name is %s,age is %d" % (stu["name"],stu["age"]))

# 字典访问不存在的key,会直接报错
# print("my name is %s,age is %d,my father is %s" % (stu["name"],stu["age"],stu["father"]))

# get函数通过key值进行访问
print("my name is %s,age is %d,my father is %s" % (stu.get("name"),stu.get("age"),stu.get("father")))

# 添加元素到字典中
'''
dict[不存在的key]=value
'''
stu["father"]="张二"
stu["mother"]="小美"
stu["aunt"]="小姨"
print(stu)
for i in stu:
    print(i,stu[i])

# 字典的修改
'''
dict[key]=new_value
'''
print("修改后的内容")
stu["father"]="张一"
for i in stu:
    print(i,stu[i])

# 字典的删除
'''
del dict[key]
'''
del stu["mother"]
del stu["aunt"]
print("删除之后的内容")
for i in stu:
    print(i,stu[i])

# 清空字典中所有的内容
'''
dict.clear()
'''
stu.clear()
print("清空之后的内容")
for i in stu:
    print(i,stu[i])



# 字典的查找
'''
字典的查找,本质上 in    not in
len:字典当中的键值对的个数
keys:字典当中的key:values当中的所有的key值
values:字典当中的key:value里面的所有的value值
items: 字典当中的所有的key:value

'''
print("stu字典中的key:value的个数",len(stu))
print("stu字典中的key:value中的所有的key值",stu.keys())   #配合in   not in来进行使用
print("name in stu.keys:", "name" in stu.keys())          #查询name是否在stu中  True/False
print("stu中所有的value值:",stu.values())                 #查询字典当中的key:value里面的所有的value值
print("stu中所有的key:value内容:",stu.items())           #查询字典当中的所有的key:value

#  items 是可以在遍历的时候进行使用
for key,value in stu.items():
    print(key,value)

函数

概念:完成特定的功能的一段代码,高内聚,低耦合。本质:方便代码复用

函数的定义

def 函数名(形式参数列表):

      函数体

函数的调用

函数名(实际参数列表)

形式参数与实际参数的区别:

         形式参数是实际参数的一份临时拷贝

#定义两个数相加的函数

def sum(x,y):     #形式参数没有类型的限制  
    return x+y                  
print(sum(10,20))               
print(sum("father","mather"))   

函数返回值

python中的函数支持返回多个值

使用和返回值相同数量的值,进行接收

def fun(x,y):
    add=x+y
    sub=x-y
    mul=x*y
    div=x/y
    return add,sub,mul,div

add,sub,mul,div=fun(10,5)
print("add :",add)
print("sub :",sub)
print("mul :",mul)
print("div :",div)

使用一个进行接收,但是输出结果会被打包成元组

def fun(x,y):
    add=x+y
    sub=x-y
    mul=x*y
    div=x/y
    return add,sub,mul,div

ret=fun(10,5)
print(ret)

参数

缺省参数

在定义函数的时候,给参数进行默认赋值,当调用的时候没有给出该参数的时候,会自动使用缺省函数进行赋值

默认值从右向左给出

作用:使调用更加灵活

def info(name,age=6):
    print("my name is %s  age is %d"%(name,age))
info("xxx",5)
info("mmm")

不定长参数

形式参数前面加上    *     可以将多余参数打包成元组使用

def info(name,age,*hobby):

    print("my name is", name)
    print("my age is", age)
    print("my hobby is",hobby)
info("xxx",5,"吃饭","睡觉","打豆豆")

递归函数

概念:

函数调用函数本身

条件:

            递归要有结束条件

           每次递归,都要向递归结束条件靠近

递归函数的时间复杂度:

递归的次数 × 每一次递归函数的时间复杂度

#阶乘

#计算阶乘
def fun(x):
    # 结束条件
    if x==1:
        return 1
    return x*fun(x-1)
ret=fun(3)
print(ret)

#斐波那契数列

#斐波那契数列
def fun(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fun(n-2)+fun(n-1)

print(fun(3))

fun(50)算不出来或者说需要很久

原因:时间复杂度是2的n次方

递归的使用场景

优点:简单

缺点:代码理解起来会很复杂

应用场景:

                1.能想得到

                2.对时间和空间没有太大的影响

递归的面试

青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

                        斐波那契变形

        思路1:

                        1阶:1

                        2阶:2

                        3阶:3

                        4阶:5

                        5阶:7

        思路2:剩余台阶数    n-1 或者 n-2

局部变量与全局变量

局部变量:

函数内部声明的变量叫做局部变量

全局变量

函数外部声明的变量叫做全局变量

number=100
def fun():
    number=200
fun()
print(number)

关键字global

声明使用的是全局变量 

简单的学生管理系统

'''
学生管理系统

描述学生:数据类型:字典       {"name":name,"age":age,"score",score}
容器选择:列表  [{},{},{}]
'''
#定义一个全局变量class_info 班级信息
class_info=[]

def print_menu():
    print("---------------------------")
    print("学生管理系统")
    print("1.添加学生")
    print("2.删除学生")
    print("3.修改学生")
    print("4.查询学生")
    print("5.显示所有学生")
    print("6.退出系统")
    print("---------------------------")

#添加学生的函数
def add_student():
    #声明使用全局变量
    global class_info
    name=input("please input your name")
    #不想执行,退出到主页面
    if name=="quit":
        return main()

    age = input("please input your age")
    score = input("please input your score")


    #姓名的验证,不能有重复的名字
    for student in class_info:  #class_info =[{},{},{}]
        if student["name"]==name: #说明学生姓名重复
            print("学生已经存在")
            return
    #学生没有被添加过
    student={
        "name":name,
        "age":age,
        "score":score
    }
    #将学生信息插入列表
    class_info.append(student)   #class_info =[{'name':'zhangsan','age':'18','score':'90'}]
    print("插入成功")


#删除学生的函数
def del_student():
    global class_info   #声明使用全局变量

    #根据姓名删除学生
    name=input("输入要删除的学生姓名")
    if name=="quit":
        return main()

    #根据学生的姓名去class_info中寻找
    for student in class_info:
        if student["name"]==name:
            class_info.remove(student)
            print("删除成功")
            return
    #循环外就是学生不存在
    print("学生不存在")
    return None

#修改学生信息的函数
def rev_student():
    global class_info     #声明使用全局变量
    name=input("输入要修改学生的姓名")
    if name=="quit":
        return main()
    for student in class_info:
        if student["name"] == name:
            student["name"]=input("输入修改后学生的名字")
            student["age"] = input("输入修改后学生的年龄")
            student["score"] = input("输入修改后学生的成绩")
            print("修改成功")
            return
    print("学生姓名错误")
    return None

#查询学生信息的函数
def find_student():
    global class_info  # 声明使用全局变量
    name=input("输入你要查询的学生姓名")
    if name=="quit":
        return main()
    for student in class_info:
        if student["name"] == name:
            print("name",student["name"])
            print("age", student["age"])
            print("score", student["score"])
            print("查询成功")
            return
    print("查询失败")
    return None

#显示所有学生的函数
def show_student():
    global class_info  # 声明使用全局变量

    #遍历学生信息
    print("%10s %10s %10s %10s" % ("序号","姓名", "年龄", "成绩"))
    i=1
    for student in class_info:
        print("%10s %12s %12s %12s" % (i,student["name"],student["age"],student["score"]))
        i+=1
    return None


def main():
    while True:
        print_menu()    #打印功能菜单
        choose=int(input("please input your choose"))   #选择功能
        if choose==1:
            add_student()
            print(class_info)
        elif choose==2:
            del_student()
        elif choose==3:
            rev_student()
            print(class_info)
        elif choose==4:
            find_student()
        elif choose==5:
            show_student()
        elif choose==6:
            print("byebye")
            break
        else:
            print("输入有误,请重新输入")
            continue

main()

文件系统

概念

文件:持久化存储数据

文件的相关操作

文件的基本操作:

        打开文件:open

        关闭文件:close

        读写文件:read  readline  write   writelines

运行后多出一个111.txt文件

with 上下文管理器:打开文件后,不需要手动关闭文件,自动管理文件的关闭

        格式:

                 with open(地址,打开方式)as 临时变量:

                        临时变量就是打开的文件

readline()默认读取一行

OS模块

导入OS模块:import os

os.rename(src,dst)    将原来的src文件命名为dst

运行后

当文件不存在的时候,会报错

os.remove 将文件删除

#如果删除的文件不存在,会报错

运行后

os.listdir():  获取指定路径下的所有的文件名

将指定路径下的文件,全部修改成txt文件

运行后

面向对象编程

面向对象与面向过程

面向对象:将事情委托给擅长这件事情的人来完成         C++,Java Python

面向过程:强调的是过程,所有的事情,全部都是由自己完成           C语言

类与对象

类:类型,一般是一个泛指,指 的是一类物体(具有相同的属性和方法)

对象:类的具体的实例化,一般情况是特指一个物体

类与对象的关系:

        类是创建对象的模版

类的组成:

        类一般由三部分组成:

        类名        属性:一组数据        方法:函数

面向对象的特点:

        封装:将属性与方法封装到一起

        继承:类级别的代码复用

        多态:函数的多种形态

        抽象:将具体的内容,转换成数据

抽象:

        类名:SunFlower

        属性:图片,HP

        方法:摇动,产生阳光

定义类:

经典类:
#经典类
class GrilFriend:

    #属性
    sex="女"
    age=18

    #类方法
    @classmethod
    def cook(cls):
        print("女孩子天生就会做饭")

    #对象的方法:实例的方法
    def shopping(self):
        print("女孩子喜欢购物")
新式类:
#新式类
class GirlFriend(object):
    #object :python当中最顶级的父类
    sex="女"
    age=18

    #类方法
    @classmethod
    def cook(cls):
        #cls:类本身
        print("女孩子天生会做饭")

    #定义对象的方法
    def shopping(self):
            #self:类似C++当中的this指针,self指的是对象
        print("女孩子喜欢购物")

定义对象

格式:对象名=类名()

一个类可以创建多个对象

class GirlFriend(object):
    #object :python当中最顶级的父类
    sex="女"
    age=18

    #类方法
    @classmethod
    def cook(cls):
        #cls:类本身
        print("女孩子天生会做饭")

    #定义对象的方法
    def shopping(self):
            #self:类似C++当中的this指针,self指的是对象
        print("女孩子喜欢购物")

    #通过类创建对象
white=GirlFriend()

#对象调用类方法
white.cook()
white.shopping()

实例方法与类方法的区别

class GirlFriend(object):
    #object :python当中最顶级的父类
    sex="女"
    age=18

    #类方法
    @classmethod
    def cook(cls):
        #cls:类本身
        cls.age=20
        print("女孩子天生会做饭")

    #定义对象的方法
    def shopping(self):
            #self:类似C++当中的this指针,self指的是对象
        print("女孩子喜欢购物")

    #定义change方法修饰属性
    def change(self):
        self.sex="男"
        self.age=20


    #通过类创建对象
white=GirlFriend()

#对象调用类方法
white.change()
white.cook()
print(white.sex,white.age)


black=GirlFriend()
print("black.age=",black.age)

类方法:

        类名和对象都可以访问,但是类方法可以修改类属性

实例方法:

        对象进行调用,不可以修改类属性,只可以修改对象的属性(实例属性)

类方法不可以访问实例方法

魔法方法:

__init__魔法方法

        __init__不是创建对象的方法,是初始对象的方法

特点:

        不需要手动调用,在创建对象的时候,会自动调用

        __init__是可以进行传参的

class GirlFriend(object):
    #object :python当中最顶级的父类
    sex="女"
    age=18

    #定义对象的属性
    def __init__(self,hair="黑发",eye="大眼睛"):
        self.hair=hair
        self.eye=eye

    #类方法
    @classmethod
    def cook(cls):
        #cls:类本身
        cls.age=20
        print("女孩子天生会做饭")

    #定义对象的方法
    def shopping(self):
            #self:类似C++当中的this指针,self指的是对象
        print("女孩子喜欢购物")

    #定义change方法修饰属性
    def change(self):
        self.sex="男"
        self.age=20

    #定义一个方法,自我介绍
    def show(self):
        print("我的头发是:%s,眼睛是:%s"%(self.hair,self.eye))

#不传参数的时候,使用的是缺省参数
white=GirlFriend()
white.show()
black=GirlFriend("大波浪","卡姿兰大眼睛")
black.show()

        __del__魔法方法

功能:       

          __del__不是删除对象的方法,在删除对象,回收资源的时候,会自动调用这个函数

特点:

        在程序执行完毕或者调用del关键字删除对象的时候,会进行调用

class GirlFriend(object):
    #object :python当中最顶级的父类
    sex="女"
    age=18

    #定义对象的属性
    def __init__(self,hair="黑发",eye="大眼睛"):
        self.hair=hair
        self.eye=eye
        self.file=open("./1.txt","w")   #理论上有一定的资源

    #类方法
    @classmethod
    def cook(cls):
        #cls:类本身
        cls.age=20
        print("女孩子天生会做饭")

    #定义对象的方法
    def shopping(self):
            #self:类似C++当中的this指针,self指的是对象
        print("女孩子喜欢购物")

    #定义change方法修饰属性
    def change(self):
        self.sex="男"
        self.age=20

    #定义一个方法,自我介绍
    def show(self):
        print("我的头发是:%s,眼睛是:%s"%(self.hair,self.eye))

    #定义__del__方法回收资源
    def __del__(self):
        print("-------------开始回收资源---------------")
        self.file.close()
        print("-------------回收资源结束---------------")

#不传参数的时候,使用的是缺省参数
white=GirlFriend()
white.show()

####

__str__魔法方法

功能:

        返回一个字符串,当打印对象的时候,会自动打印出__str__函数返回的内容

特点:

        调用print打印对象的时候,才会主动调用

继承

概念:

        子类继承父类的属性和方法

继承是指类与类之间的关系,对象和对象之间不可以继承

     

class A(object):
    money=100

#继承是指子类继承父类的属性和方法
class B(A):   #B继承A
    pass   

#pass表示一个占位符,如果没有程序不完整,会报错,添加pass表示,这里没有任何内容,是空的

b=B()
print(b.money)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值