【学习笔记】Python 基础知识 - Day2

编程基础概念

链式赋值,系列解包赋值,常量

1.链式赋值:
x = y = 1

2.系列解包赋值:
a,b,c = 1,2,3
a,b = b,a(a、b 值互换)

3.常量
Python 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则(例:MAX_SPEED),以及在程序的逻辑上不对常量的值作出修改。

内置数据类型,基本算术运算符

1.最基本内置数据类型:整数,浮点型,布尔型,字符串型

2.数字和基本运算符
在这里插入图片描述
使用 divmod() 函数同时得到商和余数:

divmod(13,3)
# 结果:(4,1)

整数

1.Python 的进制
(1)十进制
(2)二进制:0b 或 0B,0 1
(3)八进制:0o 或 0O,0 1 2 3 4 5 6 7
(4)十六进制:0x 或 0X,0 1 2 3 4 5 6 7 8 9 a b c d e f

2.使用 int() 实现类型转换
(1)浮点数直接舍去小数部分
(2)布尔值True 转为1,False 转为0
(3)字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错

3.自动转型
整数和浮点数混合运算时,表达式结果自动转型成浮点数

4.Python3 中可以做超大数的计算,而不会造成“整数溢出”,这也是Python 特别适合科学运算的特点

浮点数

1.浮点数,称为 float。数字在内存中按照科学计数法存储,比如 3.14 表示成:314E-2 或者 314e-2

2.类型转换和四舍五入(不会改变原有值,而是产生新的值)
(1)可以使用 float() 将其他类型转化成浮点数
(2)整数和浮点数混合运算时,表达式结果自动转型成浮点数
(3)round() 可以返回四舍五入的值

3.增强型赋值运算符
在这里插入图片描述
注意:“+=”中间不能加空格!

时间的表示

1.计算机中时间的表示是从 “1970 年1 月1 日00:00:00” 开始,以毫秒(1/1000 秒)进行计算
在这里插入图片描述
2.python 中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000 毫秒)精度的浮点值

布尔值,比较运算符,逻辑运算符

1.布尔值:True 是 1,False 是 0

2.比较运算符:==,!=,>,<,>=,<=

3.逻辑运算符
在这里插入图片描述

同一运算符,整数缓存问题

1.is 比较两个对象的 id 是否相等,是否指向同一个内存地址

2.== 比较的是两个对象的 value 是否相等,默认调用对象的__eq__() 方法

3.小整数对象在全局解释器范围内被放入缓存供重复使用,对应关系如下表:

模式小整数对象的范围
命令行;Jupyter[ -5 , 256 ]
文件;Pycharm[ -5 , 任意正整数 ]
# Jupyter
a = 1
b = 1
a is b
# 结果:True
# Jupyter
a = 300
b = 300
a is b
# 结果:False

4.is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is

基本运算符,运算符优先级问题

1.基本运算符
(1)基本运算符
在这里插入图片描述
(2)比较运算符可以连用

(3)位操作
在这里插入图片描述
(4)加法操作
列表、元组等合并:[10,20,30] + [5,10,100] → [10,20,30,5,10,100]

(5)乘法操作
列表、元组等复制:[10,20,30] * 3 → [10,20,30,10,20,30,10,20,30]

2.运算符优先级

如下优先级,从高到低:
在这里插入图片描述
实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织
(1)乘除优先于加减
(2)位运算和算术运算 > 比较运算符 > 赋值运算符 > 逻辑运算符

字符串

unicode字符集,三种创建字符串方式,len()

1.字符串基本特点
(1)字符串的本质是:字符序列
(2)Python 的字符串是不可变的,我们无法对原字符串做任何修改

2.字符串的编码
(1)Python3 的字符默认就是16位 Unicode 编码,ASCII 码是Unicode 编码的子集
(2)使用内置函数 ord() 可以把字符转换成对应的Unicode 码;使用内置函数 chr() 可以把十进制数字转换成对应的字符

3.引号创建字符串
(1)通过单引号或双引号创建字符串。使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符

str1 = "I'm a teacher"
str2 = 'My name is "Tom"'

(2)连续三个单引号或三个双引号,可以帮助我们创建多行字符串

str = '''I love you
You love me'''

4.空字符串和 len() 函数
(1)Python 允许空字符串的存在,不包含任何字符且长度为0
(2)len() 用于计算字符串含有多少个字符

