Python学习笔记(三) Python基础

(二)python基础

python基础

  1. 自然语言与编程语言有所不同 ,自然语言可以在不同的情景下有不同的含义或解释 , 但这是编程语言是坚决杜绝的 。
  2. 编程语言应有的性能要求有:一致性 、 无二义性 、 简洁性 、局部性 、 线性 。
  3. python语言也不列外 。
  4. python的 语法比较简单 , 采用缩进的方式 。 如:

    a=100;
    if a>=0:
        print(a)
    else:
        print(-a)
    1. 以#开头的是注释
    2. 每一行都是一个语句
    2. 当语句以:结尾时 , 缩进的语句视为一整个代码块(缩进有利有弊 
        1.  好处是强迫你写出格式化美观的代码 , 但是在python中并没有规定缩进是几个空格还是tab , 一般约定俗成坚持使用四个空格的缩进 。
        2.  强迫你缩进更少的代码 , 这样你回吧倾向于更长的代码拆分为若干个函数 ,提高代码复用性
        3.  坏处就是 , 当你粘贴代码的时候必须要重新检查缩进是否正确 , 此时IDE也很难像格式化java代码一样格式化Python代码 )
    4.  Python程序时大小写敏感的语言
    

一、数据类型和变量 、常量

  1. 基本数据类型:
    1. 整数:
      1. 在python中可以处理任意大小的整数 ,包括负数 , 在python语言中的表示方法和数学上的写法一模一样
    2. 浮点数
      1. 浮点数就是小数 , 之所以叫浮点数是因为当用 科学计数法表示一个小数小数点的位置不是固定的 ,而是浮动的 , 在Python中很大或很小的浮点数最好使用科学计数法表示 。
      2. 整数和浮点数在计算机中存储的方式是不同的 。整数在计算机中存储是永远是精确的 , 而浮点数只有很少一部分能精确存储 。
    3. 字符串
      1. 字符串是以单引号或双引号引起来的任意文本
    4. 布尔值
      1. 一个布尔值只有True 、 False两种值 , 在python中可以直接用True 、 False表示布尔值(注意大写) , 也可以通过布尔运算计算出来 。
      2. 布尔值也可以用 and 、 not 、 or 运算
    5. 空值
      1. 空值是Python中一个特殊的值 , 用None表示 , Nono不能理解为0 , 因为0是有意义的 , 而None是一个特殊的空值 。
  2. 变量:
    1. 变量名只能由字母 、 数字 、 下划线组成 , 且不能用数字开头
    2. 在Python中 = 是复制语句 , 可以把任意数据类型复制给变量 ,同一个变量可以反复复制 , 而且可以使不同类型的变量 。(这种变量类型本身不确定的语言称之为动态语言 )
    3. 当执行 a=’abc’ 时 , Python解释器干了两件事:
      1. 在内存中创建了一个‘abc’的字符串
      2. 在内存中创建了一个名为a的变量 , 并把它指向‘abc’
  3. 常量:
    1. 常量就是不能变的变量 , 一般来说常量全部用大写的变量名表示 , 如数学常数π在Python中使用PI表示 。
    2. 但事实上常量仍然是一个变量 , Python根本没有任何机制保证PI不会被改变

二、 字符串和编码

  1. 编码 略
  2. 字符串

    1. 对于单个字符的编码 , Python提供了ord()函数获取字符的整数表示 , chr()函数把编码转换为对应的字符
    2. python的字符串类型是str , 在内存中以Unicode表示 , 一个字符对应若干个字节 , 如果要在网络上进行传输 , 或者保存在磁盘上 , 就需要把str保存为以字节为单位的bytes 。
    3. python中bytes类型的数据用带b前缀的单引号或双引号表示

      x=b'abc'
      
    4. 要注意bytes类型和str类型的数据 , b’abc’ 和’abc’虽然内容一致 , 但是bytes的数据每个字符只占一个字节 。 :
    5. encode() : 可以使用encode()方法把str类型的字符串通过指定编码进行转换 。当指定的编码无法表示对应的字符时会报错 。
    6. decode() : 当python代码从磁盘读取数据时 , 读取到的是字节流, 如果想要获取中文数据 , 需要对字节流使用decode()进行解码操作 。当需要忽略字节流中错误的字节时 , 可以添加参数errors=‘ignore’
    7. len(str):查看字符串包含多少个字符注意不是字节而是字符
    8. len(bytes): 获取字符串字节个数
    9. 在开发中如果需要中文与bytes转换时 , 应该坚持使用utf-8 , py源代码本身也是一个文本文件 , 当源代码中包好中文时保存python源代码应该制定编码为utf-8(windows下默认gbk , linux下默认utf-8) 。为了在python源码执行时解释器解释正确 , 因该在文件中开头处加上 # -- coding:utf-8 -- 告诉解释器解释代码时使用 utf-8编码 。
    10. 格式化字符串: 如何输出类似“亲爱的xxx , 你xx月的话费是xxxx!”的字符串 , xxx中的内容都是根据变量变化的 , 所以python提供了简便的格式化字符的方式 。 在需要变量的位置放入占位符 , 在有参数时自动调用参数中对应的内容 。常见的占位符:

      占位符 替换内容
      %d 整数
      %f 浮点数
      %s 字符串
      %x 十六进制数

      其中格式化整数和浮点式还可以指定是否补0和整数与小数的位数

    11. 当字符串中包含%时 , %需要转义 ,用%%表示% 。
    12. format() : 另一种格式化字符串的方法 , 他会将传入的字符串依次的替换字符串内的占位符

