抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

image-20210328233520957

第三章 数据类型:字符串

字符串

字符串使用语法

使用引号创建字符串类型数据

知识点:

  • 字符串就是一系列字符。
  • 使用引号创建字符串,引号必须要用英文输入法,中文会出错!
  • 引号括起的都是字符串,可以是单引号,也可以是双引号。
  • 字面量直接通过引号创建的字符串称为字面量。
1
2
3
4
"This is a string."
'This is also a string.'

#'This is also a string.'

通过print在Jupyter中输出所有内容

知识点:

  • Jupyter只输出最后一个字符串
  • 使用print()函数输出需要输出的内容(不仅是字符串,也可是变量值)。
1
2
3
4
5
print("This is a string.")
print('This is also a string.')

#This is a string.
#This is also a string.

正确使用引号创建字符串类型数据

知识点:

  • 由于引号在python中有特殊意义,用于标识字符串的起止标识
  • 如果在""双引号作为标识的字符串中使用"字符,那么,python就只能把"错误地解析为起止标识,而无法解析为该"字符本身,进而引发语法错误。
  • 为了解决此歧义问题,Python引入了转移字符技术,即通过转义字符\'\"方式来明确告诉Python,当前的字符解析为字符本身,而非起止标识。
1
2
3
4
5
6
7
8
9
print('-----------两种引号的嵌套使用------------')
print('I told my friend, "Python is my favorite language!"')
print("The language \'Python\" is named after Monty Python.")
print("One of Python's strengths is its diverse.")

#-----------两种引号的嵌套使用------------
#I told my friend, "Python is my favorite language!"
#The language 'Python" is named after Monty Python.
#One of Python's strengths is its diverse.

习题

  • 第1题
  • 第2题
  • 第3题

使用方法修改字符串的大小写

使用方法title()修改字符串为首字母大写

知识点:

  • Python的字符串敏感于大小写

  • 比如Adaada是不同的字符串。

  • 方法:在类中定义的函数。这里的指的是特定的类型。

    • 比如在字符串类型str中定义了字符串首字母大写转换函数title()
  • 方法的调用变量名.方法()

    • 首先,创建该类型的变量。
  • 然后,通过该变量来调用对应的方法。

    具体程序如下:

    1
    2
    3
    4
    5
    6
    name = "ada lovelace" # 创建该类型的变量
    print(type(name)) # <class 'str'> 查询变量类型
    print(name.title()) # Ada Lovelace,通过该变量来调用对应的方法

    # <class 'str'>
    # Ada Lovelace

    在这个示例中,小写的字符串"ada lovelace"存储到了变量name中。

    • print()语句中,方法title()出现在这个变量(对象)的后面。
    • name.title()中,name后面的句点(.)让Python对变量name执行方法title()指定的操作。
    • 每个方法后面都跟着一对括号,为方法传入额外的参数(信息)。 函数title()不需要额外的信息,因此它后面的括号是空的。
    • title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。这很有用,因为你经常需要将名字视为信息。例如,你可能希望程序将值AdaADAada视为同一个名字,并将它们都显示为Ada

    使用方法upper()和lower()修改字符串大小写

    知识点:

    • # message.lower() : this is string example from runoob….wow!!!

    # message.upper() : THIS IS STRING EXAMPLE FROM RUNOOB….WOW!!!str.lower():转换字符串中所有大写字符为小写。

      • 无参数,返回全为小写的字符串。
    • str.upper():转换字符串中所有小写字符为大写。

      • 无参数,返回全为大写的字符串。
1
2
3
4
5
6
name = "Ada Lovelace"
print(name.upper())
print(name.lower())

# ADA LOVELACE
# ada lovelace
1
2
3
4
5
6
message = "this is string example from runoob....wow!!!"
print("message.lower() : ", message.lower())
print("message.upper() : ", message.upper())

# message.lower() : this is string example from runoob....wow!!!
# message.upper() : THIS IS STRING EXAMPLE FROM RUNOOB....WOW!!!

习题

  • 第4题

合并(拼接)字符串

字符串拼接操作

知识点:

  • Python使用加号(+)来合并字符串
  • 拼接的类型必须是字符串,否则会出错。

例如,你可能想将姓和名存储在不同的变量中,等要显示姓名时再将它们合而为一:

1
2
3
4
5
6
7
8
print("--字符串的拼接 通过 + 操作----")
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print(full_name)

