Python基础知识笔记数值类型

2022-10-03 13:46:44

赋值

1、链式赋值:x=y=1 —————相当于x=1;y=1

2、系列数据赋值:a,b,c,d=1,2,3,4 ————相当于a=1;b=2;c=3;d=4

利用系列解包实现变量互换

>>>a,b=1,2

>>>a,b=b,a

>>>print(a,b)

>>>a=2;b=1

3、常量(命名时所有字母都要大写,单词之间用下划线隔开)

python不支持常量,实际上常量是可以修改的,只能逻辑上不做修改

MAX_SPEED=120
print(MAX_SPEED)

>>>120

MAX_SPEED=140      #实际上是可以修改的,只能逻辑上不做修改
print(MAX_SPEED)

>>>140

数据类型

1、整型——整数123

2、浮点型——小数3.1415926

3、布尔型——true、false

4、字符串型——“abc”;“李圈圈小朋友”

一、整型(int)、浮点型(float)

1、运算符:+(加)-(减)*(乘)/(浮点数除法)//(整数除法)%(取余)**(幂)

2、int()实现类型转换:

  • 小数,直接取整数部分,小数部分舍去
  • 布尔型,转换成0,1
  • 字符串不能转,会报错

3、自动转型:整数和浮点数一起运算时,结果自动变成浮点数

4、浮点数一般用a×b形式的科学计数法表示,比如3.14,表示成314E-2或314e-2

5、四舍五入时用round(value),但不会改变原来的值,而是生成新的值

6、增强赋值运算符

练习:定义多点坐标,画出折线,算出起始点到终点的距离

import turtle
import math

#定义多个点的坐标
x1,y1 = 100,100
x2,y2 = 100,-100
x3,y3 = -100,-100
x4,y4 = -100,100

#绘制折线
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)

#计算起始点和终点的距离

distance=math.sqrt((x1-x2)**2+(y1-y2)**2)

#输出结果
turtle.write(distance)
print(distance)

二、布尔型

1、在python3中,布尔值可以直接当1和0使用

2、比较运算符:(==)(!=)(>)(<)(>=)(<=)

3、逻辑运算符:(and)与、(or)或、(not)非——若前者可判断结果,后者不再计算

4、同一运算符:is判断的是id,用于判断是不是一个对象,==(相当于eq()方法)判断的是value,用于比较值是否相等

Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在 Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

三、字符串

1、字符串的本质:定义好以后就不可以改变了

2、字符串的编码:python3默认使用Unicode码,可以表示世界上任何书面语言的字符,Unicode码中英文长度一样。

  • 使用ord()可以把字符串转换成Unicode码
  • 使用chr()可以把十进制的数字转换成字符
  • 使用len()可以查询字符串长度

3、创建字符串:可以用" "或者' '创建,用''' '''创建多行字符串

4、转义字符

5、字符串拼接:+、*

  • 如果+两边是字符串,则拼接
  • 如果+两边是数字,则运算
  • 如果+两边是不同类型,则报错
  • 如果字符串*n,就是字符串重复n次

6、控制台读取字符串:input()

>>> myname = input("请输入名字:") 

请输入名字:高淇 

>>> myname '高淇

7、str()实现数字转化成字符串

str(5.20) 
==> ‘5.20’ 


str(3.14e2)
==>’314.0’ 


str(True) 
==> ‘True’

8、检索字符串:用[]提取字符串

正向搜索:从最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1 为止
反向搜索:从最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到
-len(str) 为止
>>> a = 'abcdefghijklmnopqrstuvwxyz' 

>>> a 
'abcdefghijklmnopqrstuvwxyz' 

>>> a[0] 
'a' 

>>> a[3] 
'd' 

>>> a[26-1]
 'z'

>>> a[-1]
 'z'

9、字符串替换:字符串是不可以改变的,但是可以替换replace(),被替换掉的字符串并没有消失,而是对象被赋予了新字符串的id

>>> a = 'abcdefghijklmnopqrstuvwxyz' 
>>> a 
'abcdefghijklmnopqrstuvwxyz' 

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

10、字符串切片 slice:[起始偏移量 start:终止偏移量 end:步长 step],所取字符串不包括end(包头不包尾),无论正向反向取字符串时都是从左到右

正向:

负向:(取字符串时都是从左到右,步长为负时逆序排列)

字符串取字符时,超出字符串长度也不会报错。

 11、字符串的分割split()和拼接join()

