python主要数据变量及其类型说明_Python十讲 - 第二讲:变量和基础数据类型

本文详细介绍了Python中的变量概念,包括变量的赋值、类型及其转换,强调了变量命名规范。此外,讲解了字符串的基础操作,如读取、合并、修改、删除和查找,以及字符串的常用方法,如切片、查找、替换等。还介绍了字符串的其他操作,如获取长度、格式化输出等。内容深入浅出,适合Python初学者阅读。
摘要由CSDN通过智能技术生成

本讲主要内容

变量

字符串

数字和运算符

数据类型转换

2.1 变量

1. 变量是什么?

变量,是指把程序运行的中间结果临时的存在内存里,以便后续的代码调用,其值可以修改。

在python中,当变量被使用时,在内存里将产生两个动作,一是开辟指定地址的空间,二是赋予指定的变量值。

在python语言中,变量在指定的同时,必须强制赋初值,否则解释器报错。

name #name变量未赋值,解释器认为非法,报未定义错误

name = 'kidd' #name变量赋予初值'kidd',解释器执行通过

这里的name为变量名,其值为'kidd'。Python变量赋值通过等号(=)来实现。

变量建立的结果,往往被其他代码所使用。例如:

x = 1+2+3+4

print(x) #print函数打印变量x的结果,输出10

2. 多个变量赋值

Python允许同时为多个变量赋值。

one = two = three = 1

print(one, two, three) #print函数允许多值打印输出,用逗号分隔变量

注:one, two, three三个变量在内存中指向同一个地址。也可以按照下面的格式,给不同的变量名赋值:

one, two, three = 1, 1, 1

print(one, two, three) #print输出值也为三个连续的1

3. 变量值类型

所有编程语言的变量值都是分类型的,Python语言变量值的类型在赋值后才被隐性确定。

例如x = 0,那么0就是整数类型的值;x = 'ok',那么ok就是字符串类型的值;x = True,那么True就是布尔类型的值。

Python语言的基本变量类型包括字符串、数字、列表、元组、字典五大类。

注:变量命名规则

(1)变量只能由字母、数字、下划线组成。

(2)不能以数字开头。

(3)不能是python中的关键字

(4)大小写区分,a = 1和A =1是两个变量。

以上要求是必须满足的,下面的要求要尽量做到

(5)变量名要有描述性,要简洁、易读,不宜过长。

(6)变量名不能使用中文以及拼音。

(7)官方推荐使用的变量名:

下划线:my_name= 'kidd'驼峰体:MyName= 'kidd'

注:关于常量

常量,即不能变的数据对象。

在python中,常量名全部为大写,且放在文件的最上面。

NAME= ‘kidd’

2.2 字符串

字符串,由任意字节的字符组成,用单引号(')、双引号( “)或三引号(''')成对表示。

简单的说,凡是用引号括起来的就是字符串。

name = 'kidd'name1= "kidd"

单双引号配合使用:

s = "I'm kidd"

当一个字符串有多行时,一般考虑使用三引号:

msg = '''床前明月光,

疑是地上霜,

举头望明月,

低头思故乡。'''

注:只有引号,没有字节内容的字符串也是合法的。例如name = ''

2.2.1 字符串的基本操作

字符串值基本操作包括读取、合并、修改、删除、查找

1. 字符串值的读取

s = 'Tom is a cat'

代码中的字符串在内存中的存放顺序如下表所示:

s字符串:

T

o

m

i

s

a

c

a

t

对应下标地址:

0

1

2

3

4

5

6

7

8

9

10

11

从上表可以看出,字符串中的每个字符都对应一个下标。字符串的下标都是从0开始。

注:下面对字符串进行的操作,形成的都是一个新的字符串,与原来的字符串没有关系

(1)按照索引取值:[下标]。

s1 = s[2] #读取下标为2的字符

print(s1)

结果:m

(2)按照切片取值:[左下标: 右下标],顾头不顾尾。

s2 = s[4:6] #读取下标为4,5的字符

