#encoding=utf-8
#一、数字要掌握的方法

#int()转换数字的方法

string = "123"
print(int(string))

#二、字符串的方法
'''
字符串是不可变,在内存中存储是连续的,故修改字符串就会产生一个新的对象
字符串是可可迭代对象(可以通过for循环)
字符串必须要记住的方法:1、join方法:字符串的每个元素按指定分割符进行拼接;(内部相当于循环)
                        2、split(self,chars,maxsplit)方法:字符串按分割符进行分割多个字符,(第一个参数表示是分割符,第二参数表示分割的数量)
                        3、strip(self,chars)方法:去除字符串头尾的空字符、制表符、换行符 [lstrip左边,rstrip右边]
                        4、find(self,chars,stat,end)方法:查找元素,从左到右,找到第一个结束,返回index值,找不到返回-1的值
                        5.upper(self):所有小写变大写
                        6、lower(self):所有大写变小写
                        7、replace(self,old,chars):将字符串中的字符,替换为新的字符
                        8、startswith(self,chars)/endswith(self,chars):判断字符串是否已chars字符串开头或结尾
                        9、format():占位符的使用
'''
#join()方法的实例
string = "fkwewf"
print("*".join(string))

#split()方法的实例
strint = "fjoweskeoerskeroewrskflfkserrre"
print(strint.split("s"))
print(strint.split("s",2))

#strip()[lstrip、rstrip]方法的实例
string = "  fwk fj   "
print(string.strip())
print(string.lstrip())
print(string.rstrip())

#find()方法的实例
string="werkdek"
print(string.find("k"))
print(string.find("v"))

#upper()、lower()方法的实例
string="asff"
print(string.upper())
string="aEFEDv"
print(string.lower())

#replace()方法的实例
string = "fjoweskeoerskeroewrskflfkserrre"
v = string.replace("e","4")
print(v)

#format()方法的实例
test = "i love {name},age {ages}"
test.format(**{"name":"高淇","ages":18})   #必须要加两个*才能实现,不然会报错
print(test)


#三、列表 list
'''
列表是可变的,有序的, 属于可迭代对象
索引、切片、循环
append(self,p_object):追加元素,在列表后面追加元素
extend(self,iterable):追加可迭代对象,内部循环可迭代对象(例如:传入字符串,按一个个字符进行追加元素)
insert(self,index,p_object)插入元素,在index位置插入p_object新元素
join():列表元素都是字符串的时候可以通过join进行拼接成一个字符串

'''
li = [12,34,["a","b",[True,False]],56]

#索引
print(li[2])
#切片 返回的是列表
print(li[0:-1])
#循环遍历
for lists in li:
    print(lists)

#修改
li[0] = 999
print(li)
#删除
del li[1]
print(li)
v = li.pop()  #默认删除最后一个,并返回最后一个元素的值
print(li,v)
#插入
li = [12,34,["a","b",[True,False]],56]
li.insert(1,"高淇")
print(li)

li = [12,34,["a","b",[True,False]],56]
li[2].insert(1,999)
print(li)

#append()追加元素、extend()追加可迭代对象
li = [12,34,56]
li.append("sfetr")
print(li)
li = [12,34,56]
li.extend("sfetr")
print(li)

#join()方法实现拼接(元素必须全部为字符串)
li = ["12","34","56"]
print("".join(li))

li = [12,34,45]
s = ""
for lists in li:
    s += str(lists)
print(s)



#四、元组 tuple
'''
字符串、列表、元组直接可以相互转化(join(for循环),list、tuple)
元组不可变,有序的,属于可迭代对象
元组不能对其一级元素进行修改、删除、增加
索引、切片、循环  


方法:可以不用记住

'''
#索引(元组是有序的,可以通过索引index进行提取元素)
tu = (11,22,33,[True,False])
print(tu[3])

#元组是不变的,故不能对其一级元素修改、删除、插入
tu = (11,22,33,[True,False])
tu[3].append("12")
print(tu)
tu[3].extend(["gaoqi","xiao"])
print(tu)

#切片
tu = (11,22,33,[True,False])
print(tu[1:3])

#join方法  join传递是可迭代对象即可实现字符串的拼接
tu = ("11","22","33")
print("".join(tu))
#


#五、字典 dict
'''
字典是无序的,key值不能是列表和字典。values值可以是任何值或对象
字典可以通过for循环、可以通过key进行索引。不能进行切片
方法:
    keys(self):字典的键,默认就是返回是键
    values(self):字典的value值
    items(self):字典的键值对。需要用两个变量进行接收
    get(self,key,value):根据键返回value值,如果键在字典不存在,则返回d值,如果不设置d值,返回None【dict[key],key不存在,系统报错】
    update(self, E=None, **F):更新,字典中已经存在的更新,字典中不存在增加新的键值对

'''
#字典是无序,字典的键不能是列表或字典;字典的值可以是任何对象
dict1 = {
    "k1":"vv1",
    1:"1",
    True:[
        11,
        22,
        (
            33,
            44
        )
    ],
    (11,22,):{
        "kk1":"vv1",
        "kk2":"vv2"
    }
}
print(dict1)

#字典是无序的,故只能根据key索引value值
di = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
print(di["k1"])

#字典循环(默认是返回键,可以通过keys()、values()、items()定义返回的内容)
di = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
for dict1 in di:    #返回的是键
    print(dict1)
for keys in di.keys():
    print(keys)
for values in di.values():
    print(values)
for keys,values in di.items():
    print(keys,values)
for tu1 in di.items():  #返回的键值对存放于元组中
    print(tu1)

#get(key,d)根据键查找值,和索引功能一样,但是get方法传递的键在字典中不存在,返回None,如果有传递d值就返回d值
di = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
print(di.get("k1",111))
print(di.get("k4",111))

#update(self, E=None, **F)更新字典,字典存在将字典的值替换,字典不存在增加键值对
di = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
di.update({"k1":111})
print(di)
'''{'k1': 111, 'k2': 'v2', 'k3': 'v3'}'''
di.update({"kk1":"vv1"})
print(di)
'''{'k1': 111, 'k2': 'v2', 'k3': 'v3', 'kk1': 'vv1'}'''

#布尔值bool
'''
bool(...)
0,None,"",[],(),{}用布尔值判断都是False,其他都是真

'''