今天学习的内容包含:
字符串 (string)
1,字符串的定义方式:
单引号 双引号 三单引号 三双引号
'aaa' "aaa" '''aaa''' """aaa""",
s1 = "Hello world!"
2,Python 没有字符的概念,单个字符'a'也被认为是字符串,这个跟C C++是不一样的。
3,字符串是固定不变的,其含义是值一个字符串定义了之后是不会被改变的,通过调用字符串的一个方法得到的字符串是新的字符串,并不会改变原来字符串的内容。
4,字符串的运算:
+ += < <= > >= != == in not in 索引
+表示字符串的拼接 大小比较是按位逐位比较两个字符串的大小,in和not in判断一个字符串是否在另外字符串或者列表 元组 集合等存储单元中,可以直接使用s1[0]来获取到s1的第0位的字符,得到一个新的只有单个字符的字符串。
5,字符串的切片
语法定义位:s1[start:end:step]
start是指的初始切片位置,包含该值,缺省时默认位0
end是结束的位置,不包含该值,缺省时默认为len(s1)
step是指的以多少的步伐进行跳转,数学含义就是 i = i + step,缺省时为1
数学上表达就是 while start<= i < end : i = i + step,三个都缺省时表示就是原字符串
另外需要说明的是如果切片包含负数,是指的从右往左数的值,举例来说就是
s1[-3:-1:1]得到的是"d!", -3是指的从最后一位往前数,第三位开始,-1表示最后一位
6,字符串常用函数
s1.center(width, fillchar) 将s1以宽度width进行居中显示,多余的部分使用fillchar进行填充,默认位空格
s1.count("abc") 计算“abc"在字符串中存在的总个数
s1.isalpha() 如果s1是全部的字母组成,返回true,这里的字母包含中文字符也在此范畴,不仅仅只是英文字母,只要不包含数字 空格 标点符号等就是true
s1.isdigit() 如果s1全部是数字组成的字符串,则返回true,注意中间包含了空格或者其他字符都返回false
s1.islower() 如果s1中没有大写字母,则返回true
s1.isupper() 如果s1中没有小写字母,则返回true
s1.isspace() 如果s1中全部是空格组成,则返回true,空格在这里指的是" ","\n","\t","\b","\r"
s1.startswith("abc") s1.endswith("abc") 判断s1是否以"abc"开始或者结束
s1.find("abc") 查找第一个出现"abc"的地方,返回第一个字母所在的下标
s1.strip() 将s1的前面和后面所有的空格都去掉之后得到一个中间实质内容的字符串
lstrip() rstrip()分别是去掉左边空格和去掉右边空格之后得到新字符串
s1.replace(old,new[,count])将s1中所有old字符串都使用new字符串替换,第三个参数代表替换的个数而不是全部替换
s1.split("abc") 将s1以"abc"进行分割,产生多个字符串数组(列表)
max(s1) min(s1) len(s1)
7,字符串的转义
常见转义有
\\ 单斜杠 \' 单引号 \"双引号 \t tab键 \n换行 \b 退格 \r 回车 \f 换页
8,格式化字符 %
%s 格式化字符串 %d 格式化10进制整数 %f 格式化10进制浮点数 %o 格式化八进制整数 %x 格式化十六进制整数
%e 格式化为科学计数法表示 %g 格式化为根据位数自动选择是否科学计数法
格式化举例
题目:输入3个字符串,将3个字符串以最大长度字符串右对齐打印出来
分析:在已知长度的时候,假设位10,正常打印的时候都是直接使用print("%10s" %s1)就可以实现了
但是该问题的难点在于最大长度取决于用户输入的长度,所以需要先计算最大长度
m = max(len(s1),len(s2),len(s3))
此时虽然获得了最大值,但是还是无法使用print(""%ms" %s1),也无法使用print(""%(%d)s" %(m,s1))
所以需要构造一个格式化字符串
fmt = "%%%ds" %m #这里是注释说明,%%是转义位一个%,%d是传入的参数m,s是格式化字符串的标志,假设传入的字符串最大长度位15,则fmt="%15s",print(fmt % s1)就相当于print("%15s"%s1)
代码如下:
s1 = input("please input line 1: ")
s2 = input("please input line 1: ")
s3 = input("please input line 1: ")
m = max(len(s1),len(s2),len(s3))
fmt = "%%%ds" %m
print(fmt %s1)
print(fmt %s2)
print(fmt %s3)