print(s2)

结果:is

(3)带冒号省略下标方式切片:[左下标: ]、[: 右下标]、[ : ]。

s3 = s[: 3] #读取下标为前三个的字符

print(s3)

结果:Tom

[:3] 指的是从字符串的开始,读到下标为2的字符

s4= s[9: ] #读取下标从第9到最后的字符

print(s4)

结果:cat

s5= s[:] #读取整个字符串

print(s5)

结果:Tomis a cat

(4)负数下标读取:用负数下标从右到左读取对应的字符串值。

s6 = s[-1] #从右往左,读取右边第一个字符

print(s6)

结果:t

s7= s[-3: -1] #从右往左,读取倒数第三个、倒数第二个字符

print(s7)

结果:ca

(5)带步长的切片读取:[左下标: 右下标: 步长]。

s8 = s[: : 2] #从头到尾,步长为2,读取对应字符

print(s8)

结果:Tmi a#如果想倒序取值,加一个反向步长(步长前加负号)

s9 = s[-1:-6: -2]print(s9)

结果:tca

注1:Python在采用下标读取其他对象值时,也统一采用类似风格的下标使用方法,如后面要讲到的列表、元组等。

注2:使用下标时,超出字符串范围读取值,解释器将报错。

2. 字符串值合并

对于不同的字符串,可以通过加号(+)进行合并操作

name = 'kidd'job= 'student'res= name + ',' + job #用加号合并三个字符串

print(res)

结果:kidd, student

注:字符串值也可以与数字相乘

s= '锦鲤's1= s * 6 # 重复显示6个锦鲤

print(s1)

结果:锦鲤锦鲤锦鲤锦鲤锦鲤锦鲤

3. 字符串值修改

replace:替换

s= 'Tom is a cat, Tom...'s1= s.replace('Tom', 'Jack') #前面为要替换的内容,后面为替换的内容

print(s1)

结果:Jackisa cat, Jack...#可以设置替换次数,但是只能从前往后开始替换

s2 = s.replace('Tom', 'Jack', 1)print(s2)

结果:Jackis a cat, Tom...

name = 'I am a student'new_name= name[: 7] + 'teacher'

print(new_name)

结果:I am a teacher

上述字符串值的修改,是通过读取子字符串并合并的方法实现的。

不能直接对字符串做如下修改操作:

name[3] = 'i' #解释器将报错

4. 字符串值删除

strip:默认去除字符串前后的空格、换行符(n)、制表符(t)

name= 'tblame kidd'

print(name.strip())

结果:'blame kidd' #加引号是为了区分空格

#也可以指定去除的字符

name = '**blame kidd*'

print(name.strip('*')) #去除字符串首尾的*

结果:blame kidd

name= 'iwakiddwa'

print(name.strip('wai'))

结果:kidd

去除字符串前面的空格:lstrip

去除字符串后面的空格:rstrip#应用举例:登录账户时

username = input('请输入用户名:').strip()if username == 'kidd':print('登录成功!')

del:删除整个字符串值del(name) #清楚内存中的name,再次调用name将报错

说明:del(x)函数函数内存中一个指定的对象x,x可以是字符串、数字、列表、元组、字典、类等。

5. 字符串值查找

判断以什么为开头:startswithprint(name.startswith('bl')) #判断是否以bl开头

结果:Trueprint(name.startswith('e', 4)) #判断第5个位置之后的字符串以什么开头

结果:Trueprint(name.startswith('la', 1, 5)) #判断第2个位置到第5个位置的字符串以什么为开头

结果:True

判断以什么为结尾:endswith

与startswith用法一致

通过元素找索引,找到第一个元素就返回索引值,没有此元素则返回-1:findprint(name.find('a'))

结果:2

print(name.find('d'))

结果:7

print(name.find('w'))

结果:-1

print(name.find('m', 1, -1)) #find可以设置查找的字符串的开始位置和结束位置

结果:3