转义字符,字符串拼接、复制,input() 获得键盘输入

1.转义字符
在这里插入图片描述
2.字符串拼接
(1)使用 “+” :如果 “+” 两边都是字符串,则拼接;如果 “+” 两边都是数字,则加法运算;如果 “+” 两边类型不同,则抛出异常
(2)可以将多个字面字符串直接放到一起实现拼接

a = 't1''t2'
a
# 输出:'t1t2'

3.字符串复制:使用 * 可以实现字符串复制

4.不换行打印

print('abc', end = '')
print('abc')
# 输出:'abcabc'

5.从控制台读取字符串

name = input('请输入您的名字:')
# 请输入您的名字:abc
name
# 'abc'

replace()替换,内存分析

1.replace() 实现字符串替换
字符串是不可改变的,我们通过 [ ] 可以获取字符串指定位置的字符,但是我们不能改变字符串

a = 'abcdefghijklmnopqrstuvwxyz'
a = a.replace('c','高')
a 
# a = 'ab高defghijklmnopqrstuvwxyz'

整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串。内存图如下:
在这里插入图片描述

切片slice操作,逆序

1.字符串切片 slice 操作
(1)切片 slice 操作可以让我们快速的提取子字符串,标准格式为:[起始偏移量start:终止偏移量end:步长step],终止偏移量大于字符串长度时默认打印至最后一个字符而不会报错
(2)逆序打印:str [ : : -1]

split()分割,join()合并,join()效率测试

1.split() 可以基于指定分隔符,将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)

>>> a = "to be or not to be"
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']
>>> a.split('be')
['to ', ' or not to ', '']

2.join() 用于将一系列子字符串连接起来

>>> a = ['sxt','sxt100','sxt200']
>>> '*'.join(a)
'sxt*sxt100*sxt200'

3.拼接字符串时,join() 的效率高于用拼接符 “+”

驻留机制,内存分析,成员操作符

1.字符串驻留
对于符合标识符规则的字符串(仅包含下划线(_)、字母
和数字),将相同字符串赋予不同变量时,每个变量引用的是同一个对象,id 地址相同;其余情况下变量引用的是不同对象

>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> c = "dd#"
>>> d = "dd#"
>>> c is d
False

2.成员操作符
in / not in 关键字:判断某个字符、子字符串是否存在于字符串中

常用查找方法,去除首位信息,大小写转换,排版

1.常用查找方法
在这里插入图片描述
在这里插入图片描述
2.我们可以通过 strip() 去除字符串首尾指定信息,通过 lstrip() 去除字符串左边指定信息,rstrip() 去除字符串右边指定信息

3.大小写转换
在这里插入图片描述
在这里插入图片描述
4.格式排版
center()、ljust()、rjust() 这三个函数用于对字符串实现排版

>>> a="SXT"
>>> a.center(10,"*")
'***SXT****'
>>> a.center(10)
' SXT '
>>> a.ljust(10,"*")
'SXT*******'

5.其他方法
(1)isalnum() 是否为字母(含汉字)或数字
(2)isalpha() 检测字符串是否只由字母(含汉字)组成
(3)isdigit() 检测字符串是否只由数字组成
(4)isspace() 检测是否为空白符(包括:制表符、换行符、空格)
(5)isupper() 是否为大写字母
(6)islower() 是否为小写字母

format格式化,数字格式化操作

1.format() 基本用法

>>> a = "名字是:{0},年龄是:{1}"
>>> a.format("高希希",6)
'名字是:高希希,年龄是:6'
>>> c = "名字是{name},年龄是{age}"
>>> c.format(age=19,name='高淇')
'名字是高淇,年龄是19'

2.填充与对齐
(1)^、<、>分别是居中、左对齐、右对齐,后面带宽度;
(2): 后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

>>> "我是{0},我喜欢数字{1:*^8}".format("高淇","666")
'我是高淇,我喜欢数字**666***'

3.数字格式化(要求:懂基本用法,应用时再查具体写法)
浮点数通过 f ,整数通过 d 进行需要的格式化

>>> a = "我是{0},我的存款有{1:.2f}"
>>> a.format("高淇",3888.234342)
'我是高淇,我的存款有3888.23'
# 这里的 .2f 有四舍五入的效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值