python学习-day2 python数据类型

大兔子大兔子 提交于 2019-12-05 06:21:55

 

day1知识回顾:

postman自动化

1.参数文件,username和password  value 中做成参数{username}  {password}

2.Tests中检查点

3.Runner中设置循环次数,选择参数文件

 

 

day1作业

import datetime

today = datetime.datetime.today()

user = 'cheery'

for i in range(3):

username = input('username:').strip()

password = input('password:').strip()

if username =='' or password =='':

print('账号/密码不能为空!')

elif username.lower()==user.lower() and password='123456':

print('登陆成功,欢迎%s登陆,今天的日期是%s'%(username,today))

else:

print('账号/密码错误!')

else:

print('登陆次数过多,请稍后再试!')

 

#写一个随机产生138开头的手机号的程序

#1.输入一个数量,产生XX条手机号

prefix='138'138+randint(100000000,99999999)

#2.产生的这些手机号不能重复

 

import random

number = int(input('请输入:'))

all_phone_number = [] #存放所有手机号

for i in range(number):

prefix = '138'

end = str(random.randint(10000000,99999999))

phone_number = prefix + end 

if all_phone_number.count(phone_number)==0: #判断电话号码是否存在

all_phone_number.append(phone_number)

    print(phone_number)

print(all_phone_number)

 

 

 

**********************list操作****************************

#列表   数组 list

l =['cheery','lily','cc']   #一维数组

l3 = [1,2,3,4,['abc','cc','234']] #二维数组

 

l[4][2] #取元素  234

 

#索引  下标   角标  list取元素是根据编号取值的

print(l[0])   #cheery

 

#增 append

l.append('李巧利') #在list 末尾增加元素

l.insert(0,'周杰伦') #在指定位置增加元素

