• python_02


    一、随堂笔记:

    1.数据类型剩余的内置方法

    2.字符编码

    3.文件处理

    4.函数基础

    
    
    list1=["zhozho",18,"male",3.0,9,"广州","zhozho",["tank","ko"]]
    '''
    insert()插入
    list1=["zhozho",18,"male",3.0,9,"广州","zhozho",["tank","ko"]]
    list1.insert(3,"dudu")
    print(list1)

    pop()取出
    remove()移除
    count()查看值的个数
    print(list1.count("zhozho"))
    index()查看值的索引
    print(list1.index("广州"),"广州")
    clear()清空列表的值
    copy()拷贝
    #copy()与=的区别
    '''
    "="号是直接把相应的内存赋给变量,故改变内存中值的时候,变量的值跟者改变
    copy()是将之前内存地址拷贝到另一个内存地址之中,前一个地址值改变时,copy()变量值不变
    称之为浅拷贝
    浅拷贝:list1的列表中的外层值改变值对其不影响,但其中
    的可变类型改变时,会随之改变
    list2=list1.copy();
    list3=list1
    print(list2)
    print(list3)
    list1.append("增加")
    print(list2)
    print(list3)

    编译:

    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko'], '增加']

    '''深拷贝
    把list1中的所有值完全拷贝到另一个地址,list1中改变任何值都不改变
    '''
    from copy import deepcopy
    list4=deepcopy(list1)
    list1[8].append("ho")
    print(list1)
    print(list2)
    print(list3)
    print(list4)

    编译:

    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho'], '增加']
    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho']]
    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho'], '增加']
    ['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko'], '增加']
    extend()合并
    reverse()反转
    sort()排序

    '''
    字典:
    #按照key取存值
    dict1={"name":"alice","age":18,"sex":"","school":"安徽工程大学"}
    print(dict1["school"])
    >>>安徽工程大学
    #get()
    若key在字对应的字典中则取value值,不在则为none,不会报错
    若不存在的key值后面定义了value值,则会自动取自定义的value值
    print(dict1.get("school"))
    print(dict1.get("ji","ko"))
    print(dict1.get ("ji"))
    安徽工程大学
    ko
    None
    # 2.len()
    print(len(dict1))
    #3.成员运算,判断的是字典里的key
    #in ot in
    #4.删除 del
    # del dict1["name"]
    #5.pop()
    name=dict1.pop("name")
    print(name)
    print(dict1)
    alice
    {'age': 18, 'sex': '', 'school': '安徽工程大学'}
    字典是无序类型,不根据索引取值
    排序是无序的

    Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。

    如果字典已经为空,却调用了此方法,就报出KeyError异常。

    dict1.popitem()
    print(dict1)
    #6.keys value items(键值对)
    print(dict1.keys())
    print(dict1.values())
    print(dict1.items())
    dict_keys(['age', 'sex'])
    dict_values([18, ''])
    dict_items([('age', 18), ('sex', '')])
    #7.循环
    #循环字典中索引的key
    for key in dict1:
        print(key)
    #8 update()更新
    dict2={"work":"student"}
    dict1.update(dict2)
    print(dict1)
    {'age': 18, 'sex': '', 'work': 'student'}

    元组:#在小括号内,以逗号隔开,存放多个值

    #优先掌握,元组为不可变类型(列表为可变类型)
    tuple1=(1,2,3,4,5,6)
    print(tuple1)
    #按索引取值
    print(tuple1[1])
    #切片取值,步长
    print(tuple1[0:6])
    #成员运算
    #循环
    集合:
    #集合类型
    #在{}内以逗号隔开,可存放多个值,但集合客默认去重功能
    集合也是无序的
    set1={1,2,3,5,3,2,4,7}
    print(set1)
    {1, 2, 3, 4, 5, 7}

    {}:

    set2=set()
    set3={}#这里无法判断是元组还是字典
    print(set2,set3)
    set3["name"]="tank"
    print(type(set3))
    set2=set()
    set3={}#这里无法判断是元组还是字典
    print(set2,set3)
    set3["name"]="tank"
    print(type(set3))
    set() {}
    <class 'dict'>
    #文件处理的基本使用
    #open("文件的名字",mode="wt",encoding=“utf_8”)mode 为对文本操作的模式,encoding为指定的字符编码
    '''
    打开i文件会产生两种资源,一种是python解释器与python文件的资源,结束程序python会自动回收
     
    f=open(r'E:新建文件夹收纳python_projectday_02文件的名字.txt',mode='wt',encoding='utf-8')
    f.write("hello tank!!")
     f.close()

    读文件

     f=open(r'E:新建文件夹收纳python_projectday_02文件的名字.txt',mode='r',encoding='utf-8')
     res=f.read()
     print(res)
    文件的追加模式a打开一个文件用于追加。追加文件需要加上
    
    # 如果该文件已存在,文件指针将会放在文件的结尾。
    # 也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    f=open(r'E:新建文件夹收纳python_projectday_02文件.txt','a',encoding='utf-8')
     f.write('
    hello,join!')
     f.close()
    文件处理之上下文管理:with   as
    with会自带close功能
    会在文件处理完成后自动调用close()
    with open('E:新建文件夹收纳python_projectday_02文件.txt','w',encoding='utf-8') as f:
        f.write('huiihggfghh')

    图片和视频的处理

    获取网页图片的地址,这里为图片的URL,后缀为.jpg
    #content返回的是bytes,二级制型的数据。图片、视频等都是二进制的数据
    import requests
    res =requests.get('http://pic53.nipic.com/file/20141115/9448607_175255450000_2.jpg')

    写入图片

    with open('da.jpg','wb') as f:
        f.write(res.content)

    读图片

    with open('da.jpg','rb') as f:
        res=f.read()
        print(res)

    图片拷贝

    with open('da.jpg','rb') as f,open('ta.jpg','rb') as w:
        res=f.read()
        w.write(res)
    #读写视频操作与读写图片基本一致,视频后缀为.mp4

    函数相关

    1.什么是函数
    函数相当于工具,需要实现准备好,在需要时再使用
    2.如何使用函数
    函数必须先定义,后调用
    3.函数的语法:
    def cup(参数一,参数二):
    函数的声明
    函数体代码(逻辑代码)
    def:(全称defind)用来声明定义函数的关键字
    函数名:看其名,知其意
    ():存放的是接收外界的参数
    注释:用来说明函数的作用
    函数体代码:逻辑代码
    return:后面跟函数的返回值
    '''
    #注册功能函数
    def register():
        while True:
            user=input("请输入用户名:").strip()
            pwd=input("请输入密码").strip()
            re_pwd=input("请再次输入密码:").strip()
            if pwd==re_pwd:
                # user_info="用户名:%s,密码:%s"%(user,pwd)
                # user_info="用户名:{},密码:{}".format(user,pwd)三种方法使用户名与密码匹配
                user_info=f'用户名:{user},密码:{pwd}'
                with open("user.txt",'w',encoding='utf-8')as f:
                    f.write(user_info)
            else:
                print("两次密码不一样,请重新输入!")
            return
    #调用函数 函数名()
    register()
    '''
    函数在定义阶段发生的事情
    1.先打开python解释器
    2.加载python文件(.py文件)
    3.只会检测python语法,不会执行函数体代码
    '''

    二、作业
    ''
    1.让用户输入用户名与密码
    2.校验用户名是否存在
    3.用户名存在后检验密码是否正确,若正确打印”登陆成功“
    否则打印”用户名或密码错误“,并让用户重新输入
    4.用户密码输入错误超过三次则退出循环
    '''
    def login():
        count=0
        su=0
        while True:
            if count!=3:
    
                user=input("please input your username:").strip()
                password=input("please input your password:").strip()
                username=""
                psw=""
                with open(r'E:新建文件夹收纳python_projectday_02登录文件',mode='rt',encoding='utf-8') as f:
                    for line in f:
                        res=line.strip().split('
    ')[0].split(',')
                        for i in res:
                            str=i.split(':')
                            if user in str:
                                t1=1
                               # else:t1==0
                        if password in str and t1==1:
                            su=1
                            print(f'用户{user}登陆成功!')
    
                print(su)
                if su==1:
                    break
                else:
                    count+=1
                    print(f"用户名或密码输入错误!请继续输入,你还有{3-count}次机会!")
    
    
            else:
                print("登录已结束,请确定用户名或密码后再尝试!")
                break
    login()

    运行:

    please input your username:Alice
    please input your password:34
    用户名或密码输入错误!请继续输入,你还有2次机会!
    please input your username:Alice
    please input your password:123454
    用户Alice登陆成功!

    登录文件:

    user:Alice,password:123454
    user:sily,password:5678
    user:jion,password:8989
     
  • 相关阅读:
    POJ:1185-炮兵阵地(状压dp入门)
    LightOj:1422-Halloween Costumes
    HDU:4632-Palindrome subsequence
    POJ:2955-Brackets(经典:括号匹配)
    POJ:2342-Anniversary party(树形dp入门题目)
    HUD:2853-Assignment(KM算法+hash)
    HDU:2255-奔小康赚大钱(KM算法模板)
    POJ:3020-Antenna Placement(二分图的最小路径覆盖)
    POJ:3041-Asteroids(匈牙利算法模板)
    SVN
  • 原文地址:https://www.cnblogs.com/zhanglei97/p/11008672.html
Copyright © 2020-2023  润新知