1、python入门 字符串(一) ——Mosh

入门基础

  • 一、Python拼接字符串(打印变量)
    • 1、%
    • 2、format()
    • 3、()
    • 4、面向对象模板拼接——Template()
    • 5、+
      • Python字符串拼接数字(将数字转成字符串)
    • 6、join()
    • 7、f-string
  • 二、改变字符串格式
    • 1、int() ----> 整形
    • 2、float() ----> 浮点型或数字(带一个小数点)
    • 3、bool() ---->布尔值
  • 三、字符串的序号

一、Python拼接字符串(打印变量)

Python字符串拼接数字

在某些特殊场景中,我们需要将字符串与数字进行拼接,而 Python 不允许直接拼接数字和字符串,程序必须先将数字转换成字符串。

1、%

print('%s %s' %('Hello', 'world'))
>>>Hello world

%s是一个占位符,它仅代表一段字符串,并不是拼接的实际内容。实际的拼接内容在一个单独的%号后面,放在一个元组里。
类似的占位符还有:%d(代表一个整数)、%f(代表一个浮点数)、%x(代表一个16进制数)等。

2、format()

# 简洁版,按默认顺序一个一个放进去
s1 = 'Hello {}! My name is {}.'.format('World', 'Python')
print(s1)
>>>Hello World! My name is Python.

# 对号入座版
s2 = 'Hello {0}! My name is {1}.'.format('World', 'Python')
s3 = 'Hello {name1}! My name is {name2}.'.format(name1='World', name2='Python')
print(s2)
>>>Hello World! My name is Python.
print(s3)
>>>Hello World! My name is Python.

这种方式使用花括号{}做占位符,在format方法中再转入实际的拼接值。
对号入座版主要有两种,一种传入序列号,一种则使用key-value的方式。

3、()

s1 = ('Hello', ' ', 'world')
s2 = ('Hello' ' ' 'world')

print(s1) 
>>>('Hello', ' ', 'world')
print(s2) 
>>>Hello world

type(s2) 
>>>str

注意,上例中s1不是一个元组(元组:元素间没有逗号分隔符),这些元素间可以用空格间隔,也可以不要空格。使用type()查看,发现它就是一个str类型。
要求:括号()内元素是真实字符串,不能混用变量,所以不够灵活。

# 多元素时,不支持有变量
str_1 = 'Hello'
str_2 = (str_1 'world')#报错
str_3 = (str_1 str_1)#报错

# 但是下面写法不会报错
str_4 = (str_1)

4、面向对象模板拼接——Template()

from string import Template
s = Template('${s1} ${s2}!') 
print(s.safe_substitute(s1='Hello',s2='world')) 
>>> Hello world!

5、+

str_1 = 'Hello ' 
str_2 = 'world!'
print(str_1 + str_2)
>>>Hello world!
print(str_1)
>>>Hello  

字符串是不可变类型,新的字符串会独占一块新的内存,而原来的字符串保持不变。上例中,拼接前有两段字符串,拼接后实际有三段字符串。

在拼接短的字面值时,由于CPython中的 常数折叠 (constant folding)功能,这些字面值会被转换成更短的形式,例如’a’+‘b’ 被转换成’ab’,‘hello’+‘world’也会被转换成’hello world’。这种转换是在编译时完成的,而到了运行的时候就不会再发生任何拼接操作,因此会加快整体计算的速度。

常数折叠优化有一个限度,它要求拼接结果的长度不超过20

Python字符串拼接数字(将数字转成字符串)

在某些特殊场景中,我们需要将字符串与数字进行拼接,而 Python 不允许直接拼接数字和字符串,程序必须先将数字转换成字符串。

为了将数字转换成字符串,可以使用 str() 或 repr() 函数,例如如下代码:

s1 = "这是数字: "
p = 99.8
#字符串直接拼接数值,程序报错
print(s1 + p)
#使用str()将数值转换成字符串
print(s1 + str(p))
#使用repr()将数值转换成字符串
print(s1 + repr(p))

上面程序中第一个print中直接拼接字符串和数值,程序会报错。

str() 和 repr() 函数都可以将数字转换成字符串,其中 str 是 Python 内置的类型(和 int、float 一样),而 repr() 则只是一个函数。此外,repr 还有一个功能,它会以 Python 表达式的形式来表示值。对比如下代码:

st = "I will play my fife"
print (st)
print(repr(st))
>>>I will play my fife
>>>'I will play my fife'

