一、字符串常用方法



#字符串常用方法
a = '   字符串    \n\n\n\n\n'#\n换行符
#c = a.strip()#默认去掉字符串两边的空格和换行符
c = a.lstrip()#默认去掉字符串左边的空格和换行符
#c = a.rstrip()#默认去掉字符串右边的空格
print('c...',c)
print('a...',a)

words = 'today is a wonderfulday'
print(words.strip('today'))#如果strip方法指定一个值的话,那么会去掉这两个值
print(words.count('a'))#统计字符串出现的次数
print(words.index('is'))#找下标
print(words.index('z'))#找下标如果元素不找不到的话,会报错
print(words.find('z'))#找下标,如果元素找不到的话,返回-1
print(words.replace('day','DAY'))#字符串替换
print(words.isdigit())#判断字符串是否为纯数字
print(words.islower())#判断字符串是否为小写字母
print(words.isupper())#判断字符串是否为大写字母
print(words.startswith('http'))#判断是否以某个字符串开头
print(words.endswith('.jpg'))#判断是否以某个字符串结尾
print(words.upper())#将字符串变成大写
print(words.lower())#将字符串变成小写

username = 'abcdeff45%&'
print(username.isalpha())#判断字符串是否全为字母
print(username.isalnum())#字符串中只要包含符号就返回False,其他值返回True

字符串比较重要的两个方法
name_list = names.split(',')#根据逗号进行分割字符串,读取文件时要取文件某一行中的某一个值时这个方法特别好用
','.join('abc')#连接字符串



二、list循环



lists = ['huahua','caocao','niaoniao','shushu',[8,6,3,1]]
words = 'marry,lily,jack'
age = 18#该种类型不可循环
#for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素
for name in words:#lists里面有多少元素就循环多少次
    name +='100'#name表示lists里面的每一个元素
    print(name)

for name in lists:
    if type(name)==list:#判断元素类型
        for i in name:
            print(i)
        print(name)

list练习



stus=[
    ['小明','未交'],
    ['小白','已交'], ['小紫','已交'],
    ['小红','未交'], ['小绿','未交'],
    ['小黄','未交'], ['小黑','已交']
]
#统计所有已交作业的同学和未交作业的同学
pass_list = []#存所有已交作业的同学
fail_list = []#存所有未交作业的同学
for stu in stus:
    status = stus[1]#存是否交作业的状态
    name = stus[0]#存学生姓名
    if status == '未交':
        fail_list.append(name)
    else:
        pass_list.append(name)
    print('未交作业的同学是%s,总共有%s个人'%(fail_list,len(fail_list)))
    print('已交作业的同学是%s,总共有%s个人'%(pass_list,len(pass_list)))




#校验用户名是否合法
#输入账号 #input
#如果账号存在的话,提示已经被注册,如果不存在,就让他注册;all_users
#不能为空  #strip()
#用户名长度6-12之间 #len
#最多输入三次 #循环
all_users = ['张三三','lilylily','王五五']
for i in range(3):
    username = input('请输入账号:').strip()
    if len(username)>5 and len(username)<13:
        if all_users.count(username) > 0:
            print('已经被注册啦,换个名字吧!')
        else:
            print('名字不错,赶紧注册吧')
            break
    else:
        print('用户名长度不合法!长度在6-12之间')
else:
    print('失败次数过多')



三、元组



#元组也是一个list,他和list的区别是元组的元素无法修改
tuple1 = (2,3,4,5,6,4,7)
print(type(tuple1))
print(tuple1[:7])
print(tuple1[:5:-1])
for i in range(6):
    print(tuple1[i])
for i in tuple1:
    print(i)

lists = (#不能修改
    '192.168.1.108',
    'root',
    '123456',
    '3306',
    'hehe'
)

word = (1)
word1 = ('abcd')
print(type(word))#int型
print(type(word1))#str型

word2 = (1,)
word3 = ('abcd',)
print(type(word2))#int型
print(type(word3))#str型



四、字典常用方法



#字典是key-value的形式
#string list dict
#1、取数据方便
#2、速度快
names = ['张san','物无数','王五','chenkai','lily']
age = [18,34,23,23,45]
sex = ['男','女','男','女','女']

infos = {'name':'张san','sex':'男','addr':'地球','age':18}
#1、查询
print(infos.get('name'))
print(infos.get('score'))#key不存在返回None
print(infos.get('score',56))#如果取不到这个key的话,默认是56
print(infos['sex'])
#print(infos['score'])#如果key不存在会报错

#2、增加
infos['phone'] = 15245125623#增加一个key
infos.setdefault('婚否','已婚')#key不存在两种方法无区别
infos.setdefault('name','张玲玲')#如果key存在的话,无法修改key的值
infos['name'] = '王珊珊'#如果key存在的话会修改原来key的值
print(infos)#字典是无序的

#3、删除
# infos.pop('name')#指定key来删除
# infos.popitem()#随机删除一个key
# del infos['phone']#指定key来删除
# infos.clear()#清空字典
# print(infos)
#方法
print(infos.values())#获取到字典所有的value
print(infos.keys())#获取到字典所有的key
print(infos.items())#获取到字典所有的key-value

#用in来判断值在不在字典中,判断的key是否在字典中,不判断value

