Python学习第四天

时间:2022-07-07 20:55:25

一.数字 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