三 、 list和tuple

  1. list: 列表list是python内置的一种数据类型 。 list是一种有序的集合 , 可以随时添加和删除其中的元素 。

    1. 可以用索引来访问list中的元素 。 当索引为正整数时 , 索引从0开始 。当索引为负整数时, 索引从-1开始 。 当索引超出list的长度时 , 会报错索引越界 。
    2. list是一个可变的有序列表
      1. 添加元素到末尾
      2. 添加元素到指定位置
      3. 获取并删除末尾元素
      4. 获取并删除指定位置元素
    3. list中的元素数据类型可以不同
  2. tuple: 另一种序列表叫元祖 。 tuple与list非常相似 。 但是tuple一旦初始化就不能修改 。只能获取其中的元素而不能删除或修改 。

    1. 因为tuple是不可变的 , 所以代码更加安全 , 在能用tuple时尽量使用tuple 。 但是tuple由于是不可变的 ,所以在定义tuple时 , 其中的所有元素就应该确定下来
    2. list用[]来表示 , tuple用()表示 。 tuple中即使只有一个元素时 , 也必须加上逗号 ,避免与计算时的()混淆 。

四 、 条件判断

  1. 之所以可以做很多自动化任务 , 就是因为他可以自动根据情景做条件判断 。
  2. 根据python的缩进规则 , 相同的连续的缩进视为同一个代码块 。

    # -*- coding:utf-8 -*-
    # 使用input获取到的内容都为Str类型  需要转换后才能使用运算符运算  
    age =int(input("请输入你的年龄:"))
    if age>18 :
        print("你是成年人!")
    elif age>15 :
        print("你是青少年!") 
    else:    
        print("你是儿童!")
    
    input("输入任意字符退出!")
    
  3. python中if判断天剑还可以简写 , 直接判断自动推断数据类型 , 然后自动判断整数或浮点数是否为0 , 字符串是否为空 ,list是否为空 。 如果是则运算结果为Ture , 否则为False 。

五 、 循环

  1. python中提供 两种循环: for-in 和while循环 。

  2. for循环 :

    #  -*- conding : utf-8 -*-  
    #python中循环
    
    #循环输出名字
    names = ['韩梅梅' , '李雷雷' , '小明明']
    for name in names :
        print(name)
    
    
    #循环输出有序数字
    list = [1,2,3,4,5,6,7,8,9]
    for l in list :
        print(l)    
    
    # 但是如果想要输出1~10000的有序数字 , 难道需要提前定义1~10000的list么
    
    list2=range(10001) # range()函数用于生成0到指定数字的有序list
    for l in list2:
        print(l)     
    
  3. while循环:

    #while 循环
    # 求0到100的和
    
    sum = 0
    n = 100
    while n>0 :
        sum =sum +n
        n = n - 1 
    print("0到100的整数和为:" ,sum)
    
  4. break 与 continue
    1. 在循环中可以使用break提前结束循环 , 一般需要配合if使用 。
    2. 在循环中可以使用continue结束本轮循环 , 之后继续进行下一轮循环 。

六 、 dict和set

  1. dict : python中内置了dict的支持 , dict全程dictionary , 在其他语言中也称为map , 使用键值对存储 , 有着极快的查找速度 。 (原因: dict有自己的索引表 , 不会随着元素的增多而导致查询速度变慢)
    1. 在dict中 一个key只能对应一个value ,在key一样的情况下 后进的value会把之前的value覆盖。
    2. 在修改value时如果value不存在 , 则会报错 。为了避免key不存在的错误 , 可以事先通过in判断key在dict中是否存在 。 也可以通过get()函数判断key是否存在 ,如果不存在则返回none 或返回自己制定的缺省值。 (在python的交互环境中测试时 如果结果为None , 则不会有任何显示 。 )
    3. dict和list相比:
      1. dict可以存储键值对格式的数据 。
      2. dict的查询速度非常快 , 不会随元素增多而变慢
      3. dict占用的内存空间较大 , 内存浪费多
      4. dict总结: dict可以 =用在需要钙素查询多的地方 , 在python代码中几乎无处不在 ,需要注意的是dict中元素的key必须是不可变对象 。 这是因为dict需要根据key来计算value的存储位置 , 如果每计算的位置都不一样那就完全混乱了 。 在python中字符串 、 整数都是不可变的 , 因此可以放心的用作key 。
  2. set : set中存储的元素格式与list类似, 但是存储的元素的位置和存储的顺序无关, 且set内存储的元素是不可以重复的 。

    1. add() : 通过add()函数将元素添加到set中 。
    2. remove() : 通过remove()函数将元素从set 中移除 。
    3. 在数学的概念上 set是一个无序不重复的元素的集合 , 所以可以对set进行交集、 并集运算 。

    4. set总结: set和dict 的唯一区别就是dict存储的元素是键值对形式的 ,而set只存储了key , set和dict中的key都是不可重复的 , 存储顺序相对于存入顺序来说都是无序的 , 且set和dict的原理是一样的 , 同样不可以存储可变元素 , 因为无法判断两个元素是否相等 , 也就无法保证set中不会有重复元素 。(在python中str和整数是不可变元素 )

猜你喜欢

转载自blog.csdn.net/chou_out_man/article/details/79967296