#字典查询、增加举例
people = {
    '张三':{
        'age':19,
        'money':20000,
        'clothes':'100套',
        'hzp':'n多',
        'shoes':['nike','addis']
     },
     '王五':{
     'jinku':'2000w',
     'house':['三环一套','四环二套'],
         'cars':{
            'japan':['普拉多','奔驰'],
            'usa':['林肯','福特'],
            'china':['qq','红旗','武林']
         }
    }
}
print(people['张三']['money'])#取到张三的money
print(people['王五']['cars']['usa'][0])#取到王五的林肯车

print(people['王五']['cars']['usa'])#取到王五的usa下所有的车
people['王五']['cars']['usa'].append('跑酷')#给王五的usa中增加车辆
print(people)
people['张三']['money'] += 200#张三的money增加200块
#直接循环一个字典的话,那么循环的是字典的key,字典是无序的
for p in people:
    print(p)

for k,v in people.items():#循环的时候,同时取key和value
    print(k,'====>',v)
    print()
for k in people:#循环的时候,同时取key和value,此种方法比people.items()速度快
  print(k,people[k])

字典练习



users = {
    'zhanglili':'123456',
    'wangwuw':'534545',
}
#所有的账号和密码
#username
#pwd
#cpwd
#print('zhanglili' in users)#not in 字典里面用in来判断的话,只是判断key是否存在
for i in range(3):
    username = input('账号:').strip()
    passwd = input('密码:').strip()
    cppasswd = input('密码确定:').strip()
    if username == '' or passwd =='' or cppasswd == '':
        print('账号/密码不能为空')
    elif username in users:
        print('用户名已被注册!')
    elif passwd != cppasswd:
        print('两次输入的密码不一致')
    else:
        print('恭喜,注册成功!')
        users[username] = passwd
        break
else:
    print('错误次数过多!')




  


五、常见数据类型(布尔、列表(增、删、改、查、list切片))



#一、布尔值
a = True#T要大写,小写时表示普通的字符串
b = False#F要大写,小写时表示普通的字符串
if a>b:
    print('hello')

#二、列表
stu = 'zhangsan,wangwu,陈凯,lily,wangwu'
new_stus = ['zhangli','zhangsan','wangwu','lisi','lily','cengcen']
#编号从0开始
#列表、list、数组、array都是列表
print(new_stus[3])
#3是下标、索引、角标、编号(4种叫法)
print(new_stus[-1])#如果最前面一个元素的下标是0,最后一个元素的下标是-1

#1、增加元素
cities = []
cities.append('上海')#append()在列表末尾增加一个元素
print(cities)
cities.insert(0,'西安')#insert()在指定的位置增加元素,添加时下标不要写负数
print(cities)
cities.append('北京')
print(cities)

#2、删除元素
cities.pop(0)#删除指定位置的元素
print(cities)
cities.remove(1)#报错
cities.remove('北京')#删除指定的元素
print(cities)

cities.clear()#清空list元素
print(cities)

del cities[2]#删除指定位置的元素

#3、修改(只能修改已有的下标值,指定的下标值不存在会报错)
print(cities)
cities[1] = '湖南'
print(cities)

#4、查询
print(cities[0])#指定位置的
#print(cities.index('云南'))#获取元素的下标,如果找不到那个元素的话会报错
print(cities.count('西安'))#查看元素在list里出现过多少次
print(cities.reverse())#把list反转,结果为None,无任何返回值
print(cities)

#5、排序(字符串和字母都可以进行排序)
nums = [4,6,3,5,3,57,8,3,45,0,7]
nums.sort()#升序排序
print(nums)
nums.sort(reverse=True)#降序排序
print(nums)

#合并和重复
cities2 = ['深圳','厦门','广东','澳门']
print(cities+cities2)#合并list
print(cities*3)#将list重复3遍

#6、len()
all_users = ['zhangsan','lily','lisi']
print(len(all_users))

#7、多维数组
words = ['views','code','tools',['zhangss','wangwu']]#二维数组


#8、切片是list取值的一种方式
nums= ['zhangsan','wangwu','lisi','lily','cengcen']
print(nums[1:3])#切片顾头不顾尾
print(nums[1:4])
print(nums[1:])#从某个小标开始取,取到末尾结束时下标可以省略不写
print(nums[:6])#从头开始取,取到后面某一个小标结束,那么开头的下标可以不写
print(nums[:])#取所有的值

list1 = list(range(1,21))
print(list1)
print(list1[:10:2])#2表示步长,隔两个取一个
print(list1[:10:3])#隔三个取一个
print(list1[0::2])
print(list1[0::-1])#从右往左开始取,下表为0开始往右
print(list1[::-1])#反转list1,如果步长是正数从左往右取,步长为负数从右到左取值
#产生一个新的list,不改变原来list的值
#list1.reverse()#改变原来list的值
print(list1)
print(list1[::-2])#从右往左取

#切片操作同样适用于字符串
info = '你好,今天天气很好'
print(info[6:2:-1])
print(info[2:6:-1])#取值为空
print(info[::-1])
#下标是不会改变的
print(list1[:18:-1])#-1倒序,开头没有取值,所以默认从20往左取值,取到18的下标(19),但不顾尾,所以19不取

#9、修改(可变变量里面的元素可以随便修改:如list,不可变变量里面的值不能修改:如string、元组)
name = '353454'
name[2] = '5'#报错:TypeError: 'str' object does not support item assignment