python学习第二周知识

总结和复习

函数

def f(*args):
    total = 0
    for val in args:
        total += val
    return total
# 列表当做参数传入,要把列表中的每个值传入用 *mylist 在列表名上加上*号
    mylist = [1, 3, 4, 10, 20]
    print(f(*mylist)

作用域 - LEGB (局部,嵌套,全局,内置)变量

a = 100
def f():
    gloable a
    a = 200
    b = 'hello'
    def g():
        nonlocal b
        b = 'good'

递归

  1. 什么叫做递归 ----函数直接或间接的调用自己
  2. 怎样实现递归---1.收敛条件:让递归在有限的次数内完成或者回溯,如果递归无法在有限的次数内收敛就可能导致ReoursioneError 2.递归公式 3.例题 求n的阶层的递归函数
    def f(n):
     if n==0 or n ==1:
         return 1
     else:
         return n * f(n)
    

例题1

求两个数的最大公约数

def gcd(x,y):
    if x < y:
        temp = x
        x = y
        y = temp
    while True:
            if x % y == 0:
                return y
            else:
                temp = x % y
                x =y
                y = temp
if __name__ == '__main__':
    gcd(25,25)

例题2

求若干数的和 自己定义的参数,随便自己定义多少个 返回所有的参数和

def add(*args):
    total = 0
    for val in range args:
        total += val
    return total

模块

  1. 引入模块代码 import 模块名 as 重命名模块

字符串

  1. ---例子 var = "hello word"

  2. 访问字符串的值 —— 变量名【下标】

  3. 更新字符串 ----变量名【下标】= '新的字符串'

  4. 字符串可以加法运算

  5. 字符串的函数和方法---见菜鸟教程

例题 生成四位数的随机验证码

import random
def main():
    str1='123456789abcdefghijlmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST'
    str2 =''
    for index in range(4):
        x = random.randrange(len(str1))
        str2 += str1[x]
    return str2

列表

# 创建列表 
#1
mylist = [1,2,3,4]
#2
mylist = list(range(10))
#3创建列表生成式
mylist = [x ** 2 for x in range(1,10)]
#4 列表生成器
mylist = (x ** 2 for x in range(1, 10))

# 列表的增加元素
#1.append()该方法没有返回值,但是会修改原来的列表(在列表末尾增加元素)

mylist.append(10)
#2.insert()该方法没有返回值,但是会在列表指定位置插入对象(在列表的指定位置增加元素)

mylist.insert(1, 7)
#3.extend()该方法没有返回值,但会在已经存在的列表中添加新的内容(在列表的末尾添加另外一个列表的值)
mylist.extend(list)

# 列表删除元素
#1.remove()该方法没有返回值(删除你已经知道的元素,列表中有重复的元素,只能删除第一个匹配的元素)
mylist.remove(2)
#2.clear()该方法没有返回值(清空列表)

mylist.clear()
#3.del (删除列表中知道下标的元素)

del mylist[2]
#pop() 该方法返回从列表中移除的元素(默认是删除最后一个元素,带参数是删除指定位置元素)

mylist.pop(1)

# 列表排序
#(python 内置的排序方法默认都是排的升序(从小到大)) 如果希望降序可以通过用reverse参数来指定)
#python 函数几乎都是没有副作用的(调用函数以后不会影响传入的参数)
#1.sorted 函数 该函数返回一个排完序的新列表,不会改变原来的列表(产生一个排完序的新列表)

f2 = sorted(mylist,reverse= True)

#2.sort 方法 该方法没有返回值,但是会改变列表(对列表排序)

mylist.sort()







## 内存管理

内存分为:

 ---变量 --地址---对象的引用

 --真正的对象
id()  获取地址
is

静态区

元组

  1. 元组的定义---tuple = ('apple','hello', 33, 59) 注意: 元组只包含一个元素时,需要在元素后面添加逗号,不然会被当做运算符计算

  2. 访问元组 --- 元组名【下标】

  3. 遍历元组

    tuple = ('hello','lisi')
    for index in range(len(tuple)):
    print(tuple[index])
    for value in tuple:
     print(value)
    
  4. 元组和列表的不同: 1.元组和列表的不同是元组是不能修改的,2. 元组在创建时间和占用空间上都优于列表

  5. 删除元组 --- del tuple

  6. 元组的常用的内置函数和方法 ---- 菜鸟教程

集合

  1. 特点: 集合不允许有重复的元素,而且可以进行交集,并集,差集运算,集合内的元素排列是无序的,不能用下标运算

  2. 创建集合 --- set1 = {1,2,3,4} set2 = {range(1,10)}

  3. 添加元素 --- set1.add(6) set1.update([11,12]) 把列表里的元素追加到集合末尾

  4. 删除元素 --- set1.discard(4)(把列表里的4元素删除了)

    set1.remove(4)(把列表里的4 元素删除了,没有返回值)

    set1.pop()(删除列表里的一个元素,没有参数)

  5. 遍历集合 ---

    set1 = {1,2,3,5}
    for value in set1:
     print(value)
    
  6. 元组和集合的转换 list1 = list(set1)

  7. 集合的函数和方法

字典

  1. 字典的定义--- dict = {'张三': 78, '李四': 80, '王五': 90}

  2. 访问字典 --- 通过键获取字典里的对应的值
    print(dict['张三'])

  3. 对字典进行遍历(遍历的实质是键再通过键取对应的值)

    for elem in dict:
     print('%s\t --->\t%d' %(elem,dict[elem]))
    
  4. 对字典的元素进行更新或添加元素 --- dict['张三']= 60 (更新) --dict['李白']= 70(添加元素) --- dict.update(王麻子= 79,李白=100)

  5. 访问字典里的元素 --- dict['张三'] dict.get('张三')

  6. 删除字典中的元素 --- dict.popitem() 删除任意的键值对,并作为两个元素返回 dict.pop('张三',78)

面向对象的编程

第一步:

1.定义类:类的首字母要大写

2.什么是类:类是对象的蓝图和模板 有了类就可以创建对象

3.定义类的两件事: 数据抽象 --- 抽取对象共同的静态特征(找名词)- 属性
行为抽象 -- 抽取对象共同的动态特征(找动词)- 方法

4.定义类的关键字 -- class -- 类名(每个单词的首字母大写)

class Student(object):
    #这个叫做构造方法(构造器\构造子)
    #调用该方法的时候不是使用方法的名字,而是使用类的名字
    def __init__(self, _name, _age):
        self.name = _name
        self.age = age

    # 对象的第一个参数都是统一写成self
    # self代表的是类的实例,代表当前对象的地址
    def study(self,course ):
            print('%s正在学习%s' %(self._name,course))

第二步

def main():
    # 第二步就是对象的实例化,调用构造方法来创建学生对象, 实际上是调用了__init__方法
    stu1 = Student('张三', 23)

第三步

def main():
    # 给对象发消息,让对象完成某个工作
    stu1.study('数学')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值