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())#顺便删除多余的空白字符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理