Python基础

文章目录

  • 一、基础语法规范
  • 二、数据类型
  • 三、字符串与编码
  • 四、条件判断
  • 五、循环

一、基础语法规范

1.用#作为代码注释
2.当语句以冒号:结尾时,缩进的语句视为到麻花,缩进**使用4个空格**
3.Python程序大小写敏感

二、数据类型

  1. 整数
  2. 浮点数
  3. 字符串:用单引号’'或双引号"“括起的任意文本,多行字符串用”“” “”"
  • 转义字符:\ ,可以用来转义很多特殊字符,在行尾时表示续行符。比如\n表示换行,\t表示制表符,\表示的字符就是反斜杠符号\。
  • 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许在字符串前加r,表示内部的字符串默认不转义。
    >>> s = "换行符是\\n。"
    >>> print(s)
    换行符是\n。>>>print(r'''hello,\n
    world''')
    hello,\n
    world
    
  1. 布尔值:一个布尔值只有True、False两种值,布尔值可以用and、or、not运算

    >>> False and False
    False
    >>> 5 > 3 and 3 > 1
    True
    >>> True or False
    True
    >>> not 1 > 2
    True
    >>>if age >= 18:print('adult')else:print('teenager')
    
  2. 空值:用None表示

  3. 列表(list):list是一种有序的集合,可以随时添加和删除其中的元素,list中元素的数据类型可以不同

    #设置列表
    animals = ['dog','cat','pig']#获取列表的元素个数
    len(animals)      #访问列表中的元素——用索引,从0开始,到len(animals)-1结束
    annimals[0]#往列表中追加元素
    animals.append('rabbit')#将元素插入到指定位置,如索引号为1的位置
    animals.insert(1,'sheep')#删除指定位置的元素
    animals.pop(1)#替换指定位置元素的值
    animals[1] = 'monkey'
    
  4. 元组(tuple): tuple一旦初始化后,每个元素指向永远不变,因此没有列表的append()、insert()、pop()方法,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

    #元组的定义
    t = (1,2)
    t = ()   #空元组
    t = (1,)   #只有一个元素的元组,必须加上逗号
    
  5. 字典(dict): 使用键-值(key-value)存储,具有极快的查找速度,在放进去的时候,必须根据key算出value的存放位置,一个key只能对应一个value,这样,取的时候才能根据key直接拿到value。

    #字典的定义
    d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}#插入数据
    d['Adam'] = 67#修改数据
    d['Bob'] = 78#key不存在的话将数放进字典就会报错,通过get()方法判断
    d.get('Thomas',-1)  # 如果key:Thomas不在字典内,返回-1#删除字典的数据,删除key即可
    d.pop('Bob')
    

    dict的key必须是不可变对象。因为dict根据key来计算value的存储位置(哈希算法),要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key.

  6. set:一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等。

    #定义set,需要提供一个list作为输入集合
    >>> s = set([1, 1, 2, 2, 3, 3])
    >>> s
    {1, 2, 3}
    #添加元素
    >>> s.add(4)
    #删除元素
    >>> s.remove(4)
    

三、字符串与编码

  1. 字符编码
  • ASCII
    由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
    在这里,每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,每8个bit组成一个字节,这是计算机中最小的存储单位。
  • GBK 和 GB2312
    中文编码
  • Unicode
    Unicode把所有语言都统一到一套编码里,解决乱码问题。最常用的是UCS-16编码,用两个字节表示一个字符
    但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
    所以,出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
  1. Python字符串
    对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

    >>> ord('A')
    65
    >>> ord('中')
    20013
    >>> chr(66)
    'B'
    >>> chr(25991)
    '文
    

    由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

    #对bytes类型的数据用带b前缀的单引号或双引号表示
    >>> x = b'ABC'#以Unicode表示的str通过encode()方法可以编码为指定的bytes
    >>> 'ABC'.encode('ascii')
    b'ABC'
    >>> '中文'.encode('utf-8')
    b'\xe4\xb8\xad\xe6\x96\x87'#要把bytes变为str,就需要用decode()方法
    >>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
    '中'#计算str包含多少个字符
    >>> len('ABC')
    3
    >>> len('中文')
    2#计算bytes的字节数
    >>> len('中文'.encode('utf-8'))
    6
    
  2. 格式化字符串
    %运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,%d表示用浮点数替换。
    有几个占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个占位符,变量或值的括号可以省略。
# -*- coding: utf-8 -*-#格式化整数和浮点数还可以指定是否补0和整数与小数的位数
>>> print('%2d-%02d' % (3, 1))
3-01>>> print('%.2f' % 3.1415926)
3.14>>> s1 = 72
>>> s2 = 85
>>> r = (s2 - s1)*100/s1
#字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%
>>> print('小明成绩提升了 %.2f %%' % r)
小明成绩提升了 18.06 %#format()方法,可以接受不限个数的参数,位置也可以不按顺序
#普通用法,对应的{}依次替换
>>>print("还有{}天放假,我还在坚持学习{}".format(2, "Python"))
例句:还有2天放假,我还在坚持学习Python#设置位置(索引)格式化,format函数中,按索引的参数替换字符串
>>> print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))
Hello, 小明, 成绩提升了 17.1%#指定替换参数的值
>>>str = "{who}坚持学习{language}, 取得了{what}的成绩".format(who="张三", language="Python", what="优异")
>>>print(str)
张三坚持学习Python, 取得了优异样的成绩#f-string方法
>>> r = 2.5
>>> s = 3.14 * r ** 2
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62

