目录
Python基础语法
当语句以冒号:结尾是,缩进的语句视为代码块 使用4个空格进行缩进
python是大小写敏感的
数据类型
在python中,能够直接处理的数据类型有:
- 整数
python的整数没有大小(长度)限制,浮点数也无,超出一定范围就直接表示为inf(无限大)
- 浮点数
表示时把10用e替代 1.23*10^9就是1.23e9 0.000012写成1.2e-5
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法也是精确的)而浮点数运算则可能会有四舍五入的误差
除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
地板除(//):两个整数的除法永远是整数,其结果只取整数部分
- 字符串
字符串用" "或' '来表示,若字符串中有引号,岔开使用
如果字符串内两个都包括,可使用转义字符
eg: 转义符改变原本用法,直接看做引号
\n 换行 \t 制表符 \\表示的字符就是\ (字符\本身转义) r' '表示' '内部的字符串默认不转义
- 布尔值 Ture/False 布尔值也可用and与、or或、not非运算
- 空值 None为1个特殊的空值,不能理解为0,0是有意义的
python还提供了列表、字典等多种数据类型,也允许创建自定义数据类型
变量与常量
变量不仅可以是数字,还可以是任意数据类型
同一个变量可以反复赋值,而且可以是不同类型的变量
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言
静态语言在定义变量时必须指定变量类型,如果赋值时类型不匹配就会报错,例如Java时静态语言 错误:int a=123; a=“ABC”
理解变量在计算机内存中的表示也非常重要:
当写下a=“ABC”时,python解释器干了两件事:
- 在内存中创建了一个‘ABC’的字符串
- 在内存中创建了一个名为a的变量,并把它指向‘ABC’
当把a赋值给b时,实际上是把变量b指向变量a所指向的数据
常量:不能变的变量,通常用全部大写的变量名表示常量 可以强行改变但最好不要
字符串和编码
字符串也是一种数据类型,但字符串比较特殊的是还有一个编码问题
- ascll 最早只有127个字母被编到计算机里(美) GB2312(中文) 1个字节
- Unicode 把所有语言都统一到一套编码里,避免乱码问题 2个字节
- UTF-8 可变长编码 英文字母1字节 汉子3字节 节省空间
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或传输时,转换为UTF-8编码
Python的字符串
python3中,字符串是以Unicode编码的,字符串支持多种语言
ord()函数获取字符串的整数表示
chr()函数把编码转换为对应字符
len()计算str的字符数,如果换成bytes,len()计算字节数
格式化
在Python中,采用的格式化方式和C语言是一致的,用%实现
在字符串内部,%s表示用字符串替换,%d表示用整数替换
若字符串里面的%就是一个普通字符,这时就需要转义,用%%来表示一个%
使用list[ ]和tuple( )
list(列表)[ ]是python内置的一种数据类型,list里面的元素的数据类型可以不同,一个list1也可以是另一个list2的元素,注意不管list1长度多少,在list2中只占一个位置
用len()获取list中元素的个数,空list的长度为0
用索引[ ]来访问list中每一个位置的元素,索引从0开始
用[len()-1]或[-1]来获取最后一个元素的位置
list是一个可变的有序表,可以随时添加和删除其中的元素
使用append往list中追加元素到末尾
使用insert把元素插入到指定位置,插入几写几
使用pop(i)删除list指定位置的元素,其中i是索引位置,括号中无变量时,即pop()为删除list末尾元素
tuple(元组)( )是另一种有序列表,tuple一旦初始化就不能更改
它没有append()、insert()这样的方法,它的索引[ ]可以用来获取元素,但不能赋值成另外的元素
那么不可变有什么意义?tuple因为不可变,代码更安全
tuple的陷阱!!!:当你定义一个tuple时,它的元素必须被确定下来
如果定义一个只有1个元素的tuple,后面加一个逗号来消除歧义。
t=(1)代表1这个数字,因为括号既可以表示tuple,又可以表示数学公式中的小括号,因此产生了歧义,python规定,这种情况下按小括号进行计算。
一个“可变的”tuple例子
tuple定义后并不可变,但若tuple元组中有list元素,其中的list元素可变
相当于改变了tuple,但tuple中的list并没有改变,只是改变了list中的元素【】
tuple不变:tuple中的每个元素指向永远不变
条件判断
if语句执行特点,从上往下判断,上面是true则不会继续往下执行
if x:
print('True')
只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False
input()读取用户的输入 进行条件判断时可能会出现问题
input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换为整数,使用int()函数。
如果int()函数发现一个字符串不是合法的数字时就会报错,程序退出
循环(for...in / while)
for...in:依次把list和tuple中的每个元素迭代出来
for x in...循环就是把每个元素代入变量x,然后执行缩进块的语句
Number=[12,34,67]
for num in Number:
print(num)
比如计算1-100的整数之和,使用range()函数可以生产一个整数系列(range(5)代表0-4)
也可以通过list()函数转换为list
-
range(start, stop[,step])
- start:计数从start开始,默认是从0开始。
stop:计数到stop结束,但是不包括stop。
step:步长,默认为1。
while循环
只要条件满足,就不断循环,条件不满足退出循环
试着写一个死循环:
提问:如何用for...in写一个死循环
dict和set
Python内置字典:dict(dictionary),其他语言中称为map
使用键-值(key-value)存储,具有极快的查找速度
Eg:假设要根据学生的名字查找对应的成绩
1、用list实现(需要两个list)
给定一个学生名字,要现在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长
2、用dict实现
设置一个“名字”-“成绩”对照表,直接根据名字查成绩