代码改变世界

python第二课

2019-06-12 19:38  a_mf  阅读(225)  评论(0)    收藏  举报

数据类型的剩余内置方法

#insert(位置,数值)
list1 = ['tank',18,'male',3.0,9,'广东']
list1.insert(2,'oldboy')
print(list1)
#count()  查看个数
print(list1.count('tank'))

#index()查看索引
print(list1.index('广东'))

#clear()  清空
# list1.clear()
# print(list1)

#copy()  浅拷贝
list2=list1.copy()   #值得拷贝,地址不同
list3=list1      #地址赋值#list3完全全部拷贝,追踪整个过程 地址相同

list1.append('limengfan')
print(list2)
print(list3)

#深拷贝
from  copy import deepcopy     #浅拷贝:list1的列表中外层值改变对其不影响
                                 深拷贝:把list1中的所有值完全拷贝到一个新的地址中
 list4 = deepcopy(list1)
list1.appent('123')
print(list4)

#extend() 合并
list1 = [1,2,3,[4]]
list2 = [3,4,5]
list1.extend(list2)
list1.insert(4,'[2]')
list1[3].append(8)
print(list1)

#reverse()
list1.reverse()
print(list1)

#sort()  排序
list3 = [1,5,3,2,6]
list3.sort()  #升序  默认 reverse=False
print(list3)
list3.sort(reverse=True)  #降序
print(list3)

list1=[1,2,3]
list2=list1.copy()
list1.append(2)
print(list2)

from copy import deepcopy
list4 = deepcopy(list1)
list1.append('123')
print(list4)
#字典的内置方法(无序)
#1、按照key取存值

dict1 = {'name':'李梦凡','age':18,'sex':'girl','school':'ahpu'}

#根据key取值

print(dict1['school'])
#print(dict1['sal'])    #报错


print(dict1.get('school'))
print(dict1.get('sal'))    #不会报错

print(dict1.get('school','患难'))
print(dict1.get('sal','15000'))    #不会报错


#len
print(len(dict1))


#成员运算in和notin
print('name' in dict1)
print('school' in dict1)
print('sal' not in dict1)

#删除
#del dict1['name']
#print(dict1)


#pop()  key
#dict1.pop('name')

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

#随机取出字典中某一个值
dict1.popitem()
print(dict1)

#key,values,item
print(dict1.keys())   #所有kry
print(dict1.values())

#循环
for key in dict1:
    print(key)



#update()
print(dict1)
dict2={"work":"student"}
dict1.update(dict2)
print(dict1)


元祖类型(在小括号呢,以逗号隔开存放多个值)不可改变 列表可以改变
1、按索引取值
2、切片
3、长度
4、成员运算 in和not in
5、循环
tuple1=(1,2,3)
print(tuple1)

print(tuple1[2])

print(tuple1[0:3])
print(tuple1[0:3:2])#

print(len(tuple1))

print(1 in tuple1)
print(5 in tuple1)

for line in tuple1:
    print(line)

集合类型(无序)
一般用于去重(在大括号内{},以逗号隔开,以存放多个值,但集合会默认去重功能)
set1={1,2,3,4,2,1}
print(set1)
set1=set()
set2={}
print(set1)
print(set2)

set2['name']='tank' #此时为字典
print(type(set2))

文件处理

#文件读写基本使用
#open
#对文本进行操作
#open('文件的绝对路径(copy path)/文件的名字.txt',操作模式,指定字符编码)
#f:称之为   句柄
# r:避免转义符
#打开文件会产生两种资源:1、python解释器和python文件的资源,程序结束python会自动回收
#2、一种操作系统打开文件的资源,文件打开后,操作系统不会帮我们回收,我们需要自己手动回收
# f = open('文件的名字.txt', mode='wt', encoding='utf-8')   #在一个新的名为文件袋额名字的文件中写入,并且原有文件里面的内容不存在
# f.write('hello tank!')
# f.close()

#读文件

f = open(r'\C:\Users\李梦凡\PycharmProjects\untitled\02\文件的名字.txt','r',encoding='utf-8')  #默认rt
res = f.read()
print(res)

f.close()




#文件追加
f = open(r'\C:\Users\李梦凡\PycharmProjects\untitled\02\文件的名字.txt','a', encoding='utf-8'#默认at
f.write('hello,limengfan')  #在原有的文件中加入新的内容
f.close()


文件处理只上下文管理:with
with会自带close()功能,自动关闭
with open(r'li.txt',
          'w',encoding='utf-8') as f:
    f.write('life is short,u need python')
with open(r'li.txt',
          'r',encoding='utf-8') as f:
         res = f.read()
         print(res)

with open(r'li.txt',
          'r', encoding='utf-8') as f:
    res = f.read()
    print(res)
import requests
res = requests.get('网址')
print(res.content)#图片的二字流


#图片和视频操作
#写图片
with open('li.jpg','wb') as f:
    f.write(res.content)

#读图片

with open('li.jpg','rb') as f:
   res = f.read()
   print(res)
#拷贝
with open('li.jpg','rb') as f,open('meng,jpg','wb') as w:
    res=f.read()
    w.write(res)
#一行一行读文件(若文件的大小超出内存大小会导致内存溺出
#一行一行读,一行一行写,避免内存溺出 )
with open('li.jpg/视频', 'rb') as f, open('meng,jpg', 'wb') as w:
        f.read()
        for line in f:
            w.write(line)

函数

#1、什么是函数
#2、(如何使用函数)
#  先定义,后调用
#3、函数的语法
#def :定义

# def  函数名(参数1、参数2、.....):
#     """
      #注释
#     函数的声明
#     """
#     函数体代码(逻辑代码)
#       return 返回值
#
# def:(全程defind)  用来声明定义函数的关键字user
# 函数名:看其名知其意
# ():括号,存放的是接受外界的参数
# 注释:用来说明函数的作用
# 函数体代码:逻辑代码
# return:返回值




#注册功能

#函数的定义阶段发生的事情
# 1、先打开python解释器
# 2、加载该python文件
# 3、python解释器只会检测语法,但只会检测python语法,不会执行函数体代码


#定义
def register():
    while True:
        user = input('请输入用户名:').strip()
        pwd = input('请输入密码:').strip()
        re_pwd = input('请输入密码:').strip()


        #判断两次输入密码是否一致
        if pwd == re_pwd:
            #格式化字符飞

            # uer_info='用户名:%s,密码:%s'%(user,ped)
            # uer_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('两次密码不一致请重新输入!')

#调用函数  函数名() 即调用函数
#egister()

def foo():
    print('from foo!')
    bar()
    #print(
#调用阶段,会执行foo函数体代码
foo()
作业2
'''
1.让用户输入用户名与密码
2.校验用户名是否存在
3.用户名存在后检验密码是否正确,若正确打印“登陆成功”
 否则打印“用户名或密码错误”,并让用户重新输入
4.用户密码输入错误超过三次则退出循环。
'''

def login():
    i = 1
    while i <= 3:
        user = input('请输入用户名:').strip()
        pwd = input('请输入密码:').strip()
        with open('limengfan.txt', 'r', encoding='utf-8') as f:
            old_info = f.read().split(',')

        for index in range(len(old_info)):
            if old_info[index] == user:
                if old_info[index+1] == pwd:
                    print("登录成功")
                    i = 4
                break
            else:
                print("用户名或密码错误")
                i += 1
                break

login()
小结:在本次课堂上,我首次感觉到了python相比于其他语言的简洁,对于一些代码的简洁是其他的语言没有办法比的,感觉到了python的魅力,希望在接下来的学习上,更加能够学习
到其他语言没有办法比较的地方。