从零开始学Python_(三)基本数据类型(包含数字类型、数字类型的操作、字符串类型及其操作、常用的字符串方法)

个人主页我是弓长

系列专栏编程语言_Python

相关文章

一个普通的学习者

目录

一、数字类型

1.1整型

1.2浮点型

1.3复数型

1.4布尔型

二、数字类型的操作

2.1数字运算符

2.2数字类型转换

三、字符串类型及其操作

3.1字符串的定义方式

3.2字符串格式化

3.3f字符串/f-strings

3.4字符串的索引与切片

3.5字符串的拼接与重复

3.6字符串的成员归属

四、常用的字符串方法 

4.1字符大小写转换

4.2判断字符内容

4.3分割和合并字符串

4.4检索子串

4.5替换子串

4.6去除空格等字符


一、数字类型

数字类型是指表示数字或者数值的数据类型

1.1整型

整型(int)存储的数据为整数

按照进制划分

  • 二进制整数只有0和1两个基数,进位规则是“逢二进一”。Python种用二进制表示整数需要在数字前面加上0b或0B
  • 八进制整数:由0~7组成,进位规则是“逢八进一”。Python中用八进制表示整数需要在数字前面加上0o或0O
  • 十进制整数
  • 十六进制整数:由0~9和A~F组成,进位规则是“逢十六进一”。Python中用十六进制表示整数需要在数字前面加上0x或0X

例:分别用二进制、八进制、十进制、十六进制表示整数20

a = 0b10010  # 二进制
print("a =", a)
b = 0o22  # 八进制
print("b =", b)
c = 18  # 十进制
print("c =", c)
d = 0x12  # 十六进制
print("d =", d)

1.2浮点型

浮点型(float)存储的数据是实数

Python中浮点型必须有小数部分,小数部分可以为0

书写格式

  • 十进制格式
    f1 = 3.14
  • 科学计数格式:E或e代表基数是10,其后的数字代表指数
    f2 = 3.14e-2  # 等价于0.0314
    f3 = 3.14e4  # 等价于31400.0

Python中浮点型的取值范围为-1.8e08~1.8e08。超出这个范围Python会视其为无穷大(inf)或无穷小(-inf)

浮点型最长可以输出16个数字,浮点型进行运算后,最长可输入17个数字

但是计算机系统只能提供15个数字的准确性,最后一位由计算机系统根据二进制计算结果确定,存在一定的误差

1.3复数型

复数由实部和虚部构成。如3+2j,其中3是实部,2j是虚部

获取复数的实部和虚部

a = 3.5 + 1.5j  # 复数型变量
print(a.real)  # 打印a的实部
print(a.imag)  # 打印a的虚部

还可以通过内置函数complex(real, imag)传入实部和虚部定义复数。如果没有传入虚部则默认为0j 

例:complex()函数的使用

a = complex(1.5, 2)  # 传入实部1.5,虚部2
print(a)
b = complex(3)  # 传入实部3,没有传入虚部则默认为0j
print(b)

1.4布尔型

布尔型主要用来表示真或假,只有True和False两种值,分别对应1和0

布尔型得知也可以进行计算,如“False + 1”的结果为1,但是不建议对布尔值进行数值运算

Python中任何的对象都具有布尔属性,一般元素的布尔值都是True

布尔值是False的情况:None、False(布尔值)、0(浮点型0)、0.0 + 0.0j(复数型0)、""(空字符串)、[ ](空列表)、( )(空元组)、{ }(空字典)

二、数字类型的操作

2.1数字运算符

数字运算符是一些特殊的符号,用于数字之间的运算

分类

算术运算符:都是双目运算符,用于对两个数据进行相应的运算。如:操作数a = 3,b = 5

运算符说明形式结果
+加:两个数据相加求和a + b8
-减:两个数据相减求差a - b-2
*乘:两个数据相乘求积a * b15
/除:两个数据相除求商a / b0.6
%取余:两个数据相除求余数a % b3
** 幂:两个数据进行幂运算,获得a的b次方a ** b243
//取整除:两个数据相除,获得商的整数部分a // b0
  • 赋值运算符:将基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量,如:
    a = 3
    b = a * 2  # b = 6

    可以为多个变量赋相同的值,如:

    a = b = "python"

    其等价于:

    a = "python"
    b = "python"

    为多个变量赋不同的值,可简写为:

    a, b, x, d = 10, 2.2, 1 + 2j, True
  • 复合赋值运算符: 结果一列仅表示a的值,b值无变化。如:操作数a = 3,b = 5
    运算符说明形式结果
    +=加等于:左值加右值的和赋给左边的变量a += b等价于a = a + b8
    -=减等于:左值减右值的差赋给左边的变量a -= b等价于a = a -b-2
    *=乘等于:左值乘右值的积赋给左边的变量a *= b等价于a = a * b15
    /=除等于:左值除以右值的商赋给左边的变量a /= b等价于a = a / b0.6
    %=余等于:左值除以右值的余数赋给左边的变量a %= b等价于a = a % b3
    **=幂等于:左值的右值次方赋给左边的变量a **= b等价于a = a ** b243
    //=取整等于:左值除以右值的商的整数部分赋给左边的变量a //= b等价于a = a // b0

