zoukankan      html  css  js  c++  java
  • Python3学习笔记4

    今天主要学习Python3的基础语法知识

    1.注释

    python使用#号来表示注释,在语句前面加上#号,解释器就知道了这句是注释

    2.代码缩进

    if a > 10:
        print(a)

    在语句的末尾加上分号,下一行缩进(默认占4位),则表示改行代码与之前代码属于同一个代码块

    3.python的数据类型

    整数:0,1,100,-200,还包括十六进制,如0x5b

    /:除    //:地板除    %:求余

    两个整数相除是浮点数,两个整数进行地板除是整数,两个整数进行求余是整数

    9/3  =》 3.0    9 // 3  =》3           9 % 3   => 0

    浮点数:1.2,3.14

    字符串:可以用单引号'',或者双引号""表示,字符串内部可以带有转义字符,比如 , ,如果要输出号,需要带两个\

    可以在前面带有r来表示忽略转义字符,r符号相当于C#里面的@符号,转义字符不转义

    print("abc efg")   =>    打印出abc,然后换行,再打印efg

    print(r"abc efg")    =>   打印出abc,然后打印 ,在打印efg,不会换行

    布尔值:python的真和假,用True和False表示,首字母是大写,这个跟其他语言是不一样的,c#和java里面是true和false

    布尔运算跟其他语言也不一样,不是通过&,||,!这些符号来操作,而是通过and与运算,or或运算,not非运算

    空值:python的空,用None表示

    4.变量

    python是动态语言,变量的值不是固定的,可以动态变幻的,这个跟c#和java是不一样的

    a = 10   a = "123"

    变量a可以先赋值整数10,然后在赋值字符串123,这都是可以的

    python的变量类似于引用类型,申明一个变量,其实是在内存中将变量指向一个内存中的地址,所以变量是不会变得,变得是他所指向的值,比如:

    x = 'ABC'    
    y = x 
    x = 'XYZ'
    print(x)
    print(y)
    
    x   >>>  'XYZ'
    y   >>>  'ABC'

    变量x首先指向内存中的'ABC',将x赋值给y,是将x的指向赋予y,变量y也指向'ABC',然后再让x指向'XYZ',所以最后输出的值,x和y是不一样的

    5.常量

    python的常量,我们默认用大写的字母来表示,比如:PI = 3.1415926     A = 10

    6.编码

    ascii编码只能表示字母,数字和一些符号,中文可以使用utf-8和gb2312来编码

    python的文件建议统一采用utf-8来编码,我们的文件用utf-8编码,然后读取到内存以后,python解释器会转换为unicode编码,操作完成保存到文件再用utf-8编码

    一个中文字符,utf-8编码占3个字节;一个中文字符,gb2312编码占2个字节

    可以通过ord函数来获取某个字符的ascii编码,比如ord("a") >>> 97

    可以通过chr函数来获取某个编码表示的字符,比如chr(97)  >>> a

    字符串经过加密以后可以转换为对应的字节码:
    'ABC'.encode('ascii')
    '中文'.encode('utf-8')
    '中文'.encode('gb2312')

    字节码经过解密以后可以转换为对应的字符串:
    b'xe4xb8xadxe6x96x87'.decode('utf-8')
    b'xd6xd0xcexc4'.decode('gb2312')

    在接口调用中经常会碰到对方返回过来的信息,中文内容会是一串字节码,这是因为经过utf-8或者gb2312加密了,只要做对应编码的解密就能看到中文了

    可以通过len()函数获取字符串的长度,len("ABC")  >>>  3

    7.格式化

    占位符: %d  整数   %f   浮点数    %s   字符串   %x    十六进制

    在python中使用 % 号来进行占位操作

    >>> 'Hello, %s' % 'world'
    'Hello, world'
    >>> 'Hi, %s, you have $%d.' % ('zhang', 100)
    'Hi, zhang, you have $100.'

    占位符可以表示占几位,数字的话可以表示精确到几位小数

    %3d 占三位,但是空位不补0,%03d 占三位,空位补0,%.2f  精确到小数点后两位,这个会四舍五入

    也可以使用format()函数来进行格式化

    'Hello {0}, 开销占了{1:.2f}%'.format('zhang', 20.128)
    >>> Hello zhang, 开销占了20.13%

    8.list和tuple

    list:有序的集合,用中括号[]表示

    names = ['zhang', 'wu', 'wang', 'lin']
    从前到后顺序:0,1,2,3
    从后往前顺序:-1,-2,-3,-4
    append('chen') 添加元素,默认添加到末尾
    insert(1, 'liao') 插入元素,在指定位置插入元素,后面的元素索引都向后移
    pop() 默认删除末尾元素,会把删除的元素返回回来
    pop(2) 可以指定删除的索引

    list中的元素不限制类型,可以是整型,浮点型,布尔型,字符串
    甚至可以把一个list添加到另外一个list,组成多为数组
    names.append(['us',1,'au'])

    tuple:有序的列表,元组,用小括号()表示

    tuple的元素是不能变得,这个不能变,指的是指向不能变
    如果元素是整型,字符串,那就不能改变
    如果tuple里面有个元素是list,那么这个元素就必须是list,但是list里面的值是可变的

    list和tuple都可以组成多维数组来读取

    9.条件判断

    if elif else,每个if和elif,else后面都是跟冒号

    height = input("请输入你的身高:")
    weight = input("请输入你的体重:")
    height = float(height)
    weight = float(weight)
    bmi = weight / height
    if bmi < 18.5:
        print("过轻")
    elif bmi < 25:
        print("正常")
    elif bmi < 28:
        print("过重")
    elif bmi < 32:
        print("肥胖")
    else:
        print("严重肥胖")

    10.循环

    循环操作主要通过while,for x in list

    计算1到10的求和

    sum = 0
    for x in range(1, 11):
        sum = sum + x
    print(sum)
    sum = 0
    n = 1
    while n < 11:
        sum = sum + n
        n = n + 1
    print(sum)

    range()函数可以获得对应的整数序列

    range(10)表示0到10,不包括10的整数序列,range(1,11)表示1到11的整数序列,不包括11,其实就是1到10

    通过list方法,可以把range的序列转换为list:list(range(5))    >>>   [0,1,2,3,4]

     可以通过break跳出循环,通过continue跳出本次循环,直接进入下一个循环,用法跟c#和java的一样

     11.字典dict

     python的字典跟c#的一样,其实就是key-value的模式,不过使用不一样,python通过{}来表示,{"age": 30, "gender": "female", "sex": "love" }

     dict的每个key都是不一样的,但是可以对一个key重复赋值,后面的赋值会替换前面的赋值

    dict可以通过in或者get()方法来判断是否存在key

    >>> 'zhang' in d
    False
    
    >>> d.get('zhang')
    >>> d.get('zhang', -1)
    -1

    可以通过pop(key)的方法删除对应的key,这个方法会返回被删掉的key对应的value

    dict的优点是,查找和插入速度快,而且这个速度不会因为key的增加而变慢,缺点是占用大量的内存

    dict查找为什么快,这个有点跟我们去字典里面查找汉字差不多,先在索引表里面查找这个字对应的页码,

    然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

    dict添加key,存放value 的时候,会先根据key计算这个key的哈希值,然后在内存中这个哈希所在的空间存入value,因为每个key都是不一样的,所以存放的地方都不一样

    要保证key是不变的,那么key必须使用不可变的对象,所以可以使用整数,字符串这些不可变得,但是不能使用list,因为list是会变得

    如果用list作为key,会报key无法计算哈希值的错

    12.set

    set和dict类似,只不过set不存放value,存的都是key,set里面的key都是不一样的

    给set()函数新增一个list参数,就可以获取一个set

    >>> s = set([1, 2, 3])
    >>> s
    {1, 2, 3}

    可以通过add(key)和remove(key)给set新增和删除key,重复添加key不会改变set

    两个set可以做并集和交集的处理,交集就获取相同的key,并集就合并key,重复的key会被排除

  • 相关阅读:
    解析漏洞总结
    ssh登录日志位置
    xshell ssh连接linux时提示ssh服务器拒绝了密码
    Linux安装ssh
    Apache Shiro (Shiro-550)(cve_2016_4437)远程代码执行
    CVE-2019-1388 UAC提权复现
    CVE-2019-0708复现之旅
    Apache Flink漏洞(CVE-2020-17519)复现
    FourEye(重名免杀实践)过360
    CVE-2020-11651:SaltStack认证绕过复现
  • 原文地址:https://www.cnblogs.com/zfylzl/p/9788814.html
Copyright © 2011-2022 走看看