# --字符串的拼接 通过 + 操作----
# ada lovelace

在这个示例中,我们使用+来合并first_name、空格和last_name,以得到完整的姓名。这种合并字符串的方法称为拼接。通过拼接,可使用存储在变量中的信息来创建完整的消息。下面来看一个例子:

1
2
3
4
5
6
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("Hello, " + full_name.title() + "!")

# Hello, Ada Lovelace!

将字符串拼接的结果存变量中

在这里,一个问候用户的句子中使用了全名,并使用了方法title()来将姓名设置为合适的格式。这些代码显示一条格式良好的简单问候语。还可以使用拼接来创建消息,再把整条消息都存储在一个变量中:

1
2
3
4
5
6
7
8
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name

message = "Hello, " + full_name.title() + "!"
print(message)

# Hello, Ada Lovelace!
  • 上述代码也显示消息“Hello, Ada Lovelace!”,但将这条消息存储在了一个变量中,这让最后的print语句简单得多。

习题

  • 第5题

转义字符

使用制表符

知识点:

  • 在程序中,空白泛指任何非打印字符,如空格、制表符和换行符。
  • 可使用空白来组织输出,以使其更易读。
  • 横向制表符:转义字符\t
1
2
3
4
5
print("\tPython\tPython\tPython\tPython")
print("\tJava\tJava\tJava\tJava")

#Python Python Python Python
#Java Java Java Java

使用换行符

知识点:

  • 换行符 :在字符串中添加换行符,可使用转义字符\n
1
2
3
4
5
6
print("Languages:\nPython\nC\nJavaScript")

# Languages:
# Python
# C
# JavaScript

组合使用

知识点:

  • 组合使用:可在同一个字符串中同时包含制表符和换行符。
  • 字符串"\n\t"让Python换到下一行,并在下一行开头添加一个制表符。

下面的示例演示了如何使用一个单行字符串来生成四行输出:

1
2
3
4
5
6
print("Languages:\n\tPython11111\tPython\tPython\n\tC\tC\n\tJava\tJava")

# Languages:
# Python11111 Python Python
# C C
# Java Java

引号和反斜杠

知识点:

  • 单引号:\'
  • 双引号:\"
  • 反斜杠符号:\\

习题

  • 第6题
  • 第7题

删除字符串中的空白

认识程序中的空白

知识点:

  • 对人来说,'python''python '看起来几乎一样。
  • 对程序来说,它们却是两个不同的字符串
  • 程序对字符串中的空白敏感

处理字符串中的空白很重要,因为经常需要比较两个字符串是否相同。例如,在用户登录网站时检查其用户名。通过对字符串空白删除操作,对用户输入数据中的多余空白进行删除。

使用方法rstrip()删除字符串末尾空白

知识点:rstrip()方法

  • 调用语法:str.rstrip([chars])
  • 描述:删除 string字符串末尾的指定字符,默认为空格。
  • 参数:chars,指定删除的字符,默认为空格。
  • 返回:删除 string字符串末尾的指定字符后生成的新字符串。
1
2
3
4
5
6
7
8
9
favorite_language = ' python '
print(favorite_language)
# ' python '

print(favorite_language.rstrip())
# ' python'

print(favorite_language)
# ' python '

分析:

  • 存储在变量favorite_language中的字符串末尾包含多余的空白。Jupyter输出可看到末尾的空格。
  • 对变量favorite_language调用方法rstrip()后,这个多余的空格被删除了。
  • 然而,这种删除只是暂时的,在Jupyter输出中输出favorite_language时,会发现它依然包含多余的空白。

设置参数chars,删除指定的字符。

1
2
3
4
5
6
7
str = "     this is string example....wow!!!     "
print (str.rstrip()) # 默认为空白
# this is string example....wow!!!

str = "*****this is string example....wow!!!*****"
print (str.rstrip('*')) # 指定字符*
# *****this is string example....wow!!!

永久删除字符串的空白

要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中。

1
2
3
4
5
print('-------通过赋值的方式覆盖原字符串-----------')
favorite_language = ' python '
favorite_language = favorite_language.rstrip()
print(favorite_language)
# ' python'

分析:

  • 因为rstrip()操作不直接修改字符串,而是返回一个新的字符串。
  • 在编程中,经常需要修改变量的值,再将新值存回到原来的变量中。

使用方法lstrip()strip()删除字符串首和两端空白

