Day2,入坑第二天

作业:

 

代码如下:

待读取的文件存储的用户名和密码为:
rzf,123456
 
函数内容如下:
 
def register():

'''
用函数实现登录功能
:return:
'''
number=0

with open('user.txt','rt',encoding='utf-8') as f:
res = f.read()

username,password = res.split(':')
flag = True
while flag:

user = input('请输入用户名:').strip()

if username == user:
if number == 3:
break

while number<3:

pwd=input('请输入密码:').strip()
if password ==pwd:
print('登录成功')
flag=False
break

else:
print('用户名或密码错误,请重新输入!')
number+=1
else:
print('用户名不存在,请重新输入')

register()


 

学习内容:

1.Python3中,有6个标准的数据类型,他们又分为可变和不可变

'''
不可变数据(3个):

•Number(数字)
•String(字符串)
•Tuple(元组)
可变数据(3个):

•List(列表)
•Dictionary(字典)
•Set(集合)

'''

  

浅拷贝和深拷贝的区别

'''
浅拷贝
copy模块里面的copy方法实现

1、对于 不可 变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
2、对于 可 变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝

3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。(操作拷贝对象对原始对象的也是同理)

深拷贝
copy模块里面的deepcopy方法实现

1、浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝)
2、经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了

'''

 

字典的内置方法

'''
# 一 字典的内置方法(字典是无序的)
# # 1、按照key取/存值
dict1 = {'name': '张琦', 'age': 18, 'sex': 'male', 'school': '安徽工程大学'}

# 根据key取张琦的学校
# print(dict1['school'])
# print(dict1['sal'])

# get()
# 第一个参数是字典的key
# 第二个参数是默认值,若key存在则取key对应的值,否则取默认值
print(dict1.get('school', '华南理工大学'))
print(dict1.get('sal', '15000'))

# 2、len
print(len(dict1))  # 4

# 3、成员运算in和not in
print('name' in dict1)  # True
print('sal' in dict1)  # False
print('sal' not in dict1)  # True

# # 4、删除
# del dict1["name"]
# print(dict1)

# pop()
# 根据字典中的key取出对应的值赋值给变量name
# name = dict1.pop('name')
# print(dict1)
# print(name)

# 随机取出字典中的某个值
dict1.popitem()         # Python 字典 popitem() 方法返回并删除字典中的最后一对键和值。
                        # 如果字典已经为空,却调用了此方法,就报出 KeyError 异常。
print(dict1)

# 5、keys、values、items
print(dict1.keys())
print(dict1.values())
print(dict1.items())

# 6、循环
# 循环字典中所有的key
for key in dict1:
    print(key)

# 7、update()        # 更新
print(dict1)
dict2 = {"work": "student"}
# 把dict2加到dict1字典中
dict1.update(dict2)
print(dict1)

'''

  

元组类型

# 二 元组类型(在小括号内,以逗号隔开存放多个值)
# 注意: 元组与列表的区别,元组是不可变类型,列表是可变类型。

tuple1 = (1, 2, 3, 4, 5, 6)
print(tuple1)
# 优先掌握
# 1.按索引取值
print(tuple1[2])

# 2.切片(顾头不顾尾)
print(tuple1[0:6])  # (1, 2, 3, 4, 5, 6)

# 步长
print(tuple1[0:6:2])  # (1, 3, 5)

# 3.长度
print(len(tuple1))  # 6

# 4.成员运算 in 和 not in
print(1 in tuple1)  # True
print(1 not in tuple1)  # False

# 5.循环
for line in tuple1:
    print(line)

  

集合类型

 1 # 三 集合类型(一般用于去重)
 2 # 在{}以逗号隔开,可存放多个值,但集合会自带默认去重功能。
 3 set1 = {1, 2, 3, 4, 2, 1, 3, 4}
 4 print(set1)
 5 
 6 # 集合是无序的
 7 # 集合(set)是一个无序的不重复元素序列。
 8 #
 9 # 可以使用大括号 { } 或者 set() 函数创建集合,
10 # 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
11 set1 = set()
12 set2 = {}
13 print(set1)
14 print(set2)
15 
16 set2['name'] = 'tank'
17 print(type(set2))

 

 文件操作

 文件读写基本使用