2.2数字类型转换

数字类型转换是数字从一种类型转换为另一种类型

Python内置了一系列可以强制转换数字类型的函数,将数字转换为指令类型

数字转换类型函数

函数说明
int(x[ ,base = 10])将浮点型、布尔型以及符合数字类型规范的字符串转换为整型,其中base代表进制
float(x)将整型和符合数字类型规范的字符串转换为浮点型
complex(real[, imag])将实部通过实部和虚部组合为复数型,或将符合数字类型规范的字符串转换为复数型
bool(x)将任意类型转换为布尔型

三、字符串类型及其操作

字符串类型存储的数据是字符串,字符串是一个由字符构成的序列

Python字符串是不可变的,不支持动态修改

3.1字符串的定义方式

定义方式:单行字符串和多行字符串

单行字符串:由一对单引号或一对双引号包含,如:

"hello,world"
'hello,world'

单行字符串说明

  • 双引号定义的字符串可以含有单引号,但不能直接含有双引号
  • 单引号定义的字符串可以含有双引号,但不能直接含有单引号
  • 否则会使程序异常,异常类型表示为SyntaxError
  • 要想解决这个问题,可以对字符串中的单引号、双引号等特殊字符进行转义处理

转义处理:在特殊字符前面加上转义字符“\”,解释器不再将特殊字符视为字符串的语法标志,而将其与转义字符视为一个整体

常用的转义字符及其含义

转义字符说明转义字符说明
\(在行尾时)续行符\t横向制表符
\\反斜杠符\b退格
\'单引号\r回车
\"双引号\f换页
\n回车换行\a响铃

如果需要忽略字符串中的转义字符,则可以在字符串的前面添加r或R,如:

print("C:\Windows\tracing")  # 转义字符起作用
print(r"C:\Windows\tracing")  # 忽视字符串中的转义字符

提醒

  • 字符串的定义可以选择单引号或双引号,建议编程中统一使用其中一种
  • 一般情况下双引号在面对缩写和所有格时更加友好,无需变换引号形式或使用转义字符
  • 如果字符串包含引号,应当优先使用另一种形式的引号来包含字符串,而非使用转义字符

多行字符串

  • 多行字符串由一对三引号包含,可以是三单引号也可以是三单引号
  • 三引号中包含的所有字符都属于字符串内容,包括空格、换行等
  • 三引号中可以包含单引号、双引号等,无需转义,所有字符均以原始形态打印出来

3.2字符串格式化

字符串格式化是指预先制定一个带有空位的模板,然后根据需要对空位填充

从Python2.6开始,字符串对象提供了format()方法

format()方法语法格式

模板字符串.format(参数列表)
  • 模板字符串中有一系列用“{ }”表示的空位,format()方法可以将以逗号间隔的参数列表按照对应关系替换到这些空位上
  • 如果“{ }”中没有序号,则按照出现的顺序进行替换
  • 如果“{ }”中指定了参数序号,则会按照序号对应参数进行替换,参数从0开始编号

format()方法的格式处理: format()方法的模板字符串的空位中不仅可以填写参数序号,还可以有其他的格式处理形式,空位样式

{参数序号:格式处理内容}

格式处理内容按照以下顺序使用: 

  1. 填充:填充单个字符,不指定时用空格填充
  2. 对齐:“<”为左对齐,“>”为右对齐,“^”为居中对齐
  3. 符号:“+”表示在正数前加正号,负数前加负号;“-”表示正数不变,负数加负号;空格表示正数加空格,负数加负号
  4. 宽度:指定空位所占宽度
  5. 分隔符:用逗号“,”分隔数字的千位,适用于整数和浮点数
  6. 精度:用“.precision”指定浮点数的精度或字符串输出的最大长度
  7. 类型:用于指定类型,如:
    类型说明
    s对字符串类型格式化
    b将整数输出为对应的二进制数
    c

    将整数输出为对应的Unicode字符

    d将整数输出为对应的十进制数
    o将整数输出为对应的八进制数
    x或X将整数输出为对应的小写或大写的十六进制数
    e或E将浮点数输出为e或E的指数形式
    f将浮点数标准输出
    %输出浮点数的百分比形式

例:

name = "张三"
studentId = "202201"
print("我叫{0:-^10},学号为{1:-^10}".format(name, studentId))  # 姓名和学号以-填充至10位
exercise = 300

3.3f字符串/f-strings

Python3.6提供了一种新的格式化字符串的方法——f-strings,即f字符串

f字符串的格式化处理和format()方法类似,但语法更简洁

Python3.6及以后的版本推荐使用f字符串进行字符串的格式化

f字符串用花括号“{}”表示被替换的字段

例:

name = "李四"
studentId = "202202"
print(f"我叫{name},学号为{studentId}")

例:

milk = "牛奶"
milk_sales = 100032894.37298
f_milk = f"商品{milk:*^10},销售额为{milk_sales:*^20,.2f}"  # 商品以*填充至10位;销售额以*填充至20位,且保留两位小数
oil = "食用油"
oil_sales = 10048293984.4294
f_oil = f"商品{oil:*^10},销售额为{oil_sales:*^20,.2f}"
print(f_milk)
print(f_oil)

3.4字符串的索引与切片

索引说明:字符串是一个不可变的字符序列,每个字符都有编号/索引

  • Python的索引从0开始递增,字符串的第1个字符的索引为0,第2个字符的索引为1,以此类推
  • 索引也可以是负数,字符串的最后1个字符的索引为-1,倒数第2个字符的索引为-2,以此类推
  • 根据索引可以获取字符串中的字符

例:输出"study hard"中的字符"a"

sentence = "study hard"
print(sentence[7])  # 正索引
print(sentence[-3])  # 负索引

len()函数:用于计算字符串的长度语法格式:string为要进行长度计算的字符串

len(string)

说明

  • len()函数在计算字符串长度时,不区分字母、汉字、数字、标点和特殊字符等

例:计算字符串"study hard"的长度

sentence = "study hard"  # 字符串sentence
length = len(sentence)  # 计算字符串sentence的长度,赋值给length
print(length)  # 输出length

字符串切片: 指从字符串中截取部分字符组成新的字符串,且不会使原字符串产生变化,语法格式

sname[start:end:step]

 字符串切片参数

参数说明
sname字符串名称
start切片开始的位置(包括此位置),不指定时默认为0
end切片结束的位置(不包括此位置),不指定时默认为序列的长度
step切片的步长,不传值时默认为1,最后的冒号也可以省略

例:字符串的切片

sname = "学习Python使我快乐"  # 共12个字符
print("sname[:]:",sname[:])  # 取到字符串所有字符
print("sname[3:8]",sname[3:8])  # 默认步长为1
print("sname[:8]",sname[:8])  # 默认从索引0开始,步长为1
print("sname[3:]",sname[3:])  # 默认到字符串末尾,步长为1
print("sname[3:8:2]",sname[3:8:2])  # 设置步长为2
print("sname[:-4]",sname[:-4])  # 索引0到-4,不含-4
print("sname[-8:-3:2]",sname[-8:-3:2])  # 索引-8到-3,不含-3,步长为2
print("sname[8:3:-2]",sname[8:3:-2])  # 索引8到3,不含3,步长为-2

3.5字符串的拼接与重复

字符串拼接:使用“+”可以实现字符串拼接,将多个字符串连接起来并产生一个字符串对象

例:使用“+”实现字符串拼接

name = "张三"
action = "吃了早饭"
print(name + action)

例:字符串类型与整型拼接,程序异常,异常类型为TypeError 

str1 = "我今天吃了"
num = 2
str2 = "碗饭"
print(str1 + num + str2)

str()函数和repr()函数是将对象转换为字符串类型的两种机制

str()函数会将对象转换为合理形式的字符串,以便用户理解

repr()函数会创建一个字符串,用合法的Python表达式来表达对象,以供Python解释器读取

例:str()函数和repr()函数的使用

action = "Hi,1000phone"
print("str()函数处理后:" + str(action))
print("repr()函数处理后:" + repr(action))
str1 = "我今天吃了"
num = 2
str2 = "碗饭"
print("用str()函数实现字符串拼接:" + str1 + str(num) + str2)

重复字符串:使用“*”可以将字符串重复多次

例:使用“*”重复字符串

print("study" * 5)

3.6字符串的成员归属

字符串的成员归属需要用到成员运算符

成员运算符能够判断指定序列是否包含某个值

Python的成员运算符:

  • in:如果在指定序列中找到值,返回True,否则返回False
  • not in:如果在指定序列中没有找到值,返回True,否则返回False

例:查找字符串是否含有某字符

sentence = "i want to eat meat"  
print("e在sentence中:", "e" in sentence)  # in
print("e不在sentence中:", "e" not in sentence)  # not in

四、常用的字符串方法 

4.1字符大小写转换

