Python学习第四天
一.数字 int
二.字符串 str
#以下均为补充内容 #对于空字符串是假 #数字0是假 #数字和字符串可以相互转换 # a="123" # b=int(a) # a=123 # b=str(a) #-1表示“x”,-2表示“e” # test="alex" # test[0:-2] #将range内容从后往前输出 # for i in range(5,0,-1): # print(i) def check_code(): import random checkcode = '' for i in range(4): current = random.randrange(0, 4) if current != i: temp = chr(random.randrange(65, 90)) else: temp = random.randint(0, 9) checkcode += str(temp) return checkcode while True: code = check_code() print(code) user_in=input(">>>") user_in_up=user_in.upper() if user_in_up==code: break print("验证码正确")
三.列表 list
# 中括号括起来 # 逗号分割每个元素 # 列表中的元素可以是数字,字符串,或者列表本身,布尔值等 li = [1, 12, 9, "age", "diji", ["dskjd", "djsds"]] # 通过索引取值 print(li[5]) # 通过切片取值,切片结果也是列表 print(li[3:5]) # 支持for循环和while循环 # 列表是拿链表储存的,锁所以可以修改。 # 字符串是顺序存储的,所以修改的时候内存中的所有字符都要向后移获取向前移。所以修改的代价太大 # 修改方式一,索引 li[0] = "lzd" print(li) # 修改方式二,切片 # 删除方式一,索引 del li[0] print(li) # 删除方式二,切片 # 支持in和not in的操作 v = "dskjd" in li[4] print(v) # 取出来的是'dskjd'中的's' li = [1, 12, 9, "age", "diji", ["dskjd", "djsds"]] print(li[5][0][1]) # 列表在进行转换的时候,本质上是for循环。所以数字不可以转换 s = "dfsadkfuafehfafdhajdjda" new_s = list(s) print(new_s) # 列表转换成字符串 # 需要自己写for循环一个一个处理,既有数字又有字符串 # 用str转换会默认这个字符串是一个整体 s = "" for i in li: s += str(i) print(s) # 如果只有字符串的情况,可以用join,join就是在内部在做for 循环 li = ["jskd", "dsios", "ifsi", "fdif"] v = "".join(li) print(v) # append和extend的区别就是,append是将追加的值作为一个整体追加到列表的后边 # expend可以进行迭代,将列表的值拆分成元素追加到列表的后面 # expend的参数必须是可迭代的对象,比如说字符串获取列表 li.extend([9898, "不得了"]) print(li) # ************************************* # 其他不常用的如下 # none表示什么都没有,在原来值最后追加 li = [11, 22, 33, 22, 44] v = li.append(5) print(v) print(li) # 表示清空列表中的值 # li.clear() # print(li) # 拷贝,浅拷贝 v = li.copy() print(v) # 计算元素出现的次数 v = li.count(22) print(v) # 找某个值的索引位置,最左优先,可以规定起始位置和最后位置 v = li.index(33) print(v) # 在指定索引位置插入元素 li.insert(0, 99) print(li) # pop和remove都是删除 # pop可以获取删除的值,默认删除最后一个元素,用索引指定 # remove指定的是删除的值,没有默认情况,如果遇到相同的,按照从左到右的顺序进行删除 v = li.pop(1) print(v) li.remove(33) print(li) # PS: pop remove del li[0] del li[7:9] clear # 将当前列表进行反转 li.reverse() print(li) # 排序,可以进行从大到小排,也可以进行从小到大排序 li.sort(reverse=True) print(li)
四.元组 tuple
# 元组,元素不可被修改,不能被增加或者删除 tu = (111, 22, 33, 44,) # 一般写元组的时候,在最后加个逗号,和参数区别 # 索引 v = tu[0] print(v) # 切片 v = tu[0:2] print(v) # 不可以修改,增加或者删除 # 可以被for循环,可迭代对象 for item in tu: print(item) # 列表,元组,和字符串之间可以相互转换 # 元组转换成字符串的时候,如果只有字符串可以用join # 如果既有字符串又有数字的话,也是智能自己写for循环,和列表差不多 # 元组是有序的 tu = (111, "alex", (11, 22), [(33, 44)], True, 33, 44) print(tu[3][0][0]) # 元组的一级元素不可修改,删除,增加,但是二级元素如果是可修改的类型就可以修改 # count,获取指定元素在元组中出现的次数 # index,获取指定元素的索引位置
五.字典 dict
# value可以是任意类型 info = { "k1":"v1",#键值对 "k2":"v2" } print(info) # 列表和字典都不可以作为'k'值,以哈希表的方式存储 # 字典是无序的,可以通过自己规定的索引找到相应的值 v = info["k1"] print(v) # 可以进行删除 # del info["k1"] # print(info) # for循环,默认输出的是k。info.keys和默认情况向同 for i in info: print(i) for i in info.values(): print(i) # 即输出键又输出值 for k,v in info.items(): print(k,v) # 如果出现k值重复,只能保留一个。 # 布尔值和0,1可能重复 # clear # copy浅拷贝 # 静态方法 # 根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["k1",123,999],123) print(v) #info.get("k1")和按照索引取值的区别就是: #如果索引取值不存在会直接报错,而get则会返回none。如果不存在也可以通过参数指定返回值 #删除,,也可以通过参数等到当前删除值得value #如果不存在,也可以指定一个默认的值返回给用户 # v=info.pop("k1") # print(info,v) #popitem字典中随机删除键值对 #进行设置,如果存在则不设置,不做任何变化。也可以获取值 info.setdefault("k3",123) print(info) info.update({"k3":12345,"k4":123}) info.update(k5=456) print(info) #*******************最常用 keys items values get update********************************
六.布尔值 bool
# 0 1 # bool(...) # 假:none,"",[],(),{},0
七.整理
# 一.数字 # int(...) # # 二.字符串 # replace/find/join/strip/startswith/split/upper/lower/fomat s = "i am {name},age is {age}" v = s.format(**{"name":"lzd","age":19}) print(v) # 三.列表 # append/extend/insert # 四.元组 # 一级元素不能被修改,删除,增加 # # 五.字典 # get/update/keys/items/values # # 六.布尔 # 0 1 # bool(...) # 假:none,"",[],(),{},0