Python语法(4)

Python语法(4)

这次我们讲的是字符串,这是我认为特别重要的地方!!!

1.字符与整数之间的联系

每个常用字符其实都有一个对应的整数表示,二者之间可以相互转化,整数范围大概是-128-127,二者之间是可以相互转化的,但是要注意的是目前没有出现负数与之对应的字符
将字符转化成对应的ASCII码用ord()函数,注意输入得是一个字符,不能是字符串
将ASCII码转成对应的字符用chr()函数

c = 'a'
print(ord(c))#转化成对应的ASCII码
b = 12
print(chr(b))#转化成对应的字符

常用的ASCII码:'A'-'Z'是65-90,'a'-'z'是97-122,'0'-'9'是48-57
上面可以看出小写字母的ASCII码是大于大写字母的。
注意:在C语言和Java中字符和整数之间是可以相互默认转化的,但是在Python中字符不可以参加数值运算

2.字符串常量的写法

在Python中,字符串既可以用单引号来表示,也可以用双引号来表示,二者完全相同。但是在C语言和Java中就不一样了,他们用单引号表示字符,用双引号表示字符串。

a = "hello Python"
print(a)
b = 'hello world'
print(b)
#都是可以的

两个字符串如果并排写,Python中会自动合并

a = "how are"" you"
print(a)
#这里会直接输出how are you

一个字符串如果包含多行,可以采用"""..."""或者是'''...'''的初始方式,字符串中将自动包含回车字符

a = """what happen
buzhidao
zenmel
meishi
"""
print(a)
#会按每行输出
'''
输出结果:
what happen
buzhidao
zenmel
meishi
'''

转义字符

转义字符 含义 ASCII码
\n 回车 10
\ \ 表示一个反斜杠\ 92
\ '' 表示一个双引号'' 34
\ ' 表示一个单引号' 39
print("My name is :\n\"Du463\"")

另外,如果双引号里面有单引号,此时单引号也是会输出的。

print("''")

访问字符串中每个字符

可以用下标读取字符串中的每个字符,下标从0开始,也可以是负数,这里与之前在列表中那里讲的表示方法一样。
如果字符串长度是n,那么下标只能取-n到n-1之间的整数,超出范围就会报错
注意:字符串中的每个字符是不可以修改的

a = "hello python"
print(a[4])#返回下标是4的字符
#也可以输出对应的ASCII码
print(ord(a[4]))
print(a[4],ord(a[4]))#输出o 111
a[1]='2'#这里会报错

注意:Python中报错不像C语言或者Java那样直接不运行,他会运行到报错的位置时候停止,但是之前的代码都是可以运行的

字符串的切片操作

字符串的切片操作会得到一个新的字符串,用法与列表那里讲的差不多,如有需要可以回去看我发的Python语法3

str = "wo shi du463"
str1 = str[1:4]
str2 = str[:5]
str3 = str[1:]
print(str1,str2,str3)
#当然下标也可以是负数,表示方法也是一样的

注意:字符串的切片是不支持写操作的,也就说不可以改变字符串中的字符

字符串的复制

字符串的复制不像列表,字符串每次复制都会得到一个新的字符串,对新字符串进行更改是不会影响到原字符串的

字符串的运算

字符串的加法可以将两个字符串拼接起来,得到一个新字符串。
字符串乘以一个整数,可以将若干个自身拼接起来,得到一个新字符串。
字符串支持比较运算符,按字典序比较大小。即如果两个字符串相同,则表示相等;否则找到两个字符串从左到右数第一个不一样的字符,哪个字符串的字符的ASCII码小,哪个字符串的字典序就小;另外空字符比任何字符都小。

a = "du463"
print(a+a)
print(a*3)
print("2131"<="321")
b = a*3
print(b<a)

字符串的常用操作

len(s)返回字符串长度。
s.split(sep)返回一个字符串列表。如果给出了sep就按sep分隔;如果没给出,则会按空格分隔,但连续的空格会被视为单个分隔符,而且会忽略首尾的空白字符。
s.strip()将首尾的空白字符删除。
s.replace(old, new)将s中所有的old子串都改成new。
s.find("abc")查询某个子串在s中第一次出现的下标;如果不存在,则返回-1。
s.rfind("abc")查询某个字符串在s中最后一次出现的下标,如果不存在,返回-1.
a,b=["123",'233']表示将第一个字符串赋值给a,第二个字符串赋值给b
s.isdigit()当字符串s不是空字符串,且包含的所有字符都是数字时返回True,否则返回False
s.startswith(prefix)判断prefix是否为s的前缀。
s.endswith(suffix)判断suffix是否为s的后缀。
s.lower()将所有大写字母变成小写。
s.upper()将所有小写字母变成大写。
s.join(a),a是一个字符串列表,这个函数返回将a中的字符用s作为分隔符拼接起来的结果。

注意返回的字符串都是新字符串,原字符串不变

s1 = "abc def xyz"
print(len(s1))  # 输出11
print(s1.split())  # 输出['abc', 'def', 'xyz']
s2 = "  abc abc  "
print(s2.strip())  # 输出abc abc
print(s2.replace("abc", "*"))  # 输出  * *
print(s2.find("abc"), s2.find("xyz"))  # 输出2 -1

s3 = "Abc deF"
print(s3.startswith("Ab"))  # 输出True
print(s3.endswith("deF"))  # 输出True
print(s3.lower())  # 输出abc def
print(s3.upper())  # 输出ABC DEF

s4 = ", "
a = ["aa", "bb", "cc"]
print(s4.join(a))  # 输出aa, bb, cc

做题补充

当不知道读入的具体行数时候,可以使用如下方法,一次性读取所有行

from sys import stdin
for line in stdin.readlines():
	print(line.strip())#顺便删除多余的空白字符
posted @ 2023-09-27 12:42  du463  阅读(19)  评论(0编辑  收藏  举报