大数据菜狗为了实验室重拾python之路

一、continue和break

        continue是跳出当前循环直接进入下一次循环;break是直接跳出当前循环

         注意:continue在使用中必须注意是否会进入死循环的问题(主要看用于控制循环次数的变量在continue语句之前有没有对应的进行更改)

 这种情况是可以进行的

i=0
while (i<10):
    if (i == 3):
        i += 1          #使用continue时需要确认是否会进入死循环
        continue
    print(i)
    i += 1

但如果将continue之前的i+=1去掉的话,continue执行后while就会陷入一个死循环,特别注意

二、print函数的拓展

        print函数默认在输出内容后的结束符是\n,即换行符;而在print中加入end="字符",即可人为指定输出内容结束后的结束符了;

        print函数它是自带换行符的,也就是说,就算你使用print("\n"),在输出完一个换行之后,print函数又会自动输出一个换行,也就是说print("\n")的输出结果就是两个换行

三、转义字符

        \n为换行符

        \"为转义输出双引号(在print函数中)

        \t在控制台输出一个制表符,协助在输出文本时在垂直方向上对齐

        ex:(九九乘法表)

        未使用转义字符:

row=1
while (row<=9):
    quarry=1
    while (quarry<=row):
        sum = quarry*row
        print("%d*%d=%d"%(quarry,row,sum),end=" ")
        quarry+=1
    print("")
    row+=1

        输出结果:

         使用转义字符作为输出的分隔符:

row=1
while (row<=9):
    quarry=1
    while (quarry<=row):
        sum = quarry*row
        print("%d*%d=%d"%(quarry,row,sum),end="\t")
        quarry+=1
    print("")
    row+=1

        输出结果(对齐):

四、函数

        ①函数被调用之前需要先定义;

        ②定义函数时需要传参的话,直接定义即可;

        ex:def print_lines(a,b):

                        .......

        ③在pyhton中也可以使用return来返回所需要的值,更加便捷的是,在python中不需要注明函数返回值的类型(不同于c/c++),直接return即可

五、模块

        yysy类似于c/c++中的头文件,但使用起来也有不同的地方;(注意:模块名也必须符合标识符的命名规则)

        ①调用模块中的函数或变量的时候,需要在文件头声明调用该模块:

        ex:import  啥啥啥.py

        ②调用模块中的函数或变量,使用模块.函数名/变量名来调用

        ex:my_circle.print_area()

        

六、列表

        列表的定义:用[ ]定义,数据间用","分隔,数据索引从0开始,取值----list[]

       列表常用操作:

                .index:用于获取指定内容在列表中的索引,若列表中没有指定值则会报错

                        ex:list.index("...")

                Ⅱ .append:用于向列表的末尾追加数据

                        ex:list.append(".....")

                .insert:用于向列表的指定位置添加数据(通过索引),插入位置的值就变成指定数据,

                        ex:list.insert(1,"abc"),则索引为1的值就直接变成"abc",原来的数据均往后挪一位

                .extend:可以将指定列表中的内容追加到列表中

                        ex:templist=["666","777"],name_list=["123"],name_list.extend(templist) 

                .remove:直接删除列表中的指定数据(遇到多个重复元素时,只能删除第一个元素)

                        ex:name_list.remove("123")

                .pop:若不带参数,则默认将列表中最后一个元素删除;若带参数(索引),则将指定索引位置的元素删除

                        ex:name_list.pop()  ;  name_list.pop(3)-------删除索引为3的元素

                .clear:清空列表------变成空列表

        使用del关键字对列表中的元素进行删除操作

                区别于直接对列表进行的操作(.啥啥啥),使用del关键字删除元素会直接在内存中删除这个变量,后续代码不能够继续使用该变量

        len关键字和count关键字

                len:用于计算列表中的元素总数(即列表长度)

                        ex:len(name_list)         

                count :用于统计列表中某个数据出现的次数

                        ex:name_list.count("123")-------------统计name_list中"123"出现的次数

        对列表的排序(sort和reverse)

                sort:升序/降序排序                参数中有个reverse参数,默认reverse=False--升序,指定reverse=True即对列表进行降序排序

                        ex:list.sort()---升序                list.sort(reverse=True)--降序

                reverse:逆序排序(翻转顺序)

                        ex:list.reverse()---对列表顺序进行翻转

        ⑥迭代遍历(众所周知的for循环)

                for i in list(列表变量):                -------i获得的是list列表中的各个内容

