day03
字符串 str(string)
作用:
用来记录文字信息
表示方法:
在非注释中,凡是用引号扩起来的部分都是字符串
'' 单引号
"" 双引号
''' 三引号
""" 三双引号
空字符串的字面值表示方式:
''
""
''' '''
""" """
注:空字符串的布尔值bool(x)为False
非空字符串的字面值
'hello'
"hello"
''' hello '''
单引号和双引号的区别:
单引号内的双引号不算结束符
双引号内的单引号不算结束符
示例:
print("im' hello")
三引号字符串
以''' 或""" 开头,以''',"""结尾的字符串
作用:
三引号字符串中的换行会自动转换为换行符'\n'
三引号内可以包含单引号和双引号
示例:
# 表示如下
welcome to 北京
I like python!
>>> s = 'welcome to 北京\nI like python!'
>>> print(s)
welcome to 北京
I like python!
>>> s='''welcome to beijing
... I like Python'''
>>> s
'welcome to beijing\nI like Python'
>>> print(s)
welcome to beijing
I like Python
隐式字符串字面值的拼接
"I am " "bob"
得到的是 s = "I am bob"
常用的ASCII编码:
字符 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
序列的概念:
字符串就是有序的排列
求序列的长度:
len(x) 返回字符串中字符的个数
字符串练习:
'1234' 有几个字符 4
'5\'4"' 有几个字符 4
'\"A\x34' 有几个字符 3
'\n\bc\t\r'
raw 字符串(原始字符串)
格式:
r"字符串内容"
r'字符串内容'
r"""字符串内容"""
r'''字符串内容'''
作用:
让转义字符'\'无效
示例:
>>> a = "c:\newfile\test.py"
>>> print(a)
c:
ewfile est.py
>>> b = r"c:\newfile\test.py"
>>> print(b)
c:\newfile\test.py
>>>
字符串的运算:
+ 加号运算符用于拼接字符串
+= 用于拼接运算后改变原变量的绑定关系
示例:
x= "abcd"+"efg"
print(x) # abcdefg
x+='123'
pritn(x) # abcdefg123
* 运算符生成重复的字符串
x= 'ab' * 2 'abab'
注:
字符串只能和整数进行相乘
*= 生成重复的字符串并改变原变量的绑定关系
x = '123'
x* = 2 # '123123'
练习:
写一个程序,打印出一个高度为4行的矩形方框
要求,输入一个整数,此整数代表矩形的宽度.
如:
输入矩形宽度: 3
***
* *
* *
***
答案:
```
1. ine = int(input("请输入矩形的宽度:"))
for i in range(4):
# 打印第一行和最后一行
if(i==0 or i == 3):
for j in range(line):
print("*",end="")
print()
else:
#中间行第一和最后一个打印* ,其余打印" "
for j in range(line):
if(j==0 or j == line-1):
print("*",end="")
else:
print(" ",end="")
print()
```
in / not in 运算符
作用:
in 用于序列,字典,集合中,用于判断某个值是否存在于容器中,如果存在返回True,否则返回False
说明:
not in 返回结果与 in 相反
格式:
对象 in 序列
示例:
>>> x= "hello python"
>>> "python" in x
True
>>> "hahaha" not in x
``True
练习:
写程序输入一个长长的字符串,然后判断你的姓名是否存在于这个字符串中.
如果存在,则打印: '您的名字出现了"
否则提示:'没出现你的名字"
Day03-PM
索引 index
概念:
python 字符串是不可改变的序列
所有的序列都可以通过索引来获取其中的数据元素
语法:
字符串[整数表达式]
说明:
1. 序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
2. 序列的反向索引是从-1开始的,01代表最后一个,-2代表倒数第二个,一次类推,第一个为-len(s)
示例:
s="ABCD"
s[0] # 'A'
s[-1] # 'D'$ 反向索引
s[-2] # 'C'
s[8] # index Error 越界错误
练习:
写程序:,输入一个字符串,打印如下内容:
1. 打印这个字符串的第一个字符?
2. 打印这个字符串的最后一个字符?
3. 如果这个字符的长度是奇数,打印中间这个字符?
注:
求字符串的长度的函数len(s)
答案:
```
str = input("请输入一个字符串:")
print("第一个字符是:",str[0])
print("最后一个字符是:",str[-1])
if(len(str)&1!=0):
#是奇数 Python中的除法不整除的时候会保留小数 5/2 =2.5
print("中间的字符",str[int((len(str)//2 ))])
```
切片操作:(slice()可以越界)
概念:
从字符串序列中取出相应的元素重新组成一个字符串序列
语法:
s[(开始索引b):(结束索引:e):(步长:s))]
注:
小括号()扩起的部分代表可省略
说明:
1. 开始索引b代表切片切下的位置,0代表第一个元素,1代表第二个元素,-1代表最后一个元素
2. 结束索引e是切片的终止索引(但不包含终止点,可以越界)
3. 步长是切片每次获取玩当前元素后移动的方向和偏移量
3.1 没有步长,相应于步长为1(默认为1)
3.2 当步长为整数时,取正向切片,开始索引默认为0,结束索引为最后一个元素的下一个位置
3.3 当步长为负数时,取反向切片,默认的起始位置为最后一个元素,终止位置为第一个元素的前一个位置
示例:
s = "abcde"
a = s[:4] # abcd
a = s[1:] # bcde
a = s[0:2] # ab
a = s[:] # abcde
a = s[1:1] # ''
a = s[4:1] # ''
>>> a = s[4:1:-1]
>>> a # 'edc'
a = s[ ::2] # 'ace'
a = s[4:0:-1] # 'edcb'
a = s[4::-2] # 'eca'
练习:
1. 写一个程序:输入一个字符串,把字符串的第一个字符和最后一个字符去掉,打印出处理之后的字符串
2. 输入任意一个字符串,判断这个字符串是否是回文
回文(是指中心对称的文字)示例:
上海自来水来自海上
ABCBA
解答:
```
1.
str = input("请输入一个字符串:")
str1 = str[1:-1] # 取出中间部分
print("源字符串:",str,"现字符串:",str1)
2.
str = input("请输入一个字符串")
# 思路: 分两个str,正str,反str,判断两个str是否相等?
str1= str[0:int(len(str)//2)]
str2 = str[-1:int(-len(str)//2):-1]
if(str1==str2):
print(str,"是回文数!")
else:
print(str,"不是回文数!")
```
python3 中能用于字符串的函数
len(x) 返回字符串的长度
max(x) 返回字符串中编码值最大的字符
min(x) 返回最小值的字符
实例:
s="hello"
len(s) # 5
max(s) # o
min(h) # e
字符串编码转换函数:
ord(c) 返回一个字符c的Unicode编码值
chr(i) 返回i这个值所对应的字符
示例:
print(order('A') # 65
print(chr(65)) # A
整数转字符串的函数:
bin(i) 将整数转换为二进制字符串
oct(i) 将整数转换为八进制字符串
hex(i) 将整数转换为十六进制字符串
示例:
bin(8) # '0b1000'
oct(9) # '011'
hex(15) # '0xf'
字符串的构造(创建)函数:
str(obj ='') 将对象转换为字符串
帮助函数 help(x)
help(函数名)
help(类型名)
dir(str) # 查看str的所有函数
python3 中常用的字符串方法(method)
方法的调用语法:
对象.方法名(方法传参)
示例:
'abc'.isalpha()# True判断'abc'是否是字母
'123'.isalpha()# 报错
'123'.isdigital()# 判断字符串中的字符是否全为数字
center()函数
S.center(width[,fill])
width表示填充后的字符串长度
将原字符串居中,左右默认填充空格
count(函数)
S.coun(sub[,start[,end]] 获取字符串中子串的个数
start: 开始索引
end: 结束索引
示例:
>>> s= 'AB ABC BCD ABC'
>>> s.count("AB")
3
find()函数
S.find(sub[,start[,end]])
获取字符串中子串sub的缩影,失败返回-1
'AB ABC BCD ABC'
>>> s.find("AB")
0
>>> s.find("abcd")
-1
文档参见:
S.replace()函数
S.replace(old,new[,count])
count:表示替换的个数,默认是全部替换
将原字符串的old用new代替生成一个新的字符串
s="ABAABAB"
>>> s.replace("A","a")
'aBaaBaB'
s.replace("A","a",2)
>>> s.replace("A","a",2)
'aBaABAB'
startswith(prefix[,start[,end]])
endswith(suffix[,start[,end]])
详见:
help(str)
练习1.:
输入一个字符串:
1. 判断您输入的字符串有几个空格
2. 将源字符串左右空白字符去掉,打印出有效的的字符的个数
3. 判断您输入的是否是数字
3.1 如果是数字,判断你输入的数字是否大于100
解答:
```
1.
str1 = input("请输入一个字符串:")
print("源字符串:",str1,"含有空格数:",s.count(" ")
2.
print("源字符串:",str1,"有效字符个数",str1.strip())
3.
str = input("请输入一个数:")
if str1.isdigit():
# 判断数字是否大于100,如果字符串是整数
print("大于" if int(str1) > 100 else "小于", "100")
else:
print("不是整数!")
```
练习:
1. 用字符串* 运算符打印三角形
要求输入一个整数,此整数代表最长的一行星离左侧的子节数
如:
输入最左侧的距离:3
打印如下:
*
***
*****
*******
2. 输入一个字符串,把输入的字符串中的空格全部去掉,打印出处理后的字符串的长度和字符串的内容
3. 输入三行文字,让这三行文字在一个方框内居中显示
如输入(不要输入中文)
hello!
I'm like python!
I like python
打印如下:
+-----------------+
| hello! |
| I'm like python! |
| I like python |
+-----------------+
解答:
```
1.
nums = int(input("请输入一个整数:"))
line1 = " " * (nums + 3) + "*" * 1
line2 = " " * (nums + 2) + "*" * 3
line3 = " " * (nums + 1) + "*" * 5
line4 = " " * nums + "*" * 7
print(line1, line2, line3, line4, sep="\n")
2.
str1 = input("请输入一个字符串:")
print(len(str1.strip()), str1.strip())
3.
line1 = input("请输入第一行内容:")
line2 = input("请输入第二行内容:")
line3 = input("请输入第三行内容:")
# 获取3行中最大的字符串的长度+ 5形成矩形的长
max1 = max(max(len(line1), len(line2)), len(line3)) + 5
line0 = "+" + "-" * (int(max1)) + "+"
line1 = '|' + line1.center(max1) + '|'
line2 = '|' + line2.center(max1) + '|'
line3 = '|' + line3.center(max1) + '|'
print(line0, line1, line2, line3, line0, sep="\n")
```