Python还可以删除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法lstrip()strip()。在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串。接下来,我们分别删除末尾、开头和两端的空格。

1
2
3
4
5
6
7
8
9
10
11
12
13
print('------Jupyter对赋值语句结果不输出----------')
favorite_language = ' python '
print(favorite_language)
# ' python '

print(favorite_language.rstrip())
# ' python'

print(favorite_language.lstrip())
# 'python '

print(favorite_language.strip())
# 'python'

习题

  • 第8题
  • 第9题

字符串引起的语法错误

字符串引号引起的语法错误

知识点:

  • 语法错误在编程过中经常会被遇到,当程序中包含非法的Python代码时,就会导致语法错误。
  • 可通过Python解释器提供的错误信息,来较快的解决。

下面演示了如何正确地使用单引号和双引号。撇号位于两个双引号之间,因此Python解释器能够正确地理解这个字符串:

1
2
3
4
message = "One of Python's strengths is its diverse community."
print(message)

# One of Python's strengths is its diverse community.

在用单引号括起的字符串中,如果包含撇号,就将导致错误。这是因为这会导致Python将第一个单引号和撇号之间的内容视为一个字符串,进而将余下的文本视为Python代码,从而引发错误。因为,Python将无法正确地确定字符串的结束位置:

1
2
3
4
5
message = 'One of Python's strengths is its diverse community.'
# File "<stdin>", line 1
# message = 'One of Python's strengths is its diverse community.'
# ^
#SyntaxError: invalid syntax

从上述输出可知,错误发生在第二个单引号后面。这种语法错误表明,在解释器看来,其中的有些内容不是有效的Python代码。

知识点:

  • 编写程序时,编辑器的语法突出功能可帮助你快速找出某些语法错误。
  • 看到Python代码以普通句子的颜色显示,或者普通句子以Python代码的颜色显示时,就可能意味着文件中存在引号不匹配的情况。

习题

  • 第10题
  • 第11题
  • 第12题
  • 第13题
  • 第14题

(重要)格式化字符串

.format()函数的语法

认识.format()字符串格式化函数

Python提供了.format()字符串格式化函数。该函数操作起来方便,可读性很强。 .format()函数常与print()函数结合使用,具备很强的格式化输出能力。

知识点:.format()字符串格式化函数。

  • 语法:str.format(**args)

  • 例如:"{} {}".format("hello", "world")

  • 描述:该函数将通过{}:来设置模板字符串str,然后通过.format(**args)传入实参来对str进行格式化。

    • 模板字符串str中包含由大括号{}包围的“替换字段”。
    • {}中填写文本替换和格式化规则,如果不填任何规则(直接使用{}),则进行直接替换。
    • 具体的“替换字段”由args参数传入。
    • .format()函数中有几个参数,模板字符串str中包含几个{}
  • 该函数使用方法较多,下面将一一介绍。

认识.format()函数默认参数位置

知识点:.format()函数的默认位置

  • 不指定格式化位置,按照默认顺序格式化。
  • args参数以,相隔,按顺序填入相应的{}
  • str字符串模板中的{}数量不能超过参数个数,否则会出错。
1
2
3
4
str1 = "{} {}".format("hello", "world")
print(str1)

# hello world
  • .format()函数中有2个参数,模板字符串str中包含2个{}
  • 模板字符串str"{} {}",仅包含两个{}
  • args参数包括:"hello""world"
  • 根据规则,按照默认顺序格式化str"hello"填入第1个{}"world"填入第2个{}

IndexError错误

知识点:当{}超过args输入参数个数时,会出错IndexError

1
2
3
4
5
6
7
8
9
10
str1 = "{} {} {}".format("hello", "world")
print(str1)

# ---------------------------------------------------------------------------
# IndexError Traceback (most recent call last)
# <ipython-input-3-eb58e09cec2c> in <module>
# ----> 1 str1 = "{} {} {}".format("hello", "world")
# 2 print(str1)

# IndexError: Replacement index 2 out of range for positional args tuple

.format()函数的位置索引

知识点:.format()函数的3中位置索引方式:默认位置索引、序号位置索引和关键字位置索引。

参数的序号位置索引

知识点:.format()函数的参数的序号位置索引

  • 设置参数索引来指定格式化的位置。
  • str字符串模板设置带参数索引的{}
  • 参数索引从0开始,即第1个参数,对应{0}
