一.字符串的定义 字符串是 Python 中最常用的数据类型,创建字符串只要给变量指定一个字符类型的值即可 1.单引号引用字符串
a = 'honey'2.双引号引用字符串
a = "sweet"3.使用""" 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
a = """ @@@山清水秀 ¥¥¥世外桃源 &&&鸟语花香 """ print(a) @@@山清水秀 ¥¥¥世外桃源 &&&鸟语花香二.字符串的特性 1.索引 字符串属于字符的有序集合,可以通过其位置来获取具体的元素。在Python中,通过索引的方式获取字符重的具体元素。索引时从0开始
s = 'fail' print(s[0]) f print(s[1]) a print(s[2]) i print(s[3]) l print(s[4]) print(s[4]) IndexError: string index out of range ##报错,超出范围2.切片 切片可以提取相应部分数据,通常右边界不包括在提取字符串内 格式为:s[start:stop:step] 从start开始到end -1结束,步长为step
name = 'mike.Angleo'输出指定的索引从第0个元素到第3个但不包括第三个,相当于前三个元素
print(name[0:3]) mik从索引0到索引5,步长为2
print(name[0:6:2]) mk.显示所有字符
print(name[:]) mike.Angleo显示前5个字符
print(name[:5]) mike.所有字符进行反转
print(name[::-1]) oelgnA.ekim显示除第一个字符以外的所有字符
print(name[1:]) ike.Angleo显示除前两个字符以外的所有字符
print(name[2:]) ke.Angleo3.重复 格式:变量*重复次数
>>> name = 'mike' >>> print(name * 5) mikemikemikemikemike4.连接
>>> print('hello'+'mike') hellomike >>> print('hello'+name) hellomike >>> b = 'hello' >>> print(name + b) mikehello5.成员操作符 in ##是成员为真 not in ##不是成员为真 可以判断指定字符是不是包含在字符串中(是否为i组成字符串的成员),输出值为真true和假false
name = 'mike.Angelo' print('mike' in name) ##判断mike是否在name中 print('mk' in name) print('Ao' not in name) ##判断Ao是否不在name中 True False True6 for遍历循环字符串的每一个字符
name = 'mike' for i in name: print(i) m i k e7.判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左) 读都是一样的整数。
num = str(input('Please input a number:')) if num[::-1] == num: print('%s是回文数' %(num)) else: print('%s不是回文数' % (num))三.字符串的常用方法 istitle() ##判断字符串是否为标题(标题首字母大写) 输出为True 或者False isupper() ##判断字符串是否为全部大写 输出为True 或者False islower() ##判断字符串是否为全部小写 输出为True 或者False lower() ##将字符串转化成小写 upper() ##将字符串转化成大写 title() # 将字符串转化成标题格式
>>> 'WORLD'.istitle() False >>> 'World'.istitle() True >>> 'World'.isupper() False >>> 'WORLD'.isupper() True >>> 'World'.islower() False >>> 'world'.islower() True >>> 'WORLD'.lower() 'world' >>> 'world'.upper() 'WORLD' >>> 'world'.title() 'World'endswith(‘str’) ##判断是否以str结尾输出结果为True或者False startswith(‘str’) ##判断是否以str开头输出结果为True或者False isdigit() ##判断字符串是否全部由数字组成 isalpha() ##判断字符串是否全部由字母组成 isalnum() ##判断字符串是全部由字母和数字组成
>>> name = 'www.183.com' >>> name.endswith('com') True >>> name.startswith('www') True >>> name.isdigit() False >>> name.isalpha() False >>> name.isalnum() Falsestrip() ##去除左右两边的空格,空格为广义的空格 包括:\t \n lstrip() ##去除左边的空格,空格为广义的空格 包括:\t \n rstrip() ##去除右边的空格,空格为广义的空格 包括:\t \n #同时也可以在括号中指定字符,将左右两边的指定字符串去除
>>> a = '\n\t\t hello westos \t\t\n' >>> a.strip() 'hello westos' >>> a.lstrip() 'hello westos \t\t\n' >>> a.rstrip() '\n\t\t hello westos' >>> b = 'hehehessshehe' >>> b.strip('he') 'sss' >>> b.lstrip('he') 'ssshehe' >>> b.rstrip('he') 'hehehesss'字符串的对齐 center(num,’’) ##预留为值num个 指定字符串居中,剩下的以 填充,不指定默认以空格填充 ljust(num,’’) ##预留为值num个 指定字符串居左,剩下的以 填充,不指定默认以空格填充 rjust(num,’’) ##预留为值num个 指定字符串居右,剩下的以 天填充,不指定默认以空格填充
print('luck'.center(20)) print('luck'.center(20,'*')) print('luck'.ljust(20)) print('luck'.ljust(20,'*')) print('luck'.rjust(20)) print('luck'.rjust(20,'*')) luck ********luck******** luck luck**************** luck ****************luck字符串的搜索与替换 find找到子字符串,并返回最小的索引
s = 'successfully fail successfully' print(s.find('successfully')) print(s.find('fail')) print(s.rfind('successfully')) 0 ##分别返回s[0] 13 ##返回s[13] 18 ##返回s[18]replace ##替换字符
s = 'successfully fail successfully' print(s.replace('successfully','fail')) fail fail fail字符串的统计 count(子字符串) ##统计子字符串出现的次数 len(字符串) ##统计字符串的长度
print('successfully'.count('s')) print('successfully'.count('ss')) print(len('successfylly')) 3 1 12字符串的分离与连接 split(分隔符) ##以指定的分隔符将字符串分隔成几部分 符号.join(分隔后的字符串) ##用符号将分隔后的字符串重新连接起来
P = '172.25.4.105' IP1 = IP.split('.') ##以.分隔开 print(IP1) print(IP1[::-1]) print(IP1[0]) ##分隔后支持索引 print('.'.join(IP1)) ##以.连接 print('/'.join(IP1)) ##以/连接 print('~'.join(IP1)) ##以~连接 print('&'.join(IP1)) ##以&连接 ['172', '25', '4', '105'] ['105', '4', '25', '172'] 172 172.25.4.105 172/25/4/105 172~25~4~105 172&25&4&105四.练习 1.判断变量名定义是否合法:变量名可以由字母 数字 下划线组成;变量名只能以字母或者下划线开头
while True: name = input('请输入一个变量:') if name == 'exit': print('即将退出!!') break if name[0].isalpha() or name[0] == '_': for i in name[1:]: if not (i.isalnum() or i == '_'): print('变量不合格!!') break else: print('变量合格!!') else: print('变量不合格')2.给定一个句子(只包含字母和空格), 将句子中的单词位置反转, 单词用空格分割, 单词之间只有一个空格,前>后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
sentence = input('Please input a sentence:') sentence1 = sentence.split(' ') sentence2 = sentence1[::-1] print(' '.join(sentence2)) Please input a sentence:hello xiao mi mi xiao hello3.设计一个程序,帮助小学生练习10以内的加法 详情: 随机生成加法题目; 学生查看题目并输入答案; 判别学生答题是否正确? 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);
n = 0 z = 0 import random while True: num1 = random .randint(1,10) num2 = random.randint(1,10) print('%d + %d = ' %(num1,num2)) answer = input('Please input your answer:') a = num1 + num2 if answer == 'exit': break elif a == int(answer): print('YES!!') n +=1 else: print('SORRY!!') z += 1 p = n/z print('答题总数为%d,正确数为%d,正确率为%.2f' %(z,n,p))4.小学生算术能力测试系统: 设计一个程序,用来实现帮助小学生进行百以内的算术练习, 它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目; 练习者根据显示的题目输入自己的答案, 程序自动判断输入的答案是否正确并显示出相应的信息。
n=0 i=0 import random while i<10: op = ['+','-','*','/'] action = random.choice(op) num1 = random.randint(1,100) num2 = random.randint(1,100) if action == '+': answer = input('%d + %d = ' %(num1,num2)) if int(answer) == num1+num2: print('回答正确') n += 1 else: print('回答错误') elif action == '-': answer = input('%d - %d = ' %(num1,num2)) if int(answer) == num1-num2: print('回答正确') n+=1 else: print('回答错误') elif action == '*': answer = input('%d * %d = ' %(num1,num2)) if int(answer) == num1*num2: print('回答正确') n+=1 else: print('回答错误') else: answer = input('%d / %d = ' %(num1,num2)) if int(answer) == num1/num2: print('回答正确') n+=1 else: print('回答错误') i+=1 p = n/i print('%d道题,您答对%d道,正确率为%.2f' %(i,n,p))