# 对文本进行操作
# open(参数1: 文件的绝对路径/文件的名字,参数2:操作模式, 参数3: 指定字符编码)
# f: 称之为 句柄
# r: 避免转义符

# 打开文件会产生两种资源,一种是python解释器与python文件的资源,程序结束python会自动回收。
# 另一种是操作系统打开文件的资源,文件打开后,操作系统并不会帮我们自动收回,所以需要手动回收资源。

# 写文件
f = open(
    r'/python相关/python_files/安徽工程/files/文件的名字.txt',
    mode="wt",
    encoding="utf-8")

f.write('hello 安徽工程大学')

f.close()

# 读文件
f = open(
    r'/python相关/python_files/安徽工程/files/文件的名字.txt',
    'r',  # 默认rt
    encoding='utf-8')

res = f.read()
print(res)
f.close()


# 文件追加模式 a
f = open(r'/python相关/python_files/安徽工程/files/文件的名字.txt',
         'a',  # 默认at模式
         encoding='utf-8'
         )

f.write('\nhello jason')

f.close()

 

文件处理及上下文管理

# 文件处理之上下文管理: with
# with会自带close()功能,
# 会在文件处理完以后自动调用close()关闭文件

# 写文件
with open(r'file1.txt', 'w', encoding='utf-8') as f:
    f.write('life is short, u need python!')


# 读文件
with open(r'file1.txt', 'r', encoding='utf-8') as f:
    res = f.read()
    print(res)


# 文件追加
with open(r'file1.txt', 'a', encoding='utf-8') as f:
    f.write('\n AAA')

 

图片与视频读写操作

# import requests  # pip3 install requests
# res = requests.get(
#     '某网站.jpg')
# print(res.content)
#
# # 写入图片
# with open('大帅比.jpg', 'wb') as f:
#     f.write(res.content)
#
#
# # 读取图片
# with open('大帅比.jpg', 'rb') as f:
#     res = f.read()
#     print(res)
#
#
# # 文件拷贝操作
# with open('大帅比.jpg', 'rb') as f, open('小哥哥.jpg', 'wb') as w:
#     res = f.read()
#     w.write(res)
#
#

# 读写视频
# with open('tianyan_sys.mp4', 'rb') as f, open('tianyan_sys_copy.mp4', 'wb') as w:
#     res = f.read()
#     print(res)
#     w.write(res)


# 一行一行读文件
# with open('tianyan_sys.mp4', 'rb') as f, open('tianyan_sys_copy.mp4', 'wb') as w:

    # 一次打开文件所有内容,若文件的大小超出内存的大小会导致内存溢出
    # f.read()

    # 一行一行读取文件内容,一行一行写入文件中,避免内存溢出
    # for line in f:
    #     w.write(line)

    # res = f.read()
    # print(res)
    # w.write(res)

  

函数基础

'''
1、什么是函数?
函数相当于工具,需要事先准备好,在需要用时再使用。

2、如何使用函数?
函数必须先定义、后调用。

'''

# 3、函数的语法:

# def 函数名(参数1,参数2...):
#     """
#     注释
#     函数的说明
#     水杯,用来盛水与喝水
#     """
#     函数体代码(逻辑代码)
#     return 返回值
'''
def: (全称defind) 用来声明定义函数的关键字。
函数名: 看其名、知其意。
(): 括号,存放的是接收外界的参数。
注释: 用来说明函数的作用。
函数体代码: 逻辑代码。
return: 后面跟函数的返回值。
'''

# 注册功能
# 先定义
def register():
    '''
    此函数注册功能
    :return:
    '''
    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)

            # 字符串前写一个f相当于调用format方法
            user_info = f'用户名:{user},密码:{pwd}'

            # 把用户信息写入文件中
            with open(f'{user}.txt', 'w', encoding='utf-8') as f:
                f.write(user_info)

            break

        else:
            print('两次密码不一致,请重新输入!')


# 调用函数: 函数名 + 括号 即调用函数.
# register()



'''
函数在定义阶段发生的事情:
1.先打开python解释器。
2.加载05 函数基础.py 文件。
3.python解释器会帮我们检测py文件中语法,
但是只会检测python语法,不会执行函数体代码。

'''