1
2
3
4
str1 = "{1} {0}".format("hello", "world")
print(str1)

# world hello
  • 模板字符串str"{0} {1}",在每个{}中包含数字,来指明所替换的参数索引。
  • args参数包括:"hello"对应第0参数索引、"world"对应第1参数索引。
  • 根据规则,按照参数索引格式化str"hello"填入{0}"world"填入{1}

位置索引可重复使用

知识点:参数索引可以重复使用来替换字符串。

1
2
3
4
str1 = "{1} {0} {1}".format("hello", "world")
print(str1)

# world hello world

.format()参数的关键字位置索引

知识点:.format()函数的关键字位置索引

  • 设置关键字来指定格式化的位置。该功能与数字位置类似。
  • str字符串模板设置带关键字的{},指定参数替代字符串模板的位置。
  • 关键字可以为位置取更有意义的标识。
  • 注意:在使用关键字索引时,避免使用0o1l,以免混淆。
1
2
3
# 下面的关键字l很容易被误认为是1
str1 = 'I {l} {p}, and I\'am learning {p}'.format(p='Python', l='like')
print(str1)

.format()函数样式格式输出

.format()函数的填充与格式化

知识点:.format()函数的填充与格式化。

  • 大括号中可以设定特殊的格式:{:[填充字符][对齐方式 <^>][宽度]}
  • :为格式起始标志,不能少。
  • :号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
  • 对齐方式:<^>分别为左、中、右对齐。
  • 宽度:整形,指定填充位置宽度,如果替换文本比这个宽度小,则用填充字符进行填充。
1
2
3
4
5
6
7
8
9
10
11
12
# 左对齐,使用*填充,宽度为10
str1 = 'Hello {:*<10} '.format(1111)
print(str1)

# 居中对齐,使用@填充,宽度为20
str1 = 'Hello {:@^20} '.format(1111)
print(str1)

# 右对齐,使用>填充,宽度为12。
#第一个>为填充字符,第2个>为右对齐
str1 = 'Hello {:>>12} '.format(1111)
print(str1)

