【廖雪峰Python教程】一、python基础

【廖雪峰Python教程】

参考资料[廖雪峰教程](Python教程 - 廖雪峰的官方网站 (liaoxuefeng.com))

一、Python 基础

  1. 输入和输出
  • input()

    • 可以显示一个字符串来提示用户

    •   name = input('please enter your name: ')
        print('hello,', name)
      
    • 易错:input()返回的数据类型是strstr不能直接和整数比较,若想比较必须先把str转换成整数,例如int()。

  • print()

    • 接受多个字符串,用逗号“,”隔开,就可以连成一串输出(遇到逗号“,”会输出一个空格)

    •   >>> print('The quick brown fox', 'jumps over', 'the lazy dog')
        The quick brown fox jumps over the lazy dog
      
  1. 数据类型和变量
  • 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\

    • r''表示''内部的字符串默认不转义
  • '''可换行的内容'''的格式表示多行内容

    • 出现...是提示符,提示你可以接着上一行输入
  • 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

  • Python程序是大小写敏感的,在Python中,通常用全部大写的变量名表示常量

  • //除法取整数,%取余数

  1. 字符串和编码
  • 字符串有个replace()方法:a = ‘abc’,a.replace(‘a’, ‘A’)

    •   >>> b
        'Abc'
        >>> a
        'abc'
      
    • 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

  1. 使用list和tuple
  • list是一种有序的集合,可以随时添加和删除其中的元素。

  • list元素也可以是另一个list,比如:

    •   s	 = ['python', 'java', ['asp', 'php'], 'scheme']
      
    • 要拿到'php'可以s[2][1]s可以看成是一个二维数组

  • tuple和list非常类似,但是tuple一旦初始化就不能修改。注意:但是tuple中的元素如果有列表X,那么X中的元素仍然可以改变,只要保证tuple对应的元素列表仍然指向x即可。

  • tuple元组的定义方式

    •   t = ()  #空元组
        t = (1,) #只含一个元素,注意:此时必须加逗号,不然有歧义会被认定为数值1加了圆括号
        t = ('a', 'b', ['A', 'B']) #定义多个元素
      
  1. 条件判断
  • 当语句以冒号:结尾时,缩进的语句视为代码块

    •   age = 3
        if age >= 18:
            print('adult')
        elif age >= 6:
            print('teenager')
        else:
            print('kid')
      
  1. 模式匹配
  • if ... elif ... elif ... else ...判断时,会写很长一串代码,可读性较差,可以使用match语句。

    • 可以且仅能在最后加一个case _表示“任意值”

    •   match score:
            case 'A':
                print('score is A.')
            case 'B':
                print('score is B.')
            case 'C':
                print('score is C.')
            case _: # _表示匹配到其他任何情况
                print('score is ???.')
      
  • 可以匹配多个值、匹配一定范围,并且把匹配后的值绑定到变量

    •   age = 9
        
        match age:
            case x if x < 10: # 表示当age < 10成立时匹配,且赋值给变量x
                print(f'< 10 years old: {x}')
            case 10: # 仅匹配单个值
                print('10 years old.')
            case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:  # 能匹配多个值,用|分隔。
                print('11~18 years old.')
            case 19:
                print('19 years old.')
            case _:
                print('not sure.')
      
  1. 循环
  • 左闭右开range函数

    • range(101)就可以生成0-100的整数序列
    • range(2, 7)输出: 2, 3, 4, 5, 6
    • range(1, 10, 2)输出: 1, 3, 5, 7, 9
    • numbers = list(range(5))输出: [0, 1, 2, 3, 4]
  • for循环

  • while循环

    • 只要条件满足,就不断循环,条件不满足时退出循环
    • break语句可以提前结束循环
    • continue语句可以跳过本轮循环,循环内剩下的语句不再执行,直接开始下一次循环
    • while b 表示当 b 的值非零(不为假)时,循环将一直执行,直到b=0退出循环。
  • 程序陷入“死循环”时,可以用Ctrl+C退出程序

  • 循环相关用法:

    • 元组解包(tuple unpacking)
      • Python 中一种常见的交换变量值的写法,例如:a, b = b, a % b
        • 等号两边分开看且分别对应,即为一组a,b 一组(b, a % b)。具体步骤:
          • 计算 a % b,得到余数。
          • 创建一个包含两个元素的元组 (b, a % b)
          • 将元组中的值按顺序分别赋给左侧的变量 ab
        • 即,余数给b,再把之前的b给a。这个等于号相当于两步赋值同时发生,避免了将余数给b后,需要前一步的b赋值给a时b已经改变的尴尬。
  1. 使用dict(字典,在其他语言中也称为map)和set
  • ❗字典方法使用前提:dict的key必须是不可变对象

    • 在Python中,字符串、整数等都是不可变的,而list是可变的,就不能作为key
    • 通过key计算位置的算法称为哈希算法(Hash)。
  • 注意:返回None的时候Python的交互环境不显示结果。

  • dict内部存放的顺序和key放入的顺序是没有关系的。键值对是固定的。

  •   d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    
  • 操作

    • 删除一个key,对应的value也会从dict中删除: d.pop(‘Bob’)
  • 和list比较,dict有以下几个特点:

    1. 查找和插入的速度极快,不会随着key的增加而变慢;
    2. 需要占用大量的内存,内存浪费多。

  • set和dict类似,也是一组key的集合,但不存储value。

    • 由于key不能重复,所以,在set中,没有重复的key。

    • 要创建一个set,需要提供一个list作为输入集合(重复元素在set中自动被过滤):

      >>> s = set([1, 2, 3])
      >>> s
      {1, 2, 3}
      
    • set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

    •   >>> s1 = set([1, 2, 3])
        >>> s2 = set([2, 3, 4])
        >>> s1 & s2 #交集  {2, 3}
        >>> s1 | s2 # 并集  {1, 2, 3, 4}
      
  • 操作

    • 添加:s.add(4)
    • 删除:s.remove(4)
  • set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

💡对比

  • 需要注意的是,listtupledictset是不同的数据类型,它们之间不能直接进行转换。如果需要将它们之间进行转换,需要使用相应的转换函数,如list()tuple()dict()set()
数据类型属性表示方法示例操作特殊
list(列表)有序的可变序列[],L=[1,2,3]索引、切片、添加、删除、修改
tuple(元组)有序的不可变序列[],t=(1,2,3)索引、切片等操作
不支持添加、删除、修改
存储不可变的数据,如坐标、颜色等。
dict(字典)无序的键值对集合{}
每个键值对之间用:
键值对之间用,
d={'张三':1, ’王五':2, '赵六':3}通过键来访问值,也支持添加、删除、修改存储具有映射关系的数据,如姓名和电话号码的对应关系。
set(集合)无序的元素集合{},s={1,2,3}支持添加、删除、交集、并集、差集通常用于去重、交集、并集等操作。
  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值