Python有部分方法能够实现字符串的大小写转换

字符串大小写转换方法:用sname来表示字符串或字符串变量

每个方法均返回一个新的字符串,原字符串不变

方法说明
sname.title()将字符串中的每个单词首字母大写
sname.upper()将字符串中所有字母转为大写
sname.lower()将字符串中所有字符转为小写

例:字符串大小写转换方法的使用

sname = ("I want to study")
print("sname.title():", sname.title()) 
print("sname.upper():", sname.upper())
print("sname.lower():", sname.lower())

4.2判断字符内容

Python提供了判断字符串中是否包含某些字符的方法

判断字符串内容的方法:用sname来表示字符串或字符串变量

方法说明
sname.isupper()当字符串中所有字符都是大写时返回True,否则返回False
sname.islower()当字符串中所有字符都是小写时返回True,否则返回False
sname.isalpha()当字符串中所有字符都是字母或中文字时返回True,否则返回False
sname.isnumeric()当字符串中所有字符都是数字时返回True,否则返回False
sname.ispeace()当字符串中所有字符都是空格时返回True,否则返回False

例:检验密码内容

password = input("请输入密码(必须包含数字和字母):")
print("密码是否全是字母:", password.isalpha())
print("密码是否全是数字:", password.isnumeric())

4.3分割和合并字符串

字符串可以用特定字符分割为列表形式,列表以及其他的可迭代对象也可以合并为一个字符串

字符串分割和合并方法:用sname来表示字符串或字符串变量

方法说明
sname.split(sep = None,maxsplit = -1)字符串用sep分割后以列表形式返回
sname.join(iterable)将可迭代对象iterable用字符串sname拼接在一起,返回一个合并后的新字符串

例:字符串分割和合并的使用

sname = "人-生-苦-短-我-用-Python"
list1 = sname.split("-")  # 将sname字符串以“-”分割
print(list1)
join_str = "~".join(list1)  # 用“~”将list1列表中的元素连接起来
print(join_str)

4.4检索子串

Python提供多种方法用于查找、统计字符串中的特定内容

字符串检索方式:用sname来表示字符串或字符串变量

方法说明
sname.count(sub,[start[,end]])返回sname[start:end]中sub子串出现的次数,如果字符串中没有sub子串则返回0
sname.find(sub,[start[,end]])返回sname[start:end]中首次出现sub子串的索引,如果字符串中没有sub子串则返回-1
sname.index(sub,[start[,end]])返回sname[start:end]中首次出现sub子串的索引,如果字符串中没有sub子串则报错
sname.startswith(prefix,[start[,end]])返回sname[start:end]是否以prefix子串开头,如果是则返回True,否则返回False
sname.endswith(suffix,[start[,end]])返回sname[start:end]是否以suffix子串结尾,如果是则返回True,否则返回False

说明

  • start和end都是可选参数。如果不传入start,则从开头开始检索;如果不传入end,则一直检索至末尾

  • index()方法在没有检索到子串时会报错,程序异常,异常类型为ValueError

例:字符串检索方法的使用

sname = "count方法的用处是返回sname[start:end]中sub子串出现的次数"
print("sname中s出现的次数:",sname.count("s"))
print("sname中count子串的索引:",sname.find("count"))
print("sname中'返回'子串的索引:",sname.index("返回"))
print("sname是以'方法'为开头吗:",sname.startswith("方法"))
print("sname是以'次数'为结尾吗:",sname.endswith("次数"))

4.5替换子串

replace()方法实现字符串的替换,语法格式:用sname来表示字符串或字符串变量

sname.replace(old,new[,count])

说明

  • sname中所有的old子串被替换为new,如果传入参数count,则前count个old子串被替换

例:错别字替换

sname = "燕子去了,有再来地时候;杨柳枯了,有再青地时候;桃花谢了,有再开地时候。"
new_str = sname.replace("地","的")
print("错别字替换后的字符串:",new_str)

4.6去除空格等字符

字符串中有时候会出现多余的空格或空白行

为了获取字符串中有效的内容,可以对其中的多于字符进行去除,返回新的字符串,源字符串不变

字符串取出多于字符方法:用sname来表示字符串或字符串变量

方法说明
sname.strip([chars])在字符串左侧和右侧去除chars中列出的字符
sname.lstrip([chars])在字符串左侧去除chars中列出的字符
sname.rstrip([chars])在字符串右侧去除chars中列出的字符

说明

  • chars为可选参数,用于指定需要去除的字符,可以指定多个
  • 如果不指定chars参数,则默认去除空格、制表符\t、回车符\r、换行符\n等

例:strip()方法的使用

sname = "#学习Python@"
new_str = sname.strip("#@")
print(new_str)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值