>>> a = "to be or not to be" 

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

>>> a.split('be') 
['to ', ' or not to ', '']
>>> a = ['sxt','sxt100','sxt200'] 

>>> '*'.join(a) 
'sxt*sxt100*sxt200

拼接时,‘jion()’的效率要大于 ‘+’

#测试拼接符“+”与join的运算效率

import time

time01=time.time()   #start

a=""
for i in range(1000000):

    a+="sxt"
time02=time.time()  #end

print('运算时间:'+str(time02-time01))


time03=time.time()   #start

li=[]

for i in range(1000000):
    li.append("sxt")

a="".join(li)

time04=time.time()  #end

print('运算时间:'+str(time04-time03))



=========== RESTART: F:/python/python_yuanwenjian/zifuchuancaozuo.py ===========
运算时间:0.7644081115722656
运算时间:0.1367783546447754

12、字符串的驻留机制和字符串的比较

  • 字符串的驻留:python中对于符合标识符规则的字符串(仅包含 _ 、字母、数字)会启用字符串驻留机制驻留
>>> a = "abd_33" 
>>> b = "abd_33" 
>>> a is b 
True 

>>> c = "dd#" 
>>> d = "dd#" 
>>> c is d 
False

>>> str01 = "aa" 
>>> str02 = "bb" 
>>> str01 + str02 is 'aabb'
False

>>> str01 + str02 == 'aabb'
True

 13、成员操作符:in/not in

a="abcd"

"b"in a

True

"b" not in a

False

14、字符串查找

我们以一段文本作为测试: a='''我是高淇,今年 18 岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他 6 岁了。我是一个编程教育的普及者,希望影响 6000 万学习编程的中国人。我儿子现在也开始学习编程,希望他 18 岁的时候可以超过我'''
15、去字符串首尾信息——strip(),lstrip()去字符串左边指定信息,rstrip()去字符串右边指定信息
>>> "*s*x*t*".strip("*") 
's*x*t'

>>> "*s*x*t*".lstrip("*") 
's*x*t*' 

>>> "*s*x*t*".rstrip("*") 
'*s*x*t' 

>>> " sxt ".strip() 
'sxt'

16、大小写转换,例:a = "gaoqi love programming, love SXT"

 17、格式排版——center()、ljust()、rjust()

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

>>> a.center(10) 
' SXT ' 

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

 18、字符串其他操作

>>> "sxt100".isalnum()   # 是否为字母或数字
True 

>>> "sxt 尚学堂".isalpha()   # 检测字符串是否只由字母组成(含汉字)
True 

>>> "234.3".isdigit()    # 字符串是否只由数字组成
False 

>>> "23423".isdigit() 
True 

>>> "aB".isupper()   # 是否为大写字母   islower() 是否为小写字母
False 

>>> "A".isupper() 
True

>>> "\t\n".isspace()   # 检测是否为空白符
True
19、字符串的格式化——format(),可以接受不限个参数,位置可以不按顺序
>>> a = "名字是:{0},年龄是:{1}" 
>>> a.format("高淇",18) 
'名字是:高淇,年龄是:18' 

>>> a.format("高希希",6) 
'名字是:高希希,年龄是:6' 

>>> b = "名字是:{0},年龄是{1}。{0}是个好小伙" 
>>> b.format("高淇",18) 
'名字是:高淇,年龄是 18。高淇是个好小伙' 

>>> c = "名字是{name},年龄是{age}" 
>>> c.format(age=19,name='高淇') 
'名字是高淇,年龄是 19'

20、字符串的填充和对齐,: 后面接填充字符

  • ^ 居中
  • < 左对齐
  • > 右对齐
>>> "{:*>8}".format("245") 
'*****245' 

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

21、数字格式化

>>> a = "我是{0},我的存款有{1:.2f}" 
>>> a.format("高淇",3888.234342) 
'我是高淇,我的存款有 3888.23'

22、可变字符串——io.StringIo

>>> import io
>>> s = "hello, sxt"
>>> sio = io.StringIO(s) 
>>> sio 
<_io.StringIO object at 0x02F462B0> 
>>> sio.getvalue() 
'hello, sxt' 
>>> sio.seek(7) 
7
>>> sio.write("g") 
1
>>> sio.getvalue() 
'hello, gxt
  • 作者:码农圈
  • 原文链接:https://blog.csdn.net/m0_51216771/article/details/122520292
    更新时间:2022-10-03 13:46:44