1.字符串的定义
•第一种方式:(单引号)
str1 = 'our company is westos'
•第二种方式:(双引号)
str2 = "our company is westos"
•第三种方式:(三引号)
str3 = """our company is westos"""
三引号还可以用于以下操作:
• 块注释:多行代码注释
• 函数的doc文档:讲函数时会说到
• 字符串格式化(按照指定的方式打印出字符串)
2.转义符号
一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
\n: 代表换行符 \": 代表双引号本身
\t: 代表tab符 \': 代表单引号本身
3.字符串的特性
1. 索引
索引(s[i] ):获取特定偏移的元素
给出一个字符串,可输出任意一个字符,如果索引为负数,就是相当于从后向前数。
# 正向索引
>>>s='hello'
>>> s[0]
'h'
# 反向索引
>>> s = "hello world"
>>> s[-1]
'd'
这里要注意,如果单词之间有空格,该空格也占一个位置,占一个索引值
2. 切片
切片S[i:j]提取对应的部分作为一个序列:
•上边界并不包含在内;
•如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;
s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法
s[start:end:step] # 从start开始到end-1结束, 步长为step;
- 如果start省略, 则从头开始切片;
- 如果end省略, 一直切片到字符串最后;
s[1:]
s[:-1]
s[::-1] # 对于字符串进行反转
s[:] # 对于字符串拷贝
3.成员操作符(判断子串)
>>> 'h' in s
True
>>> 'h' not in s
False
4.字符串的类型转换
str(obj) 将其他类型内容转换为字符串
int(obj) 将字符串转换为为整数
float(obj) 将字符串转换为浮点型
long(obj) 将字符串转换为长整型
5. 字符串连接
>>> a = "hello"
>>> b = "python"
>>>print("%s %s" %(a,b))
>>> a + " " +b
'hello python'
6.字符串的重复(*)
>>> print("*"*10 + "学生管理系统" + "*"*10)
**********学生管理系统**********
7.字符串常用操作:
1)str.capitalize()
- 将字符串首字母大写,并返回新的首字母大写后的字符串;
2)str.center(width[,'fillchar'])
- 返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空格填充。
3)'str'.count(sub[, start[, end]]) -----> int
- 返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现的次数。
4)str.endswith(suffix[, start[, end]])
- 判断字符串是否以suffix结束,如果start和end指定,则返回str中指定范围内str子串是否以suffix结尾,如果是,返回True;否则返回False
5)str.startswith(prefix[, start[, end]])
- 判断字符串是否以prefix开始,如果start和end指定,则返回str中指定范围内str子串是否以prefix开始,如果是,返回True;否则返回False
6)str.find(sub[,start[,end]])
- 判断sub是否在str中,存在返回索引值,不存在返回-1.
7)str.index(sub[,start[,end]])
- 与find方法函数功能相同,如果sub不存在时抛出ValueError异常
8)判断操作
str.isalnum() //判断是否都是字母或数字
str.isalpha() //判断是否都是字母
str.isdigit() //判断是否都是数字
str.islower() //判断是否都是小写
str.isspace() //判断是否都是英文空格
str.istitle() //判断是不是都是标题(有大小写)
str.isupper() //判断是不是都为大写字母
9)str.join(seq)
- 以str作为分隔符,将序列seq中的所有元素合并为一个新的字符串。
10)str.replace(old,new[,count])
- 将str中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换前count个
11)str.split([sep[,maxsplit]])
- 以sep字符串作为分割符对str进行切割,默认为空格;- maxsplit代表切割的此处
12)str.strip([chars])
- 返回一字符串,将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格。
13)去除左右两边的空格, 空格为广义的空格, 包括: \n, \t, \r
>>> s.lstrip('he')(去除字符串左边的“he”)
>>>s.rstrip('he')(去除字符串右边的“he”)
8.字符串常用内置方法
>>> min(2,4)
2
>>> max(2,5)
5
>>> sum(range(1,101))
5050
2.)枚举: 返回索引值和对应的value值;
>>> for i,v in enumerate('hello'):
print(str(i) +" -----> " + v)
zip(将两个字符串相同索引对应的值链接起来)
>>> s1 = 'abc'
>>> s2 = "123"
>>> for i in zip(s1,s2):
... print(i)
...
('a', '1')
('b', '2')
('c', '3')
>>> for i in zip(s1,s2):
... print("".join(i))
...
a1
b2
c3
>>> for i in zip(s1,s2):
... print("-".join(i))
...
a-1
b-2
c-3
练习:
1.判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
num=input("请输入一个数:")
if num == (num[::-1]):
print('是回文数')
else:
print('不是回文数')
2.判断变量名是否合法?
# 1. 变量名的第一个字符是否为字母或者下划线?
# 2. 如果是, 继续判断(****);---参考4
# 3. 如果不是, 报错, 不合法;
# 4. 依次判断除了第一个字符之外的其他字符;
# 5. 判断是否为字母数字或者下划线
# eg: "h@ello@"
while True:
s=input("变量名")
if s == 'exit':
print("欢迎下次使用.......")
break
if s[0].isalpha() or s[0]=="_":
for i in s[1:]:
if not(i.isalnum() or i=="_"):
print("%s变量名不合法" %(s))
break
else:
print("%s变量名合法" %(s))
else:
print("%s变量名不合法" %(s))
3.编写程序, 输出星号组成的菱形
n = int(input('Num:'))
for i in range(1,n):
print(('* '*i).center(3*n))
for i in range(n,0,-1):
print(('* '*i).center(3*n))
4.给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前>后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
while True:
n=input('输入一个句子(space and words):')
print(' '.join(n.split(' ')[::-1]))