通过上面的输出结果可以看出,如果直接使用 print() 函数输出字符串,将只能看到字符串的内容,没有引号;但如果先使用 repr() 函数对字符串进行处理,然后再使用 print() 执行输出,将可以看到带引号的字符串,这就是 Python 字符串的表达式形式。

在交互式解释器中输入一个变量(或表达式)时,Python 会自动使用 repr() 函数处理该变量(或表达式)。

这一节引用了python学习网中:https://www.py.cn/faq/python/12487.html

6、join()

str_list = ['Hello', 'world']
str_join1 = ' '.join(str_list)
str_join2 = '-'.join(str_list)
print(str_join1) 
>>>Hello world
print(str_join2) 
>>>Hello-world

str对象自带的join()方法,接受一个序列参数,可以实现拼接。**拼接时,元素若不是字符串,需要先转换一下。**这种方法比较适用于连接序列对象中(例如列表)的元素,并设置统一的间隔符。

当拼接长度超过20时,这种方式基本上是首选。不过,它的缺点就是,不适合进行零散片段的、不处于序列集合的元素拼接。

7、f-string

a = "hello"
b = "world!"
print(f"你好,{a} {b} ")
>>>你好,hello world!

其特点是在字符串前加 f 标识,字符串中间则用花括号{}包裹其它字符串变量。

input()函数得到的是字符串,若输入数字并进行运算,则需转换类型。

引用了:详解Python拼接字符串的七种方式https://blog.csdn.net/chinesehuazhou2/article/details/83628333?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

二、改变字符串格式

1、int() ----> 整形

2、float() ----> 浮点型或数字(带一个小数点)

3、bool() ---->布尔值

布尔值(Booleans)
布尔值是一个逻辑值. 只有 true 和 false (真和假).

你可以给一个变量赋值, 使用布尔操作 and, or 和 not.
例子:

Boolean1 = True
Boolean2 = False
Boolean3 = Boolean1 and Boolean2
print(Boolean3)
>>>False

Boolean1 = False
Boolean2 = not Boolean1
print(Boolean2)
>>>True

如果布尔值使用其它数的和, 将会得到下面的结果:
数值0等于布尔值 false
任何其它数值将会等于布尔值true
例子:

Number1 = 0
Boolean1 = True
Boolean2 = Number1 and Boolean1
print(Boolean2)
>>>False

(如果含有失败)这个结果将会返回false

如果计算一个布尔值的算术. (这是不明智的!), 将会返回下面的结果:
如果布尔值为 true 将会转换为数值 1
如果布尔值为 false 将会转换为数值 0
例子:

Boolean1 = True
Number1 = 100
Number2 = Boolean1 + Number1
print(Number2)
>>>101

如果使用字符串进行布尔值连接,将会返回下面的结果:
如果布尔值为 true 将会返回字符串 “True”
如果布尔值为 false 将会返回字符串 “False”
例子:

Boolean1=True
String1="Test is: "
String2=String1 & Boolean1
print(String2)
>>>"Test is: True"

如果要从反方向来比较布尔值,结果是不同的. 当使用字符串比较布尔值请使用下面的方法:
只有空字符串("")才能返回布尔值 false
任何其它的字符串(包括字符串等于"0")都将会返回布尔值 true

三、字符串的序号

字符串包括两种序号体系:正向递增序号和反向递减序号。
如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最左侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。

Python字符串也提供区间访问方式,采用[N,M]格式,表示字符串中从N到M(不包括M),其中,N和M为字符串的索引号。

可以混合使用正向递增序号和反向递减序号。
如果表中M或N索引缺失,则表示字符串把开始或结束索引值设为默认值。

字符串以Unicode编码存储,因此,字符串的英文字符和中文字符都算作1个字符。

course = 'Python for Beginners 初学者'
print(course[0])
>>>P
print(course[0:3])
>>>Pyt
print(course[0:-1]) #不包括最后一个字符
>>>Python for Beginners 初学
print(course[0:]) #可以在变长或者未知长度时使用,=course[:]
>>>Python for Beginners 初学者
print(course[:22])
>>>Python for Beginners 初

1、python学习网中:https://www.py.cn/faq/python/12487.html
2、详解Python拼接字符串的七种方式https://blog.csdn.net/chinesehuazhou2/article/details/83628333?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

你可能感兴趣的:(Python)