七、元组

        ①元组的定义、和列表的区别:

                用"()"来定义,元素之间用","分隔,与列表不同的是,元组中的元素是不可修改的

                元组一般用于存储不同类型的数据

                获取元组中对应元素的方法也和列表相同,都是通过索引

                        Ex:info_tuple[0] ------获取索引为0的元素

                注意:定义元组只有一个元素时,需要在这个唯一的元素后面加个",",好让系统知道这是定义一个元素的元组,不然系统会认定这就是个正常的变量

                

infotuple = (8)

print(infotuple)







输出结果:8

        

                对元组的操作--------------类比于对列表的操作(.index、.count等等)

                对于元组元素的遍历---------------类比于对列表元素的遍历(基本用不到对元组的遍历,因为元组中存储的变量类型基本都不同,所以很难对不同元素执行统一的操作)

                应用场景:

                        Ⅰ作为函数的参数和返回值----------一个函数可以通过元组接受任意多个参数,或者一次返回多个参数

                        Ⅱ 格式字符串-------------print("...."%())本质上是一个元组

                        Ⅲ 让列表不可以被修改,以保护数据安全

                ⑤列表与元组之间的转化

                        元组:tuple()----------------转化成元素不能修改的列表

                        列表:list()-------------------转化成元素能够修改的列表

八、字典

        ①字典的定义:

                字典是无序对象(列表是有序)的集合,用键值对来存储数据,通常用于描述一个变量的

                相关信息;

                键(类似于索引)必须唯一,但值可以取任何数据类型(字符串、数字、元组);

                键和值之间使用":"分隔,键值对之间使用","分隔-------key:value,key:value;

                使用”{ }“定义;

        针对字典的常用操作:

                Ⅰ 取值:dict[key]

                Ⅱ 增加 / 修改:dict[key] = value---------------key存在,则修改值;key不存在,则新建键

                值对

                Ⅲ 删除:dict.pop(key)

                Ⅳ 统计键值对数量:len(dict)

                Ⅴ 合并字典:dict1.update(dict2)--------合并后的字典就是dict1

                如果dict1和dict2中有相同的键,那么dict2的对应键的值会覆盖掉dict1的对应键的值

                Ⅵ 清空字典: dict.clear()

        对字典的循环遍历

                for k in dict:-----------------------k是每一次循环中从字典中取出来的key

        ④字典的应用场景

                字典使用多个键值对来描述一个物体的相关信息,可以将多个字典放在一个列表中,再

                进行遍历,在循环体内部针对每个字典进行相同的处理

                ex:

stu_list = [{"name":"ljh","age":18}
    ,{"name":"jx","age":19}]

for info in stu_list:
        print(info)

输出结果
{'name': 'ljh', 'age': 18}
{'name': 'jx', 'age': 19}

                

