廖雪峰Python学习笔记1
Python基础
文章目录
- 一、基础语法规范
- 二、数据类型
- 三、字符串与编码
- 四、条件判断
- 五、循环
一、基础语法规范
1.用#作为代码注释
2.当语句以冒号:结尾时,缩进的语句视为到麻花,缩进**使用4个空格**
3.Python程序大小写敏感
二、数据类型
- 整数
- 浮点数
- 字符串:用单引号’'或双引号"“括起的任意文本,多行字符串用”“” “”"
- 转义字符:\ ,可以用来转义很多特殊字符,在行尾时表示续行符。比如\n表示换行,\t表示制表符,\表示的字符就是反斜杠符号\。
- 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许在字符串前加r,表示内部的字符串默认不转义。
>>> s = "换行符是\\n。" >>> print(s) 换行符是\n。>>>print(r'''hello,\n world''') hello,\n world
布尔值:一个布尔值只有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')
空值:用None表示
列表(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'
元组(tuple): tuple一旦初始化后,每个元素指向永远不变,因此没有列表的append()、insert()、pop()方法,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
#元组的定义 t = (1,2) t = () #空元组 t = (1,) #只有一个元素的元组,必须加上逗号
字典(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.
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)
三、字符串与编码
- 字符编码
- 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个字节。
- 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
- 格式化字符串
%运算符就是用来格式化字符串的。在字符串内部,%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("严重肥胖")
五、循环
for…in循环,依次把list或tuple中的每个元素迭代出来。
#计算0-100的整数之和 sum = 0 for x in range(101):sum = sum + x print(sum)
while循环,只要条件满足,就不断循环,条件不满足时退出循环
# 计算0到100以内的奇数循环 sum = 0 n = 99 while n > 0:sum = sum + nn = n - 2 print(sum)
关键词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相关推荐
- 廖雪峰python学习笔记之高级特性
写在前面 寒假时本科舍友的一句话点醒梦中人-你的python基础还没弄明白吧!猛地一想好像确实如此,还停留在随插随用的程度,并且对于迭代器,函数式编程等等,没有深刻理解,所以项目做起来也是空中楼阁,所 ...
- 【廖雪峰Python学习笔记】错误、调试、测试
文章目录 错误处理 调试 单元测试unitcase 文档测试 错误类型 程序编写问题bug – 字符类型错误等 用户输入错误 – 输入不符合规定的字符串 异常,程序运行时无法预测 – 磁盘满了,无法写 ...
- 【廖雪峰Python学习笔记】面向对象编程OOP
面向对象编程 OOP:Object Oriented Programming 程序的基本单元:对象 [ = 数据 + 操作数据的函数] [属性 + 方法] 三大特点:数据封装.继承和多态 OPP中的计 ...
- 【廖雪峰Python学习笔记】函数式编程
Functional Programming 高阶函数 返回函数 匿名函数 装饰器 偏函数 高阶函数 面向过程的程序设计: 把大段代码拆成函数,通过一层层函数调用,可将复杂任务分解成若干简单的任务 函 ...
- 【廖雪峰Python学习笔记】list tuple dict set
列表 元组 字典 集合 创建 l = [1, 'a', [1, 3], True] t = (1, ) d = {'key' : 'value'} s = set([1, 2, 4, 2, 1]) 索 ...
- 【廖雪峰Python学习笔记】字符串与编码
字符串与编码 三种字符编码 ASCII编码 :计算机由美国人发明,最早只有127个字符编码-- 大小写英文字母.数字和符号 Unicode:把中文.日文.韩文等所有语言统一到一套编码中,2-4byte ...
- 廖雪峰Python学习笔记——类和实例
Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...
- 廖雪峰python学习笔记——函数式编程
一个简单粗暴的内置函数: reduce()和map()的区别: map()是将函数依次作用到每个参数上,而reduce()相当于是迭代,而且每次都必须是两个参数. 用reduce()和map完成str ...
- 廖雪峰Python学习笔记2
Python基础 文章目录 一.定义函数 二.函数参数 三.递归函数 一.定义函数 格式:定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返 ...
最新文章
- SQL Server查询性能优化——堆表、碎片与索引(一)
- spring异常Unsatisfied dependency expressed through constructor parameter 0
- python类修饰器_《Python有什么好学的》之修饰器
- 【29.42%】【POJ 1182】食物链
- POJ 3225 线段树+lazy标记
- c#网页自动化脚本语言,c# – 创建用于创建网页的脚本语言
- pytorch查缺补漏
- RMSE、MAE和SD的基本概念
- c++ 读取html,C++ 使用MSHTML分析html 转发
- vs番茄助手的方便功能和便捷快捷键介绍
- android手机用Termux安装archlinux
- 良心安利芒种节气海报设计素材
- 开源OceanBase如何与Prometheus与Grafana监控结合
- 基因家族分析②:linux下blast的安装和使用
- 音频编码和视频编码基础
- 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)
- php 表单必选改为选填,织梦dedecms自定义表单选项必填修改解决方法
- Unity开发Hololens2—环境配置和官方案例发布并部署到设备上
- Linux下ffmpeg添加 x265
- 6-4 学生成绩链表处理 (20分) 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: ```cpp struct stu
热门文章
- 家装行业怎么做网络品牌推广?
- 怎样将redis写入mysql_使用redis做mysql缓存
- 金华计算机应用能力考试,金华2015年全国计算机应用能力考试安排
- 发现安全隐患的“火眼金睛” —— 新华三荣获2016年漏洞信息报送突出贡献单位...
- 总结GLM库中glm::transform(位移), glm:scale(缩放), glm::rotate(旋转)
- SpringBoot之缓存篇
- 下一代视觉化工具:能够应用于大规模数据分析(综述部分翻译)
- Unity龙骨动态加载动画
- golang defer实现
- 不用动手就能清洁美白你的牙齿,360°无死角微笑一百分丨钛空智慧星球推荐...