定制输出格式:

  • {:>n} 将字段设置为n个字符,并让内容右对齐。数字默认右对齐
  • {: 将字段设置为n`个字符,并让内容左对齐。非数字的字符默认左对齐
  • {:^n} 将字段设置为n个字符,并让内容居中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
x = 'hello'
y = 'hi'
print('------format(): 字符默认左对齐,数字默认右对齐 -----')
format_str = '{:8} results in {}.'
print(format_str.format(x, y))
print(format_str.format(1111, y))
# hello results in hi.
# 1111 results in hi.

print('------format(): 右对齐 -----')
format_str = '{:>8} results in {}.'
print(format_str.format(x, y))
print(format_str.format(1111, y))
# hello results in hi.
# 1111 results in hi.

print('------普通输出 -----')
print(x + ' results in' + y)
# hello results inhi
  • 输出以右对齐的方式打印2~20的偶数,每个字段的宽度都设置为3个字符。

.format()函数的精度

知识点:.format()函数的精度。

  • 大括号中可以设定特殊的格式:{:[m].[n][格式]}

  • :为格式起始标志,不能少。

  • m为整形,整数部分的宽度。

    • 默认值为原数字整数部分的长度。
    • 如果m大于整数部分的长度,则有空格左边填充。
  • .为小数点。

  • n为整形,小数点后保留几位精度。

    • 默认值为原数字小数部分的长度。
    • 如果n大于小数部分的长度,则有0补全填充。
  • 格式:f为浮点数。

1
2
3
4
5
6
7
#m=10,n=1,f为浮点数
print('{:10.1f}'.format(311.1415926))
# 311.1

#m为默认,n=4,f为浮点数
print('{:.4f}'.format(3.14))
# 3.1400

.format()函数的进制转换

知识点:进制转换,bdox 分别是二进制、十进制、八进制、十六进制。

1
2
3
4
5
6
7
8
print('{:b}'.format(11))
print('{:d}'.format(11))
print('{:o}'.format(11))
print('{:x}'.format(11))
# 1011
# 11
# 13
# b

.format()函数的数字格式输出

  • 请使用.format()函数得到下面的结果运行结果。
数字(输入) 格式 输出 描述(结果)
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:>10d} 13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d} 13 中间对齐 (宽度为10)

f-string技术

初识f-string

f-string基本介绍

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,主要目的是使格式化字符串的操作更加简便。

知识点:

  • f-string在形式上是以 fF 修饰符引领的字符串(f'xxx'F'xxx'),以大括号 {} 标明被替换的字段
  • f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式
  • f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

f-string语法

知识点:

  • 语法:f'<text> {<content:format specifier>} <text> ...'
  • ff-string的标识符,位于字符串标识符'之前。标识符不能忘记。
  • <text>:为普通字符串文本。
  • {<content>}:大括号是需要被替换的字段,外部传入的变量名为<expr>
  • <:format specifier>:可选,类似于.format(),自定义的格式。
  • 例如:f's is {s:8s}',其中s is<text>{s:8s}s<content>8s为格式,中间:间隔。
  • f-string用大括号 {} 表示被替换字段,其中直接填入替换内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
name = 'Eric'
str = f'Hello, my name is {name}'
# 'Hello, my name is Eric'
print(str)

number = 7
str = f'My lucky number is {number}'
# 'My lucky number is 7'
print(str)


price = 19.99
str = f'The price of this book is {price}'
# 'The price of this book is 19.99'
print(str)

深入f-string

表达式求值与函数调用

f-string的大括号 {} 可以填入表达式或调用函数,Python会求出其结果并填入返回的字符串内:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
str = f'A total number of {24 * 8 + 4}'
# 'A total number of 196'
print(str)

str = f'Complex number {(2 + 2j) / (2 - 3j)}'
# 'Complex number (-0.15384615384615388+0.7692307692307692j)'
print(str)

name = 'ERIC'
str = f'My name is {name.lower()}'
# 'My name is eric'
print(str)

import math
str = f'The answer is {math.log(math.pi)}'
# 'The answer is 1.1447298858494002'
print(str)

引号、大括号与反斜杠

f-string大括号内所用的引号不能和大括号外的引号定界符冲突,可灵活切换 '"

1
2
3
4
5
6
str = f'I am {"Eric"}'
# 'I am Eric'
print(str)

# SyntaxError: invalid syntax
str = f'I am {'Eric'}'

'" 不足以满足要求,还可以使用 '''"""

1
2
3
4
5
# SyntaxError: invalid syntax
str = f"He said {"I'm Eric"}"

# SyntaxError: invalid syntax
str = f'He said {"I'm Eric"}'
1
2
3
4
5
6
7
str = f"""He said {"I'm Eric"}"""
# "He said I'm Eric"
print(str)

str = f'''He said {"I'm Eric"}'''
# "He said I'm Eric"
print(str)

大括号外的引号还可以使用 \ 转义,但大括号内不能使用 \ 转义:

1
2
3
str = f'''He\'ll say {"I'm Eric"}'''
# "He'll say I'm Eric"
print(str)
1
2
# SyntaxError: f-string expression part cannot include a backslash
str = f'''He'll say {"I\'m Eric"}'''

f-string大括号如果需要显示大括号,则应输入连续两个大括号 {{` 和 `}}

1
2
3
4
5
6
7
str = f'5 {"{stars}"}'
# '5 {stars}'
print(str)

str = f'{{5}} {"stars"}'
# '{5} stars'
print(str)

f-string大括号内不能使用 \ 转义,事实上不仅如此,f-string大括号内根本就不允许出现 \。如果确实需要 \,则应首先将包含 \ 的内容用一个变量表示,再在f-string大括号内填入变量名:

1
2
# SyntaxError: f-string expression part cannot include a backslash
str = f"newline: {ord('\n')}"
1
2
3
4
5
# ord()为将'\n'的ASCII码转为八进制
newline = ord('\n')
str = f'newline: {newline}'
# 'newline: 10'
print(str)

多行f-string

f-string还可用于多行字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
name = 'Eric'
age = 27
# 多行字符串用 \ 拼接
str = f"Hello!" \
f"I'm {name}." \
f"I'm {age}."
# "Hello!I'm Eric.I'm 27."
print(str)

# """中间的字符串可以直接换行
str = f"""Hello!
I'm {name}.
I'm {age}."""
# "Hello!\n I'm Eric.\n I'm 27."
print(str)

自定义f-string格式

自定义格式

f-string采用 {content:format} 设置字符串格式,其中 content 是替换并填入字符串的内容,可以是变量、表达式或函数等,format 是格式描述符。自定义格式与.format()类似。采用默认格式时不必指定 {:format},如上面例子所示只写 {content} 即可。

宽度与精度相关格式描述符

格式描述符 含义与作用
width 整数 width 指定宽度
0width 整数 width 指定宽度,开头的 0 指定高位用 0 补足宽度
width.precision 整数 width 指定宽度,整数 precision 指定显示精度

数值类型基本格式

格式描述符 含义与作用 适用变量类型
s 普通字符串格式 字符串
b 二进制整数格式 整数
c 字符格式,按unicode编码将整数转换为对应字符 整数
d 十进制整数格式 整数
o 八进制整数格式 整数
x 十六进制整数格式(小写字母) 整数
X 十六进制整数格式(大写字母) 整数
e 科学计数格式,以e表示×10^ 浮点数、复数、整数(自动转换为浮点数)
E e等价,但以E表示×10^ 浮点数、复数、整数(自动转换为浮点数)
f 定点数格式,默认精度(precision)是6 浮点数、复数、整数(自动转换为浮点数)
F f等价,但将naninf换成NANINF 浮点数、复数、整数(自动转换为浮点数)
g 通用格式,小数用f,大数用e 浮点数、复数、整数(自动转换为浮点数)
G G等价,但小数用F,大数用E 浮点数、复数、整数(自动转换为浮点数)
% 百分比格式,数字自动乘上100后按f格式排版,并加%后缀 浮点数、整数(自动转换为浮点数)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# {content:format}
# a 为 content
# : 之后为format
a = 123.456
str = f'a is {a:8.2f}'
# 'a is 123.46'
print(str)

str = f'a is {a:08.2f}'
# 'a is 00123.46'
print(str)

str = f'a is {a:8.2e}'
# 'a is 1.23e+02'
print(str)

str = f'a is {a:8.2%}'
# 'a is 12345.60%'
print(str)
1
2
3
4
5
6
7
8
9
10
11
12
str = f'a is {a:8.2g}'
# 'a is 1.2e+02'
print(str)

s = 'hello'
str = f's is {s:8s}'
# 's is hello '
print(str)

str = f's is {s:8.3s}'
# 's is hel '
print(str)

对齐方式相关格式描述符

格式描述符 含义与作用
< 左对齐(字符串默认对齐方式)
> 右对齐(数值默认对齐方式)
^ 居中

数字符号相关格式描述符(只适合数值类型)

格式描述符 含义与作用
+ 负数前加负号(-),正数前加正号(+)
- 负数前加负号(-),正数前不加任何符号(默认)
(空格) 负数前加负号(-),正数前加一个空格

数字显示方式相关格式描述符(是否加#)

数值类型 不加**#**(默认) 加**#** 区别
二进制整数 ‘1111011’ ‘0b1111011’ 开头是否显示 0b
八进制整数 ‘173’ ‘0o173’ 开头是否显示 0o
十进制整数 ‘123’ ‘123’ 无区别
十六进制整数(小写字母) ‘7b’ ‘0x7b’ 开头是否显示 0x
十六进制整数(大写字母) ‘7B’ ‘0X7B’ 开头是否显示 0X
1
2
3
4
5
# 居中'^',显示0X前缀'#',宽度10位,十六进制整数(大写字母)
a = 1234
str = f'a is {a:^#10X}'
# 'a is 0X4D2 '
print(str)
1
2
3
4
5
# 左对齐,宽度10位,显示正号(+),定点数格式,2位小数
b = 1234.5678
str = f'b is {b:<+10.2f}'
# 'b is +1234.57 '
print(str)
1
2
3
4
5
# 高位补零,宽度15位,十进制整数,使用,作为千分分割位
c = 12345678
str = f'c is {c:015,d}'
# 'c is 000,012,345,678'
print(str)
1
2
3
4
5
# 宽度30位,科学计数法,3位小数
d = 0.5 + 2.5j
str = f'd is {d:30.3e}'
# 'd is 5.000e-01+2.500e+00j'
print(str)

任务

第1题

题目要求:

  • 使用单引号和双引号分别创建字符串(可以用中文作为字符串内容)。

代码如下:

1
2
"hello world"
'hello world'

运行结果:

1
'hello world'

第2题

题目要求:

  • 创建含有引号的字符串,观察引号错误使用引起的错误。

代码如下:

1
"hello"world"

运行结果:

1
2
3
4
  File "<ipython-input-2-47bd8e44abc4>", line 1
"hello"world"
^
SyntaxError: invalid syntax

第3题

题目要求:

  • 创建含有引号的字符串,使用转义字符。

代码如下:

1
print("\"hello\"wprld")

运行结果:

1
"hello"wprld

第4题

题目要求:

  • 使用input()输入1个字符串,并使用上述3个字符串的方法对该字符串进行修改操作,并输出结果。

代码如下:

1
2
3
4
5
massage=input()
print(massage.title())
print(massage.upper())
print(massage.lower())
# massage='hello world'

运行结果:

1
2
3
Hello World
HELLO WORLD
hello world

第5题

题目要求:

  • 接受键盘输入,将输入字符串储存到变量,然后进行字符串拼接,最后输出 “你好,姓名”。

代码如下:

1
2
3
name=input()
print('你好,'+name)
# name=XieSenshi

运行结果:

1
你好,XieSenshi

第6题

题目要求:

  • 使用制表符和换行符分别自定义创建字符串(可以为中文),并输出结果。

代码如下:

1
2
print("System:\tWindows\tLinux\tMacOS\tAndroid\tiOS")
print("System:\nWindows\nLinux\nMacOS\nAndroid\niOS")

运行结果:

1
2
3
4
5
6
7
System:	Windows	Linux	MacOS	Android	iOS
System:
Windows
Linux
MacOS
Android
iOS

第7题

题目要求:

  • 组合使用制表符(3列)和换行符(2行)自定义创建字符串(可以为中文),并输出结果。

代码如下:

1
print("System:\tWindows\tLinux\tMacOS\n\tAndroid\tiOS")

运行结果:

1
2
System:	Windows	Linux	MacOS
Android iOS

第8题

题目要求:

  • 外部输入含有空格的字符串,使用上述方法对字符串进行空白删除处理。

代码如下:

1
2
3
4
5
6
massage=input()
print(massage)
print(massage.lstrip())
print(massage.rstrip())
print(massage.strip())
# massage=" Hello world "

运行结果:

1
2
3
4
    hello world    
hello world
hello world
hello world

第9题

题目要求:

  • 外部输入含有空格的字符串,指定chars参数,分别rstrip()lstrip()strip()调用删除特定字符。

代码如下:

1
2
3
4
5
6
massage=input()
print(massage)
print(massage.lstrip('h'))
print(massage.rstrip('d'))
print(massage.strip('h'))
# masage="hello world"

运行结果:

1
2
3
4
hello world
ello world
hello worl
ello world

第10题

题目要求:

  • 个性化消息:将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today?”。

代码如下:

1
2
name='Eric'
print('Hello '+name+', would you like to learn some Python today?')

运行结果:

1
Hello Eric, would you like to learn some Python today?

第11题

题目要求:

  • 调整名字的大小写:将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。

代码如下:

1
2
3
4
name="xiesenshi"
print(name.lower # 小写
print(name.upper()) # 大写
print(name.title()) # 首字母大写

运行结果:

1
2
3
xiesenshi
XIESENSHI
Xiesenshi

第12题

题目要求:

  • 名言:找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):Albert Einstein once said, “A person who never made a mistake never tried anything new.”

代码如下:

1
print('Albert Einstein once said, “A person who never made a mistake never tried anything new.”')

运行结果:

1
Albert Einstein once said, “A person who never made a mistake never tried anything new.”

第13题

题目要求:

  • 名言2:重复练习11-14,但将名人的姓名存储在变量famous_person中,再创建要显示的消息,并将其存储在变量message中,然后打印这条消息。

代码如下:

1
2
3
famous_person="Albert Einstein"
massage=famous_person + " once said, “A person who never made a mistake never tried anything new.”"
print(massage)

运行结果:

1
Albert Einstein once said, “A person who never made a mistake never tried anything new.”

第14题

题目要求:

  • 剔除人名中的空白:存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合"\t""\n"各一次。打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip()rstrip()strip()对人名进行处理,并将结果打印出来。

代码如下:

1
2
3
4
5
6
name="    XieSenshi    "
print(name+'\t'+name+'\t'+name)
print(name+'\n'+name+'\n'+name)
print(name.lstrip())
print(name.rstrip())
print(name.strip())

运行结果:

1
2
3
4
5
6
7
    XieSenshi    	    XieSenshi    	    XieSenshi    
XieSenshi
XieSenshi
XieSenshi
XieSenshi
XieSenshi
XieSenshi

评论