前言
本章对字符串这一知识点进行了拓展,详细介绍了字符串的三种定义方式、字符串拼接、字符串格式化、格式化的精度控制、表达式的格式化等内容。
本篇文章参考:黑马程序员
一、字符串的定义方式
字符串类型有三种不同定义方式:
①双引号定义法
text1="我是字符串文本数据"
print(text1)
输出结果:
我是字符串文本数据
②单引号定义法
text2='我也是字符串文本数据'
print(text2)
输出结果:
我也是字符串文本数据
③三引号定义法
表示在一对三个双引号的范围内均是字符串。与多行注释的写法一样,同样支持换行操作,使用变量接收它,它就是字符串,不使用变量接收它,就可以作为多行注释使用。
text3="""我也是字符串文本数据"""
text4="""
在三个引号的包围圈内
全部都是
字符串文本数据
"""
print(text3)
print(text4)
输出结果:
我也是字符串文本数据
在三个引号的包围圈内
全部都是
字符串文本数据
二、字符串的引号嵌套
如果想要定义的字符串本身,是包含单引号、双引号自身的我们该如何写?
①单引号定义法,可以内含双引号
name='"你好"'
print(name)
输出结果:
“你好”
②双引号定义法,可以内含单引号
name="'你好'"
print(name)
输出结果:
‘你好’
③可以使用转移字符(\)来将引号解除效用,变成普通字符串
name='\'你好\''
print(name)
name="\"你好\""
print(name)
输出结果:
‘你好’
“你好”
三、字符串的拼接
使用“+”号连接字符串变量或字符串字面量即可完成字符串的拼接。
①字符串字面量之间的拼接
print("我的名字是"+"小明")
输出结果:
我的名字是小明
②字符串字面量和字符串变量的拼接
name="小明"
adress="北京路8号"
print("我是"+name+",我住在"+adress)
输出结果:
我是小明,我住在北京路8号
注意:字符串无法和非字符串变量进行拼接,因为类型不一致,无法接上,就像接力赛一样,不是自己的队友就不能接力。
三、字符串格式化
经过上面的学习,我们会发现字符串拼接存在以下缺点:
- 如果变量过多,拼接起来会过于麻烦
- 字符串无法和数字或其它类型完成拼接
那有没有其它方式,即方便又支持拼接其它类型呢?
这个方式,就是字符串的格式化。
在Python中,字符串的格式化是指将一个字符串中的占位符替换为特定的值或表达式的过程。
①格式化方式1:%操作符
常用的占位符:
以%s为例:
- % 表示:我要占位
- s 表示:将变量变成字符串放入占位的地方
通俗来讲就是,我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置。
格式化语法:“%占位符” % 变量
hobby="唱歌"
message="我爱好是%s" % hobby
print(message)
输出结果:
我爱好是唱歌
如果有多个变量占位,变量要用括号括起来,并按照占位的顺序填入。
name="小明"
born_year=2008
height=168.5
print("我是%s,我出生于%d,我的身高是%fcm"%(name,born_year,height))
输出结果:
我是小明,我出生于2008,我的身高是168.500000cm
Tips:在使用%f格式化字符串时,输出的浮点数默认会包含小数点,并且通常会显示六位小数。所以本段代码中,当身高为168.5时,经过%f格式化后会变成168.500000。
②格式化方式2:f"{占位}"
格式化语法:f"内容{变量}"
- 在字符串前面加上 f,可以在字符串中直接嵌入变量和表达式,而不需要像以前那样使用百分号(%)格式化字符串
- {} 是花括号,用于标记格式化字符串中的占位符,它指示在该位置插入变量或表达式的值。
该方式不理会数据类型,不做精度控制,适合对精度没有要求的时候快速使用。
name="小明"
born_year=2008
height=168.5
print(f"我是{name},我出生于{born_year},我的身高是{height}")
输出结果:
我是小明,我出生于2008,我的身高是168.5
四、格式化的精度控制
使用辅助符号"m.n"来控制数据的宽度和精度。
- m:控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
- .n:控制小数点精度,要求是数字,会对小数进行四舍五入
示例:
%5d:表示将整数的宽度控制在5位。
如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。
%7.2f:表示将宽度控制为7,将小数点精度设置为2,小数点和小数部分也算入宽度计算。
如对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35。
%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35。
# 格式化的精度控制
num1 = 11
num2 = 11.345
print("数字11宽度限制5,结果:%5d"% num1)
# 设置的宽度小于数字自身,不生效
print("数字11宽度限制1,结果:%1d"% num1)
print("数字11.345宽度限制7,小数精度2,结果 :%7.2f"% num2)
print("数字11.345不限制宽度,小数精度2,结果 :%.2f"% num2)
输出结果:
数字11宽度限制5,结果: 11
数字11宽度限制1,结果:11
数字11.345宽度限制7,小数精度2,结果 : 11.35
数字11.345不限制宽度,小数精度2,结果 :11.35
五、表达式的格式化
表达式:一条具有明确执行结果的代码语句
例如:
1 + 1、5 * 2、type(“字符串”)都是表达式,因为有具体的结果,结果是一个数字;
name = “张三” 以及age = 11 + 11这两条式子等号右侧的都是表达式,因为它们有具体的结果,结果赋值给了等号左侧的变量。
格式化表达式有如下两种方法:
- f"{表达式}"
- “%s%d%f” % (表达式、表达式、表达式)
在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码。
print("1 * 1的结果是:%d"%(1*1))
print(f"1 * 1的结果是:{1 * 1}")
print("字符串在Python中的类型是:%s"%type('字符串'))
输出结果:
1 * 1的结果是:1
1 * 1的结果是:1
字符串在Python中的类型是:<class ‘str’>
【练习】股价计算小程序
定义如下变量:
name,公司名
stock_price,当前股价
stock_code,股票代码
stock_price_daily_growth_factor,股票每日增长系数,浮点数类型,比如1.2
growth_days,增长天数
请计算经过growth_days天的增长后,最终股价达到了多少钱(最终股价=当前股价 * 增长系数 ** 增长天数),要求使用字符串格式化进行输出,如果是浮点数,要求小数点精度2位数。
name="A"
stock_price=19.99
stock_price_daily_growth_factor=1.2
stock_code="013042"
growth_day=7
total_stock=stock_price*stock_price_daily_growth_factor**growth_day
print(f"公司:{name},股票代码{stock_code},当前股价{stock_price}")
print("每日增长系数是:%.1f,经过%d天的增长后,股票达到了%.2f" % (stock_price_daily_growth_factor,growth_day,total_stock))
输出结果:
公司:A,股票代码013042,当前股价19.99
每日增长系数是:1.2,经过7天的增长后,股票达到了71.63