• 三. Python基础(3)--语法


    三. Python基础(3)--语法

    1. 字符串格式化的知识补充

    tpl = "我是%s,年龄%d,学习进度100%" %('Arroz',18)

    print(tpl)

    # 会提示:ValueError: incomplete format# 占位符只有格式化时才有意义

     

    msg = "我是%s,年龄%d,学习进度100%"

    print(msg)

    # 结果:我是%s,年龄%d,学习进度100%

     

    # 如果想要格式化输出字符串,同时又想要打印%,需要写两个%

    msg = "我是%s,年龄%d,学习进度100%%"%("Arroz",19)

    print(msg)

    # 结果:我是Arroz,年龄19,学习进度100%

     

    # 字符串格式化的一种写法:

    tpl = "我是%s, 年龄%d, 学习进度100%%" % ('Arroz', 19)

    print(tpl)

     

    判断字符串是否为数值:isdecimal()

     

    2. 整数(int)类型

    v1 = 15

    print(v1.bit_length()) # 4

    # 当十进制用二进制表示时,最少使用的位数(excluding the sign and leading zeros)

    # bit_length()不能用于字符串类型

     

    # bit_length()可用于布尔类型

    v2 = True

    print(v2.bit_length()) # 1,布尔类型实际上也是数值型

     

    v3 = -37

    print(bin(v3)) # -0b100101

    print(v3.bit_length()) # 6

     

    # 也可以写成(-37).bit_length()

    # 不能写成-37.bit_length()

     

    3. 布尔(bool)类型

    整数0和空字符串""相当于False

    0 的整数/浮点数,和非空的字符串相当于True

    也就是说while True相当于while "天天向上", while 7, while 4.5, while -4.5

     

    wihle 1的执行时间约为while True2/3,为什么?

    由于Python2中,TrueFalse不是关键字,因此我们可以对其进行任意的赋值,这就导致程序在每次循环时都需要对TrueFalse的值进行检查;而对于1,则被程序进行了优化,而不进行检查。

     

    注意:

    v = 0 or 6

    print(v)

    v = 6 or 0

    print(v)

    v = 2 or 1

    print(v)

    v = 1 or 2

    print(v)

    v = 9 or 2 > 3

    print(v)

    v = 9 or 2 < 3

    print(v)

    v = 2 > 3 or 9

    print(v)

    v = 2 < 3 or 9

    print(v)

    # "逻辑或"的运算原则是从左向右判断, 一旦判断出一个表达式为True, 那么整个逻辑运算的值就是这个表达式的值.

    6

    6

    2

    1

    9

    9

    9

    True

    print("=======")

    v = 0 and 6

    print(v)

    v = 6 and 0

    print(v)

    v = 2 and 1

    print(v)

    v = 1 and 2

    print(v)

    v = 9 and 2 > 3

    print(v)

    v = 9 and 2 < 3

    print(v)

    v = 2 > 3 and 9

    print(v)

    v = 2 < 3 and 9

    print(v)

    # "逻辑与"的运算原则是从左向右判断, 若有一个表达式为False, 那么整个表达式都为False(或者是代表False的对象), 若几个表达式都为真, 那么整个逻辑运算的值就是最后一个表达式的值.

    0

    0

    1

    2

    False

    True

    False

     

    4. 字符串(str)类型

    类提供的功能:

    upper()

    lower()

    capitalize()

    strip(); lstrip(); rstrip()

    replace()

    split()

    变量本身的值不变, 函数返回变化后的值

     

    公共功能:

    len()

    ②索引 indexing

    ③切片 slicing (切片都是"左闭右开"的区间)

    string = 'abcdefg'

    new_str = string[:4] + string[4]+ string[4:]

    print(string, new_str, sep = "→") # abcdefg→abcdeefg

     

    5. 列表(list)类型

    类提供的功能:

    append()

    insert()

     

    公共功能:

    len()

    索引(, ,): [], =, del

    特殊的: list[0:2] = ["Eric",]

    遍历: for

    注意下面的案例:

    v = ["Peter", "Paul", "Mary", "Harry", "Jerry"]

    # v[3] = "Leo" # ['Peter', 'Paul', 'Mary', 'Leo', 'Jerry']

    # v[3] = ["Leo",] # ['Peter', 'Paul', 'Mary', ['Leo'], 'Jerry']

    # v[3:4] = "Leo" # ['Peter', 'Paul', 'Mary', 'L', 'e', 'o', 'Jerry']

    # v[3:4] = ["Leo",] # ['Peter', 'Paul', 'Mary', 'Leo', 'Jerry']

    # v[3:5] = ["Leo",] # ['Peter', 'Paul', 'Mary', 'Leo']

    # v[3:9] = ["Leo",] # ['Peter', 'Paul', 'Mary', 'Leo'] # 不会提示"list index out of range"

    # 如果列表只有一个元素,推荐加上一个逗号

    # v[3:5] = "Leo" # ['Peter', 'Paul', 'Mary', 'L', 'e', 'o']

    # v[3:9] = "Leo" # ['Peter', 'Paul', 'Mary', 'L', 'e', 'o'] # 不会提示"list index out of range"

    # print(v[7]) # 会提示"list index out of range"

    del v[3]

    del(v[3]) # 一般不这么用, 此时del仍然不是一个函数

    v[3].del() # del是语句,不是list的方法

    变量本身的值发生变化, 函数返回None

     

    6. 元组(Tuple)类型

    元素不可变(immutable)的容器(container), 但是它内部可以包含可变元素(如列表)

     

    类提供的功能:

     

    公共功能:

    len()

    索引() :[]

    遍历:for

     

    7. 字典(dict)类型

    类提供功能

    get()

    get()--如果不存在查询的键, 不报错, 返回关键字'None'

    v[]--如果不存在查询的键, 报错

    print(dict["k1"]) # v1

    #print(dict["k3"])

    print(dict.get("k1")) # v1

    print(dict.get("k3")) # None

     

    字典元素的顺序:

    字典元素的书写顺序不是它们实际的存储顺序, 字典将根据每个元素的Hashcode值进行排序.

    原因

    因为python字典的本质是一个Hashhash表的数据结构注定它就是无序的。

     

    ● ""的要求

    1)一个键不允许出现两次。

    2) 键必须不可变(也就是hashable),所以可以用数值, 字符串或元组充当键,列表就不行

     

    公共功能:

    len()

    dict = {

        "k1" : "v1",

        "k2" : "v2"

    }

    print(len(dict)) #2

    ②索引(,,): =, del

    # del dict["k1"]

    # print(dict) # {'k2': 'v2'}

    由于字典是不排序的,所以不能像列表那样通过切片生成新字典

     

    ③循环

    - for i in dict.keys() # dict_keys(['k1', 'k2'])

    - for i in dict.values() # dict_values(['v1', 'v2'])

    - for i in dict.items() # dict_items([('k1', 'v1'), ('k2', 'v2')])

     

    for i in dict.keys():

        print(i)

    # 等价于:

    for j in dict:

        print(j)

    # 注意, 字典没有切片, 因为字典是无序的.

     

    案例: 注意下面三种遍历"-"对的方法

    v = {

        "k1":"v1",

        "k2":"v2"

    }

     

    for i in v.items():

        print(i)

     

    for a,b in v.items():

        print(a, b)

    for (a,b) in v.items():

        print(a, b)

    ('k1', 'v1') # 元组

    ('k2', 'v2')

    k1 v1

    k2 v2

    k1 v1

    k2 v2

     

    案例

    n = input("Your name:")

    a = input("Your age:")

    user_list = [{"name": "Peter","age": 18}, {"name": "Paul", "age": 19}, {"name": "Mary", "age": 20}]

     

    temp ={"name": n, "age": int(a)}

    user_list.append(temp)

    for item in user_list:

        print(item["name"], item["age"])

        #print(a, b for a, b in item.items())

    Your name:Leo

    Your age:21

    Peter 18

    Paul 19

    Mary 20

    Leo 21

     

    8. 强制转换(casting)

    int()

    float()

    str()

    bool()

     

    知识补充

    ● 字面量, 变量

    a = 11

    注意区分作为字面量(literal)的"11",和作为变量的a,它们在计算机中存储是不一样的。

     

    ● 在Pycharm中查看文档

     

     

    ● 切片&步长

    text = "洞庭湖位于长江中游荆江南岸"

    slice = text[1:20:2]# 即使这里的20 > len(text), 也不会提示越界

    print(slice)

    print(text)

    # del text[1:15:2] # 报错, 'str' object does not support item deletion

    # print(text)

     

    li = [11,22,33,44,55,66]

    del li[1:15:2] # 把奇数索引的元素删去

    print(li)

  • 相关阅读:
    自适应Simpson积分
    斜率优化
    ORM的单表增删改查
    MTV模型—urls和view
    迭代器与生成器
    s7day2学习记录
    s7day1学习记录
    AI车牌识别涉及哪些技术?它是如何改变行业的?
    技术分享:人脸识别究竟是如何完成的?
    TSINGEE青犀视频行人检测景区测试时视频流切换本地背景音乐无法播放问题优化
  • 原文地址:https://www.cnblogs.com/ArrozZhu/p/8393462.html
Copyright © 2020-2023  润新知