def foo():

    print('from foo!')
    bar()
    # print(

# 调用阶段,会执行foo函数体代码。
foo()


# 作业一 课堂代码,敲一遍

# 作业二 整理笔记,并写博客。

# 作业三 用函数实现登录功能
'''
1、让用户输入用户名与密码
2、校验用户名是否存在
3、用户名存在后检验密码是否正确,若正确打印"登录成功",
否则打印"用户名或密码错误",并让用户重新输入。
4、用户密码输入错误超过三次则退出循环。
'''

  

总结:

  也不知道到底会没会,反正是用自己敲了一遍,好多不会的知识点还是找的度娘,估计过段时间就忘了。心里已经有了怎么学python的想法,我打算用本科书加上菜鸟教程里的python教程看之后写代码。但又要考四六级了,感觉又要GG,我不禁在想自己,为什么堕落成这样了。准确的说从高二那年我就彻底堕落了,现在的我比高中更堕落,那么将来的我比现在更堕落?这是个很严肃的问题,答案我竟然没有底气的说不!想想初中的我虽说不爱学习,但我也在学习,也不为什么,就是没什么好玩的。高中考了个全国百强中学有点飘飘然了,准确的说当时一中是我高中的目标,我努力的实现了它,可是我高中好像没有了目标,也许是当时爱玩的自己给pass了。如果硬要说高中的目标的话,记得高一入学时班主任让我们每个人选一个目标学校上交给他,我当时好像写的中科大,毕竟高中比较好,有对初中的自己自信。现在说来竟有点可笑,唉,今天还被人嘲讽了,说我学习菜,虽说挺不愿意承认,可是又无法反驳,只回了句毕业看谁菜。可是现在的自己应该是个小白,对于大学所学的课程。其实我感觉那个人很垃圾,坦白说我认为这个学校很多人的垃圾,我都忘了自己是垃圾中的一员了。不过我 还是要说那个人很垃圾,包括很多这个学校里每学期没怎么学但也上课听了的,最终期末考试考7,80分的人,这些人有一个特点,自己不强,看到牛的人时,一副舔狗的嘴脸,看到不认真学的人即挂科一族,很是鄙视,一副高高在上的视角。其实这种人很可怕,因为再差的学校都有牛逼的人,那些人时真正的大牛;还有的时那种没有认真学又没完全放弃的人,他们努力起来没有后顾之忧,因为自己没学过,这些人之中会有一部分人变得很厉害;但那种中等的又当舔狗又当人上人的人最悲哀,因为他们不会用10分的努力,他们只会学=努力7分就当舔狗和人上人去了,对大牛“掏心窝”的说我很努力了,可是没办法我天分不够,或者我选错了方向比如选错了专业等等,他们又会对那些可以称之迷途知返的人说,你们别做梦了,当初不努力,现在装什么,没机会了等等负面能量。更有甚者甚至会用阴阳怪气的语气跟你说:哇,你现在这么努力,我都有点震惊,你这过不了多久就成大牛了,我得向你学习,你这么努力今年一定班级前三,获得奖学金,考上985。对于这种人,我很想打他,但又不想因为这件“小事”打他,总要找个契机打他,你们懂的!但其实最好的方法还是不予理睬,郭大爷不是说了吗,和狗一起抢行,你得让狗!其实这种人你不理他,他反而一肚子气,嘻嘻。当然在努力的过程中要向好学生靠拢,但不要太刻意,随缘即好,毕竟你足够优秀,你身边的人自然优秀,道理我想大家都懂!想到我的高中同学现在和我差距越来越大,感觉都要差了一个阶级了,这个是最让我受不了的!(当然是我比他们差太远)

  好了,一通抱怨之后贼爽,每天给自己打个气吧!加油fighting!!!

  要努力啊,赶上高中同学啊,不能掉队啊,考研加油啊!尽量不在宿舍,其简直是青春的坟墓啊!

  PS:SB还是要打一顿比较爽!(能打就打,抓住机会)

  

posted @ 2019-06-12 23:26  枫叶追梦  阅读(292)  评论(0编辑  收藏  举报