Python基础语法_字符串扩展

Python基础语法_字符串扩展

学习目标:
1、字符串的三种定义方式
2、字符串拼接:掌握如何拼接字符串
3、字符串格式化:掌握通过占位的形式拼接字符串
4、格式化的精度控制:掌握格式化字符串过程中做数字的精度控制
5、字符串格式化方式2:掌握快速字符串格式化的方式
6、对表达式进行格式化:了解什么是表达式;掌握对表达式进行字符串格式化

一、字符串的三种定义方式

1.1、三种定义方式

字符串在Python中有多种定义方式:

  • 单引号定义法:name = '陶其的个人博客'
  • 双引号定义法:name = "陶其的个人博客"
  • 三引号定义法:name = """陶其的个人博客"""

三引号定义法,和多行注释的写法一样,同样支持换行操作。

使用变量接收它,他就是字符串;不使用变量接收它,就可以作为多行注释使用。

1.2、字符串的引号嵌套

如果我想要定义的字符串本身,是包含:单引号、双引号自身呢?如何写?

  • 单引号定义法,可以内含双引号:msg = '打印的内容是"Hello World"'
  • 双引号定义法,可以内含单引号:msg = "打印的内容是'Hello World'"
  • 可以使用转义字符串 \ 来将引号解除效用,变成普通字符串:msg = "打印的内容是\"Hello World\""
# 单引号法
msg = '打印的内容是"Hello World"'
print(msg)
# 双引号法
msg = "打印的内容是'Hello World'"
print(msg)
# 转移字符
msg = "打印的内容是\"Hello World\""
print(msg)

字符串的引号嵌套

二、字符串拼接

如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过 + 号即可完成,如:

print("陶其的" + "个人博客")

字符串字面量拼接

不过一般单纯的2个字符串字面量进行拼接显得很呆,一般字面量和变量或变量和变量之间会使用拼接,如:

name = "陶其"
subtitle = "当下,即是未来"
print(name + "的个人博客,网站副标题:" + subtitle)

变量拼接

注意:数字类型或其他类型和字符串类型没办法通过 + 进行直接拼接,会报错。

如:下面就是错误的例子

tel = 18212345678
print("我的电话:" + tel)

数字类型变量拼接

三、字符串格式化

通过上面的例子,我们会发现,这个拼接字符串也不好用啊。

  • 变量过多,拼接起来是在是太麻烦了;
  • 字符串无法和数字或其他类型完成拼接。

通过字符串格式化,可以解决这两个问题。

我们可以通过如下语法,完成字符串和变量的快速拼接。

name = "陶其"
msg = "%s的个人博客" % name
print(msg)

其中的,%s

  • %表示:我要占位
  • s表示:将变量变成字符串放入占位的地方

所以综合起来的意思就是:我先占个位置,等一会儿有个变量过来,我把它编程字符串放到占位的位置。

一个字符串占位符

那么多个变量呢?

name = "陶其"
subtitle = "当下,即是未来"
msg = "%s的个人博客,网站副标题:%s" % (name, subtitle)
print(msg)

多个字符串占位符

注意:使用多个占位符时,变量使用括号括起来,中间使用,间隔。前面多个 %s 展示的内容是按照后面括号里的顺序依次填入的。

那么数字类型呢?当然可以

tel = 18212345678
print("我的电话:%s" % tel)

数字类型占位符

在Python中,其实支持非常多的数据类型占位。

最常用的是如下三类:

数据类型占位

name = "纯净水"
year = 2024
price = 1.5
message = "这件商品是%s,生产于%d年,单价是:%f元" % (name, year, price)
print(message)

数据类型占位实例

四、格式化的精度控制

上面的示例中单价本应该显示:1.5元,结果打印的是:1.500000元。

这就是没有对数字类型格式化时没有做精度控制。

我们可以使用辅助符号 m.n 来控制数据的宽度和精度。

  • m:控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
  • n:控制小数点精度,要求是数字,会进行小数的四舍五入

示例:

  • %5d:标识将证书的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用是哪个空格补足宽度
  • %5.2f:标识将宽度控制为5,将小数点精度设置为2
    • 小数点和小数部分也算入宽度计算。如,对11.345设置了 %7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为.35
  • %.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置 %.2f 后,结果是11.35

那么上一节的例子可以这么写:

name = "纯净水"
year = 2024
price = 1.5
message = "这件商品是%s,生产于%d年,单价是:%.2f元" % (name, year, price)
print(message)

角分的格式

这样单价显示到角分的格式就是日常使用的。

五、字符串格式化方式2

字符串格式化 – 快速写法

目前通过 % 符号占位已经很方便了,还能进行精度控制。

是否有更优雅的方式解决问题呢?

当然有。

通过语法:f"内容{变量}" 的格式来快速格式化。

这里的f,是format(格式)的缩写,不是float的缩写。

name = "纯净水"
year = 2024
price = 1.5
message = f"这件商品是{name},生产于{year}年,单价是:{price}元"
print(message)

快速格式化

快速格式化特点:

  • 不限数据类型
  • 不做精度控制

六、对表达式进行格式化

刚刚的演示,都是基于变量的。
可是能否更加优雅些,少些点代码,直接对“表达式”进行格式化呢?

6.1、什么是表达式

表达式:一条具有明确执行结果的代码语句。

如:1+15*2type("字符串"),就是表达式,因为有具体的结果,结果是一个数字。

又或者,常见的变量定义:

  • name = "张三"
  • age = 11+11

等号右侧的都是表达式,因为它们有具体的结果,结果赋值给了等号左侧的变量。

那么,对于字符串格式化,能否直接格式化一个表达式呢?

6.2、格式化表达式

写法:

  • f"{表达式}"
  • "%s、%d、%f" % (表达式, 表达式, 表达式)
print("1 * 1的结果是:%d" % (1 * 1))
print(f"1 * 1的结果是:{1 * 1}")
print("字符串在Python中的类型是:%s" % type('字符串'))

格式化表达式

在无需使用变量进行数据存储的时候,可以直接格式化表达式,进而简化代码。

七、练习

7.1、练习:股价计算小程序

"""
练习:股价计算小程序
"""
# 公司名
name = "传智播客"
# 当前股价
stock_price = 19.99
# 股票代码
stock_code = "003032"
# 股票每日增长系数,浮点数类型
stock_price_daily_growth_factor = 1.2
# 增长天数
growth_days = 7

print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数是:%.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days, stock_price * stock_price_daily_growth_factor ** growth_days))

股价计算小程序

这里也可以先将最终股价的表达式赋值给一个变量,然后打印这个变量即可。

版权声明:本文《Python基础语法_字符串扩展》是由陶其原创撰写,首发于陶其的个人博客
转载声明:如需转载本文,请务必在转载处保留原文链接:https://www.tqazy.com/?p=780,并明确注明文章来源。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