四、条件判断

bmi1=input("请输入你的bmi指数")bmi=float(bmi1)if bmi<18.5:print("过轻")elif 18.5<=bmi<=25:print('正常')elif 25<=bmi<=32:print("肥胖")elif bmi>=32:print("严重肥胖")

五、循环

  1. for…in循环,依次把list或tuple中的每个元素迭代出来。

    #计算0-100的整数之和
    sum = 0
    for x in range(101):sum = sum + x
    print(sum)
    
  2. while循环,只要条件满足,就不断循环,条件不满足时退出循环

    # 计算0到100以内的奇数循环
    sum = 0
    n = 99
    while n > 0:sum = sum + nn = n - 2
    print(sum)
    
  3. 关键词break和continue
    break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
    注意:大多数循环并不需要用到break和continue语句

    #提前结束循环,打印出1~10后,紧接着打印END
    n = 1
    while n <= 100:if n > 10: # 当n = 11时,条件满足,执行break语句break # break语句会结束当前循环print(n)n = n + 1
    print('END')#只打印奇数
    n = 0
    while n < 10:n = n + 1if n % 2 == 0: # 如果n是偶数,执行continue语句continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行print(n)
    

廖雪峰Python学习笔记1相关推荐

  1. 廖雪峰python学习笔记之高级特性

    写在前面 寒假时本科舍友的一句话点醒梦中人-你的python基础还没弄明白吧!猛地一想好像确实如此,还停留在随插随用的程度,并且对于迭代器,函数式编程等等,没有深刻理解,所以项目做起来也是空中楼阁,所 ...

  2. 【廖雪峰Python学习笔记】错误、调试、测试

    文章目录 错误处理 调试 单元测试unitcase 文档测试 错误类型 程序编写问题bug – 字符类型错误等 用户输入错误 – 输入不符合规定的字符串 异常,程序运行时无法预测 – 磁盘满了,无法写 ...

  3. 【廖雪峰Python学习笔记】面向对象编程OOP

    面向对象编程 OOP:Object Oriented Programming 程序的基本单元:对象 [ = 数据 + 操作数据的函数] [属性 + 方法] 三大特点:数据封装.继承和多态 OPP中的计 ...

  4. 【廖雪峰Python学习笔记】函数式编程

    Functional Programming 高阶函数 返回函数 匿名函数 装饰器 偏函数 高阶函数 面向过程的程序设计: 把大段代码拆成函数,通过一层层函数调用,可将复杂任务分解成若干简单的任务 函 ...

  5. 【廖雪峰Python学习笔记】list tuple dict set

    列表 元组 字典 集合 创建 l = [1, 'a', [1, 3], True] t = (1, ) d = {'key' : 'value'} s = set([1, 2, 4, 2, 1]) 索 ...

  6. 【廖雪峰Python学习笔记】字符串与编码

    字符串与编码 三种字符编码 ASCII编码 :计算机由美国人发明,最早只有127个字符编码-- 大小写英文字母.数字和符号 Unicode:把中文.日文.韩文等所有语言统一到一套编码中,2-4byte ...

  7. 廖雪峰Python学习笔记——类和实例

    Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...

  8. 廖雪峰python学习笔记——函数式编程

    一个简单粗暴的内置函数: reduce()和map()的区别: map()是将函数依次作用到每个参数上,而reduce()相当于是迭代,而且每次都必须是两个参数. 用reduce()和map完成str ...

  9. 廖雪峰Python学习笔记2

    Python基础 文章目录 一.定义函数 二.函数参数 三.递归函数 一.定义函数 格式:定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返 ...

最新文章

  1. SQL Server查询性能优化——堆表、碎片与索引(一)
  2. spring异常Unsatisfied dependency expressed through constructor parameter 0
  3. python类修饰器_《Python有什么好学的》之修饰器
  4. 【29.42%】【POJ 1182】食物链
  5. POJ 3225 线段树+lazy标记
  6. c#网页自动化脚本语言,c# – 创建用于创建网页的脚本语言
  7. pytorch查缺补漏
  8. RMSE、MAE和SD的基本概念
  9. c++ 读取html,C++ 使用MSHTML分析html 转发
  10. vs番茄助手的方便功能和便捷快捷键介绍
  11. android手机用Termux安装archlinux
  12. 良心安利芒种节气海报设计素材
  13. 开源OceanBase如何与Prometheus与Grafana监控结合
  14. 基因家族分析②:linux下blast的安装和使用
  15. 音频编码和视频编码基础
  16. 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)
  17. php 表单必选改为选填,织梦dedecms自定义表单选项必填修改解决方法
  18. Unity开发Hololens2—环境配置和官方案例发布并部署到设备上
  19. Linux下ffmpeg添加 x265
  20. 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu

热门文章

  1. 家装行业怎么做网络品牌推广?
  2. 怎样将redis写入mysql_使用redis做mysql缓存
  3. 金华计算机应用能力考试,金华2015年全国计算机应用能力考试安排
  4. 发现安全隐患的“火眼金睛” —— 新华三荣获2016年漏洞信息报送突出贡献单位...
  5. 总结GLM库中glm::transform(位移), glm:scale(缩放), glm::rotate(旋转)
  6. SpringBoot之缓存篇
  7. 下一代视觉化工具:能够应用于大规模数据分析(综述部分翻译)
  8. Unity龙骨动态加载动画
  9. golang defer实现
  10. 不用动手就能清洁美白你的牙齿,360°无死角微笑一百分丨钛空智慧星球推荐...