通过元素找索引,找到第一个元素就返回其索引值,没有此元素则报错:indexprint(name.index('a'))

结果:2

print(name.index('w')) #没有w,报错

2.2.2 其它常用操作

1. 获取字符串长度

用len函数可以获取字符串长度

name = 'blame kidd'

print(len(name))

结果:10

说明:len(x)函数返回一个对象的长度,x可以是字符串、列表、元组、字典。

注:

在python3.6版本中,把一个汉字看作一个字符串长度

在python2.x版本中,把一个汉字看作两个字符串长度

2. r/R原始字符串控制符号

print('D:backname') #字符串里含特殊转移符号,b, n

结果:D:ack #没有使用r情况下,b转为了退格符,实现了退一格的效果

ame #n转为了换行符,实现了其后字母的换行显示

print(r'D:backname')

结果:D:backname#在使用r情况下,字符串原样输出,转义字符不起作用

3. split:将字符串分割成列表(str -- > list), 默认按照空格分割

s = 'apple huawei xiaomi'l1= s.split() #默认按照空格分割

print(l1)

结果:['apple', 'huawei', 'xiaomi']

s= 'apple, huawei xiaomi'l2= s.split(',')print(l2)

结果:['apple', 'huawei xiaomi']

注意这三个的区别:

s1= 'apple huawei xiaomi'

print(s1.split())

结果:['apple', 'huawei', 'xiaomi']

s2= 'apple huawei xiaomi'

print(s2.split(' '))

结果:['', 'apple', 'huawei', 'xiaomi']

s3= ',apple,huawei,xiaomi'

print(s3.split(','))

结果:['', 'apple', 'huawei', 'xiaomi']

#可以设置split的分割次数

s = 'blameliop'

print(s.split('l', 1))

结果:['b', 'lameliop]

4. join:自定制连接符,将可迭代对象中的元素连接起来

s = 'kidd's1= '*'.join(s)print(s1)

结果:k*i*d*d

5. capitalize:首字母大写

name = 'blame kidd'

print(name.capitalize())

结果:Blame kidd

6. title:非字母隔开的每个部分的首字母大写

name = 'blame kidd'

print(name.title())

结果:Blame Kidd

7. center:字符串居中,前后填充自定义的字符

name = 'blame kidd'

print(name.center(20, '*'))

结果:*****blame kidd*****

8. upper:字符串全部大写;;lower:字符串全部小写

name = 'Blame Kidd'

print(name.upper())

结果:BLAME KIDDprint(name.lower())

结果:blame kidd

应用场景:验证码不区分大小写

code= 'AjkG'.lower()

your_code= input('请输入验证码:').lower()if code ==your_code:print('验证成功!')

9. swapcase:大小写转换

name = 'BlaMe kiDd'

print(name.swapcase())

结果:bLAmE KIdD

10. 格式化输出:%、format

#%s为格式化字符串;%d为格式化整数

name = 'blame kidd'age= 18

print('My name is %s, My age is %d'%(name, age))

结果:My nameis blame kidd, My age is 18

format有三种方式

第一种:

s1= '我叫{}, 今年{}'.format('kidd', '18')print(s1)

结果:我叫kidd, 今年18

第二种:

s2= '我叫{0}, 今年{1}, 我还是叫{0}'.format('kidd', '18')print(s2)

结果:我叫kidd, 今年18, 我还是叫kidd

第三种:

s3= '我叫{name}, 今年{age}, 我还是叫{name}'.format(age = '18', name = 'kidd')print(s3)

结果:我叫kidd, 今年18, 我还是叫kidd

11. is系列

name = 'kidd123'

print(name.isalpha()) #判断name是否全部以字母组成

结果:Falseprint(name.isdigit()) #判断name是否全部以数字组成

结果:Falseprint(name.isalnum()) #判断name是否以字母或者数字组成

结果:True

12. count:计数

name = 'blame kidd'

print(name.count('d')) #计算给定字符出现几次,可以进行切片

结果:2

内容来源于网络如有侵权请私信删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值