l.insert(7,'abc‘) #如果你指定的下标不存在,默认加在最后

 

#修改

l[2]='财哥'

 

#删除   3种方法

l.pop(3) #指定下标删除

l.remove('cc') #指定元素删除

del l[0]  #指定下标删除

 

print(l.count('cc'))   #cc在list中出现了多少次

index = l.index('cc') #找某个元素的下标 

 

l.reverse() #反转list  元素排序

list2 =[4,2,45,43]

list2.sort() #排序  默认升序

list2.sort(reverse=True) #降序  传参数  reserve=True

 

list2.clear() #清空list

print(l +list2 ) #直接相加就是把两个list合并成一个list

 

l.extend(l2) # 把l2的元素加到l中

 

list循环

students =['zouzou','gaoti','liqiaoli']

for i in students:

print(i)   #直接循环取元素

 

if 'zouzou' in students: #判断存在  in

print('存在')

elif 'zou' not in students: #判断不存在  not in

print('不存在')

 

**********************字典*********************************

students =['zouzou','gaoti','liqiaoli']

stu2=[['abc','未知',24,'北京',123343333],['abc2','未知',24,'北京',123343333],['abc3','未知',24,'北京',123343333]]

 

#字典dictionary    key-value  速度非常快

d = {'name':'zouzou',

 'sex':'未知',

 'addr':'北京',

 '手机号':110}

 

#字典  增 删  改  查

#取值 查

print(d['name']) #取不存在的key,报错

print(d.get('手机号'))  #get方式取不到元素,返回none

print(d.get('手机号',0)) #get后面加了参数(默认值),就会返回默认值0

 

#增加Key

d['money'] = 500  #d['sex']=500 直接修改值

d.setdefault('car','bmw','sex') #增加一个已经存在的key,那就不管

print(d)

 

#修改

d['sex'] = '女'

 

#删除

d.pop('sex') #删除指定的key,会返回删除的值  result= d.pop('sex')

del d['sex'] #删除指定的key

print(d)

 

d.clear() #清空字典

print(d.keys()) #字典中所有的key 

print(d.values()) #字典所有的value

 

字典循环  

d = {

'id':315,

'name':矿泉水,

'sex':女,

'age':23,

'addr':上海,

'gold':100

}

 

for k in d:  #直接循环字典,每次去的是字典里面的key

value = d.get(k) #循环的时候同时取到key 和value

print(k,value)

 

#print(d.items()) 

或者:

for key,value in d.items(): #第二种方式  效率低(先将字典转成list,再循环遍历)

print(key,value)

 

#if 'id' in d: #如果字典用in来判断的话,它判断的是key是否存在

 

举例:注册

#1.输入账号、密码、确认密码来注册

2.如果账号不存在的话,可以注册

3.两次密码输入一致,可以注册

 

 

stus = {'cheery':'123456','cc':'456789'}

 

for i in range(3):

username = input('username:').strip()

pwd = input('pwd:').strip()

cpwd = input('cpwd:').strip()

if username =='' or pwd =='':

print('不能为空')

elif username in stu2:

print('用户名已注册')

elif pwd!=cpwd:

print('两次输入的密码不一致')

else:

stu.setdefault(username,pwd) #字典插入新元素,也可以使用  #d[username]=pwd

print('注册成功')

print(stu)

 

 

从字典取账号密码写登录

import datetime

today = datetime.datetime.today()

stu = {'cheery':'123456','cc':'456789'}

user= input('username:').strip()

pwd= input('password:').strip()

for i in range(3):

if user == '' or pwd =='':

print('账号/密码不能为空')

elif user.lower() in stu and pwd == stu.get('user'):

print('登录成功,欢迎%s登录,今天的日期是%d'%(user,today))

break

else:

print('用户名或密码不正确')

 

 

**********************切片*********************************

切片:list取值的一种方式,范围取值  

l = [1,2,3,4,5,6,7]    #单个取值,通过下标l[0]

print(l[0:3])  #0,1,2,切片:顾头不顾尾,包含前面的值,不包含后面的元素

print(l[:3]) #冒号前面数字可不写,代表从最前面开始取值;冒号后边不写,代表取到结束

s = 'abc1234'

print(s[-1]) # 取到了4,字符串下标访问

print(s[2:5]) #c12

l2 = l[:] #代表取全部元素

l3 = l[0:7:2] #2代表步长,隔几个元素取一个

l4 = [::-1]  #步长为负数,从后面往前面取值,[7,6,5,4,3,2,1]

l5 = [-1:-5:-1] #[7,6,5,4] #步长为负数,前面下标也要为负数

print(l3) #[1,3,5,7]

 

**********************元组*********************************

元组:也是一种list,元组的值创建后不能更改

l=[1,2,3,4]  #list

l2 = (1,2,3,4) #小括号,元组里边的值不允许修改,如append

s = ('abc',) #元组定义只有一个元素时,需要加上一个逗号,否则无法识别

print(type(s3)) #tuple 不加逗号,就是str

 

db_info = ['192.168.1.1',3306,'root','123456','db1']

 

#可变数据类型:list,dict

#不可变数据类型:元组tuple,str,float,int

 

#不要循环删除list,会导致下标错乱

l = [1,1,2,3,4,5,6]  

l2 = [1,1,2,3,4,5,6]   #等同于:l2 = copy.deepcopy(l) 深拷贝

下标 0 1 2 3 4 5 6

for i in l2:

if i%2 !=0: #判断是奇数,就删除

l.remove(i)

print(l)  #[1,2,4,6]  结果多了个1,删除list元素后下标错乱,定义两个list,循环和删除不从同一个list中

 

l = [1,1,2,3,4,5,6]

#l2 = l 存的内存地址是相同的 ,浅拷贝

print('l的内存地址:'id(l))

print('l2的内存地址:'id(l2))

l.append('cheery')

l2.remove(1)

print('l',l)

print('l2',l2)

 

#浅拷贝   深拷贝  

#浅拷贝内存地址不变,深拷贝的话,内存地址会改变

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!