九、字符串

        字符串的基本操作

               Ⅰ 统计字符串长度:len()
                Ⅱ统计某一个子字符串出现的次数:.count(),出现不存在的子字符串的是次数为0
                Ⅲ某一个子字符串出现的位置.index(),若该子字符串不存在则会报错
        字符串的常用方法总览和分类(.啥啥啥)
            1.is'''判断类型
                isspace ():若字符串中只包含空格或其他制表符等空白字符,则返回True
                isdecimal ():若字符串中只包含数字,则返回True,不能判断小数(返回False)
                isdigit ():除了只有数字之外,像只有(1)这种unicode字符串也能返回True
                isnumeric():除了上述两个判断数字的功能它都有之外,他还能判断中文数字(一二三四五这些,有且只有则返回True
            2.查找与替换    
                 startswith():检查字符串是否以指定字符串开始
                 endswith():检查字符串是否以指定字符串结束
                 find():查找指定字符串出现的索引(类似于index,但如果使用find 来查找不存在的字符串,返回的索引值是-1,不会报错)
                replace (old,new):用新的字符串替换旧的字符串,返回值是原字符串替换后的新字符串,但并不会对原字符串做出改动

              3.文本对齐

                center(width,filtter_char):使字符串居中对齐,width是指居中的字符串宽度,filter_char是指填充字符

                      ex:      

poem = ["静夜思","床前明月光","疑是地上霜","举头望明月","低头思故乡"]

for i in poem:
    print(i.center(10," "))

输出结果:

   静夜思    
  床前明月光   
  疑是地上霜   
  举头望明月   
  低头思故乡   

                 ljust(width,filter_char):向左对齐  ||||||  rjust(width,filter_char):向右对齐

               4.去除字符串中的空白字符

                       strip():去除掉字符串左右两边的字符串

                       lstrip():去除字符串左边的空白字符

                       rstrip():去除字符串右边的空白字符 

               5.字符串的拆分和连接

                       str.split('char',num):将字符串按照指定分隔符(char)进行拆分,拆分的结果放入一个列表-----即返回值是一个列表,num代表分割次数。如果未指定分隔符,则默认空白字符(空格、制表符、换行符这些)为分隔符对字符串进行拆分

                       char.join(list):将list中的所有元素合并为一个新的字符串------即返回值是一个字符串,元素之间的分隔符为char

        ③字符串的切片

                字符串[开始索引:结束索引:步长]

                步长是指有间隔的跳跃性切片,例如name[1:8:2],就是从索引1开始,每隔两个取一个元素(1后面就取3),到8截至(不包括索引8的元素)

               ⭐ 切片的方法是前闭后开,即开始索引的元素是包含在内的,但结束索引的元素是不包含在内的

                ex:

name = "peace world"
print(name[0:5:])

输出结果:peace

                实用方法 :

                1.顺序第一个元素的索引是0,倒序最后一个元素的索引是-1(往前就是-2...)

                        可以从正往负切片------和正向切片一样的效果(name[2:-1]就是从第三个元素到倒数第二个元素)

                2.如果想要将最后一个元素切进来,那么只需要将结束索引的位置空出来即可

                        Ex:name[0::]-----------------将所有元素切出来

               3.如果想要从第一个元素开始切,可以直接将开始索引为空-----name[:]---所有元素

               4.如果想逆序切片,则可以将步长改为-1------name[-1::-1]----字符串逆序

⭐十、公共方法(字典、列表、元组、字符串)

                ①python内置函数

                        Ⅰlen()--------计算元素个数

                        Ⅱ del()--------删除变量

                        Ⅲ max()------返回容器中元素的最大值(如果是字典,则只针对key进行比较)

                        Ⅳ min()------返回容器中元素的最小值(如果是字典,则只针对key进行比较)

                        Ⅴ 比较运算符(>,<,==)来比较元组、字符串、列表的大小(字典是无序的,不能比较)

                ②切片(只针对列表、元组、字符串)-----------参照字符串切片

                ③运算符

                        Ⅰ*----重复拼接(字典除外)

                        Ⅱ +---合并(字典除外)

                        Ⅲ in/not in----成员运算符

                                判断元素是否在容器内---in(在返回True)、not in(不在返回True)

                                字典在使用成员运算符的时候针对的是key

                ④完整的for循环语法

                        for 变量 in 集合:

                                代码

                        else:

                             没有通过break退出循环,循环结束后会执行的代码(执行完for里面的语句后)

                        应用场景:查找容器中是否有对应元素,若没有则可以得到一个统一的提示(else后的代码)

                                ex:查找有无姓名为ljh的学生

stu = [{"name":"ljh"},{"name":"cxy"},{"name":"szh"}]

for i in stu:
    if i["name"] == "ljh":
        print(i)
        break
else:
    print("没找到名为ljh的学生")

      

⭐return的作用 

        return可以返回一个函数的执行结果,下方的后续代码不会被执行,如果说return后面没有任何内容,那么就直接返回到调用函数的位置

        Linux上的shebang符号(#!)
        能够直接运行(./),前提是文件有可执行权限,通过#!+解释器完整路径


十一、变量进阶


        ①变量中记录数据的地址,叫做引用,可以通过id()来查看数据的地址
        ②调用函数时,传递到函数里面的是实参保存数据的引用,而不是实参保存的数据
        ③函数返回值的时候,返回的是数据的引用,而不是数据本身

        可变类型与不可变类型
                不可变类型:
                   数字
                   字符串
                   元组
                可变类型:
                   列表
                   字典
        对列表/字典中的值使用方法进行修改,列表/字典的内存地址不会发生变化
        字典中的key只能使用不可变类型的数据:

        hash是一种算法,接受一个不可变类型的数据作为参数,返回结果是一个整数,作用就是提取数据的特征码-----相同的内容得到相同的结果,不同的内容得到不同的结果(类似于指纹),在建立字典时,pytho会对字典的key进行hash操作,以确定key是唯一值,因此,字典中的key必须是不可变类型的参数

       局部变量和全局变量

                局部变量:

                        临时保存函数内部需要使用的数据。在调用函数时被创建,函数执行结束后被系统回收

                全局变量:

                        在函数内部不允许修改全局变量的引用,即不能在函数中使用赋值语句直接对全局变量进行修改;全局变量一定要定义在调用函数之前,尽量直接定义在函数的上方

                       而如果需要在函数内部修改全部变量的值,可以使用global关键字

                        ex:

number = 10

def count():
    global number
    number = 99
    print(number)

count()
print(number)


输出结果:
99
99

        十二、返回值进阶

                需求:一个函数需要返回多个结果,可以将元组作为返回值(将元组作为返回值时,它的小括号可以省略),得到的返回值中的多个元素可以使用索引([ ])将对应数据提取出来,或者使用多个变量依次接收(变量个数应该与元组中的元素个数保持一致)-------这种方法也可以用于变量之间的值的交换:    a,b=b,a         将a,b的值进行交换,等号右边是个元组

                ex:(rec1,rec2)

import math
tmp = int(input("请输入一个整数:"))

def deal_num():
    return math.pow(tmp,2),tmp+1

rec1,rec2 = deal_num()
print("%d的平方是:%d,%d+1=%d"%(tmp,rec1,tmp,rec2))

输出结果:
请输入一个整数:10
10的平方是:100,10+1=11

十三、函数的参数

        1、如果传入的参数是个可变类型(列表、字典)的数据,在函数中对该数据使用了方法改变了其中的元素,会影响到该变量的具体值(对于+=符号,这个符号对列表来说就相当于.extend()方法,因此对列表使用+=符号也会影响到具体值  ,但对于不可变类型的变量是不会影响的(因为+=就相当于num =num+...,而这个是赋值语句),而直接在函数中使用list = list+ anlist是不会印象到具体值的,因为这也是赋值语句

        2、 缺省参数:(就是c里面的默认参数)

                没有实参传进来就使用默认值,有就传参(直接=);所有带有默认值的缺省参数都要保存在参数列表的末尾

        3、多值参数:

                有事需要一个函数能够处理的参数个数是不确定的,就可以用多值参数

                1、参数名前加一个*可以接受元组     eg:*args,变量名为args

                2、参数名前加两个*可以接受字典     eg:**kwargs(字典赋值要用=号),变量名为kwargs

                3、拆包:当调用含有多值参数的函数时,若希望将一个元组变量直接传递给args,将一个字典变量直接传递给kwargs,就可以在元组变量前加一个*,在字典变量前加两个*

num_tuple = (1,2,3,4)
name_dict = {"name":"ljh","age":18}

def show_num(*args,**kwargs):
    print(args)
    print(kwargs)

show_num(*num_tuple,**name_dict)

                ex:

              

输出结果:

1
()
{}
1
(2, 3, 4)
{}
1
(2, 3, 4)
{'name': 'ljh', 'age': 18}

十四、函数的递归

        定义:一个函数内部调用自己
        特点:

        1.函数内部代码相同,只是针对参数不同,处理的结果不同
        2.当参数满足一个条件时,函数不再执行(递归出口)
                理解:先假定该函数能够实现n之前的功能,直接用一个变量来接受已经假定的功能和本数 

                ex:

十五、面向对象

        类只有一个,对象可以有很多个,对象的属性和方法可以不同,可以通过dir()查看对象的属性和方法
        _方法名_都是Python提供的内置方法/属性
        ⭐定义 只包含方法的类:
                class 类名:
                      def 方法(self,参数):------第一个参数必须是self
                        pass

        创建对应对象:对象名=类名()

        对于给某一个对象临时增加属性,可以直接tmp.attribute = ...,但是这种方法不推荐,因为非常不安全(封装性堪忧)

        self参数:就是调用方法的对象本身;

        ⭐初始化方法:

                为对象的属性设置初始值------初始化方法(__init__)

                ex:

                     

             __del__方法:对象从内存中销毁时自动调用(类似于析构函数)

             __str__方法:使用print函数输出对象时,输出自己指定的内容(通过返回字符串来实现)

                ex:def __str__(self):        return "这是一个字符串"                print(ljh)---ljh是个对象

                

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值