变量

  • 变量是计算机中内存的一块区域,用类似专门存储固定范围的值
  • 变量的命名法

    • 变量名由字⺟、数字、下划线组成要符合标识符的命名规范
    • 不能以数字开头
    • 不能使⽤关键字

      数值类型

      整数

  • 变量本身没有数据类型的概念

  • 是由所有整数组成的,类型为int,属于不可变序列,例如a=-3、b=256等
  • 常见的整数都以十进制来表示的,当然还有以二进制、八进制、十六进制形式表示的
  • 注意:进制越⼤表现形式越短,出现其他进制是为了更⽅便的表示数据

    产生进制的原因就是为了方便读取数据 二进制逢二进一,用0b前缀和0-1表示,例如0b11。python 中用 bin() 将十进制转为二进制 二进制转换成十进制的换算:乘二次幂的过程 例如0b110转换成十进制为02+12+1*2=6 十进制转换成二进制的换算:除二取余的过程 例如3转换成二进制为 3/2=1…1 1/2=0…1 0/2=0…0 故为0b011 八进制逢八进一,用0o前缀和0-7表示,例如0o45。python 中用 oct() 将十进制转为八进制 十六进制逢十六进一,用0x前缀和0-9,a-f表示,例如:0xff00。python 中使用 hex() 将十进制转为十六进制

  • 整数的内存:整数长度为32位,计算机的不同其id值也不同,但相邻的数是连续分配空间的。

  • 小整数对象池:范围是-5——256,可以方便调用,增加运行速度,避免重复生成。
  • 整数缓冲区:意思是刚刚被删除的整数不会立刻被回收,而是在后台内缓冲一段时间等待下一次被调用。值得注意的是,在交互模式中不能演示出效果,在pycharm中能够实现。

    浮点数

  • 浮点数是由所有的小数组成,它是float类型。例如a=18.3、b=-0.06等

  • 对于很小的数或很大的数,可以用科学记数法表示。如3020000=3.02e6、0.00096=9.6e-4
  • 整数与浮点数间可以相互转化。例如int(3.5)=3、int(-9.6)=-10、float(3)=3.0、float(-9)=-9.0等

    复数

  • 由实部和虚部组成,形如a+bj,表示成complex(a,b)

  • 复数中的实部和虚部都是浮点类型

    数学计算

    在数学计算过程中,除了常见的加减乘除外,更多的运算需要导入math库,而不需要安装。

    1. import math #导入math库
    2. math.ceil() #向上取整
    3. math.floor() #向下取整
    4. math.pow(x,y) #等同于x**y,返回的是浮点数
    5. abs(x) #对x取绝对值,复数是是对其取模
    6. round(x) #进行四舍六入五取偶

    对上面的代码进行举例说明,进入交互模式下的ipython:
    image.png image.png

    布尔

  • 布尔用bool表示,它只有两个值,分别是True和False,这里面类型是固定,其它写法均错误。

  • 空值:不是布尔类型,而是特殊的值,用None表示,且手写方式唯一。空值类型是None Type,因此不能理解为0,也不能理解为布尔类型,但None的布尔值永远为False。
  • 非空字符串的布尔值永远为True。

与相面相同的是,进入ipython中进行例子说明:
image.png image.png

字符串

创建与存储

  • 字符串是由数字、字母、下划线等组成的一串字符,用str表示。
  • 字符串的创建:
    • 采用单引号或双引号即可,注意的是这里面单双引号不能混用,相同引号之间不能够嵌套;
    • 利用三引号创建的是多行字符串,它能够保留文本格式和文字样式。
  • 常见转义字符: \n—>换行符 \t—>制表符 \—>\ \’—>’ \’’—>’’
  • 存储方式中整数在内存中占一个字节,字符串是把所有内容拆开单独存储

image.png

索引与切片

  • 字符串可以通过下标将里面的元素取出,下标也是索引,左右到右默认从0开始。
  • 切片就是 slice(start, stop, [, step]),这里面起始位置默认为0、结束位置默认最后一个元素,且满足左闭右开;可选参数:步长,默认为1。
  • 在索引和切片时需要知道字符串的长度时,可用len()获取。

image.png

运算

  • 拼串:将两个字符串相加即可实现拼串
  • 参数的传递
  • 字符串格式化
    • 在创建字符串时,在字符串中指定占位符,如%s 字符串占位 %f 浮点数占位 %d 整数占位
    • s.format()
    • python 3.6以后出现 f

具体的形式可以看下面的例子:
image.png

字符串常见操作

  1. S.find(sub) --> 返回该元素最小的索引
  2. S.index(sub) --> 返回该元素最小的索引
  3. S.replace(old, new[, count]) --> 替换
  4. S.split(sep=None) --> sep来分割字符串,并返回列表。sep默认为None,分割默认为空格
  5. S.startswith(prefix[, start[, end]]) --> 判断字符串是否以前缀开始,返回为bool值。
  6. S.endswith(suffix[, start[, end]]) --> 判断字符串是否以尾缀结束,返回为bool值。
  7. S.lower() --> 将字符串全部转为小写
  8. S.upper() --> 将字符串全部转为大写
  9. S.strip([chars]) --> 默认去掉字符串左右的空格
  10. S.isalpha() --> 判断字符串是否全为字母,返回的是bool
  11. S.isdigit() --> 判断字符串是否全为数字,返回的是bool
  12. S.isalnum() --> 判断字符串是否全为数字或者字母,不存在特殊字符,返回的是bool
  13. S.join(iterable) --> 将序列中的元素以指定的字符连接生成一个新的字符串
  1. S.find()

    1. s1 = 'xiaopang dese'
    2. print(s1.find('i')) # 1 返回索引,且最小
    3. print(s1.find('a')) # 2
    4. print(s1.find('c')) # -1 没有,且不会报错
    5. print(s1.rfind('a')) # 5 r代表右边
  2. S.index()

  3. S.replace(old, new[, count])
  4. S.split
  5. S.startswith(prefix[, start[, end]]) —> 判断字符串是否以前缀开始,返回为bool值。 S.endswith(suffix[, start[, end]]) —> 判断字符串是否以尾缀结束,返回为bool值。
  6. S.lower()、S.upper() —> 将字符串全部转为小写或大写

    1. s = 'Pangge and Fagao'
    2. print(s.upper()) # PANGGE AND FAGAO
    3. print(s.lower()) # pangge and fagao
  7. S.strip([chars]) —> 默认去掉字符串左右的空格

  • 左面去空格lstrip()
  • 右面去空格rstrip()
  1. 其他
  • len()获取字符串的长度 max()字符串中的最大值 min()字符串中的最小值
  • ord()将字符转为对应ASCII值 chr()将ASCII值转为对应的字符

    转义字符

    | \n | 换行符 | | —- | —- | | \t | 横向制表符 | | \v | 纵向制表符 | | \r | 回车符 | | \f | 换页符 | | \0 | 空值 | | \‘ | 单引号(’) | | \‘’ | 双引号(’’) | | \\ | \ | | \a | 响铃 | | \b | 退格 |

小练习

  1. 当输入y或Y打印进入卸载,当输入n或N打印退出程序,输入其它则打印输入不在选项范围之内。

image.png

  1. 完成字符串的逆序以及统计:设计一个程序,要求只能输入长度低于20的字符串,当满足需求时,则打印出字符串长度以及使用切片逆序打印出字符串;当不满足需求时,打印用户重新输入 。

image.png

  1. ‘3’+ ‘4’ 的结果是什么?

‘3’ + ‘4’的结果是’34’,这里’3’ 和 ‘4’都是字符串,它们相加意味着相互拼接,而不是数值上的相加。