python——字符串及练习
一、字符串的定义
# 定义一个字符串a = 'hello'# 有特殊字符时,需要转译c = 'I\'m a student'# 或者特殊字符用双引号引起来d = "I'm a student"print(a)print(c)print(d)12345678910
二、字符串的特性
(1)索引:通过字符串的下标来打印元素
(2)切片:
(3)重复
(4)连接
(5)成员操作符
(6)for循环(迭代)
# 1.索引print('1.索引')a = 'hello'# a[0] 表示a中的第一个元素print(a[0])# a[1] 表示a中的第二个元素print(a[1])print('2.切片')# 2.切片# 切片的规则:s[start:end:step] 从start开始到end-1结束,步长:stepprint(a[:3]) # 下标为3的元素之前的所有元素print(a[0:3]) # 第0个元素到第一个元素print(a[::-1]) # 倒序输出print(a[0:4:2]) # 第0个和第四个之间, 步长为2,输出a中元素print(a[1:]) # 除了第一个元素,其他元素全部输出# 3.重复print('3.重复')print(a*2) # 把a中元素重复输出两次 # 4.连接print('4.连接')print(a+' python') # 5.成员操作符print('5.成员操作符')print('h' in a) # 判断h是否在a中,如果在,就输出Trueprint('p' in a) # 判断p是否在a中,如果不在,就输出False# 6.for循环(迭代)print('6.for循环(迭代)')for i in a: print(i)12345678910111213141516171819202122232425262728293031323334
练习:回文数判断
num = input('Num:')if num == num[::-1]: print('这是一个回文数')else: print('这不是一个回文数')12345
三、字符串开头结尾的匹配
1、通过条件匹配文件名
filename = 'hello.loog'if filename.endswith('.log'): print(filename)else: print('error filename'12345
2、通过字符串的首尾来匹配
url1=input('请输入yum源路径:')url2=input('请输入ftp服务的路径:')url3=input('请输入http服务的路径:')if url3.startswith('http://'): print('来自网页')else: print('未找到网页')if url1.endswith('rhel'): print('yum源已经配置好')else: print('没有yum源')if url2.startswith('ftp'): print('匹配正确')else: print('匹配失败')123456789101112131415
3、去除两边空格
标题:首字母大写,其他字母必须小写upper # 转换成大写isupper # 判断是否大写rstrip # 去除右边的空格,空格是广义的空格,不仅仅是空格键按出来的空格lstrip # 去除左边的空格12345
如下:
In [1]: s=' hello ' In [2]: sOut[2]: ' hello ' In [3]: s.strip()Out[3]: 'hello' In [4]: s.rstrip()Out[4]: ' hello' In [5]: s.lstrip()Out[5]: 'hello ' 123456789
练习:判断大小写和数字
# 判断字符串里每个元素是什么类型,一旦有一个元素不满足,就返回Falseprint('123'.isdigit())print('123abs'.isdigit()) # title(标题),判断某个字符串是否为标题# 标题:第一个字母大写,其余位置为小写 print('Akdsf'.istitle())print('AdsdaDS'.istitle()) # 判断某个字符串是否是大写或者小写 print('hello'.upper()) # 把hello以大写输出print('hello'.isupper()) # 判断hello是否为大写print('HELLO'.islower()) # 判断HELLO是否为小写print('HELLO'.lower()) # 把HELLO以小写输出 print('hello123'.isalnum()) # 判断hello123是否为字母或数字print('123'.isalpha()) # 判断123是否为字母print('qqq'.isalpha()) # 判断qqq是否为字母12345678910111213141516
练习:判断变量名是否合法
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('%s变量名不合法' %name) break else: print('%s变量名合法' %name) else: print('%s变量名不合法' %name) 注:s[1;]: # 第一个字符之后的所有字符123456789101112131415
练习:字符串的搜索与替换
s = 'hello world hello' # find:找到子串,并返回最小的索引print(s.find('hello'))print(s.find('world')) # rfind:找到子串,并返回最大索引print(s.rfind('hello'))print(s.rfind('world')) # 替换字符串中的所有’hello‘为’westos‘print(s.replace('hello','redhat'))123456789101112
练习:字符串的对齐
print('学生管理系统'.center(30)) # 居中print('学生管理系统'.center(30,'*')) # 居中print('学生管理系统'.ljust(30,'*')) # 左对齐print('学生管理系统'.rjust(30,'*')) # 右对齐print('学生管理系统'.ljust(30,'+')) # 左对齐12345
四、统计字符串的个数
print('hello'.count('l')) # 统计hello中l的个数print('hello'.count('ll')) # 统计hello中ll的个数print(len('hello')) # 查看hello的长度123
五、字符串的分离和连接
# 分离字符串a='172.25.254.1'b=a.split('.') # 以 . 为分隔符分离a字符串,并保存在b变量中print(b) # 输出b变量print(b[::-1]) # 逆序输出b变量 date = '2019-1-16'date1=date.split('-')print(date1) # 连接字符串print(' '.join(date1)) # 指定用' '来连接被分离的变量print('/'.join(date1)) # 指定用’/‘来连接被分离的变量123456789
练习:缺勤不超过1次,连续不迟到3次以上,输出True
'A' : Absent,缺勤'L' : Late,迟到'P' : Present,到场chuqin = input('请输入出勤情况:') if chuqin.count('A') <= 1 and chuqin.count('LL') <= 1: print('True')else: print('False') # 另外一种方法 print(chuqin.count('A') <= 1 and chuqin.count('LLL') == 0)1234567891011
练习:小米面试
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,>单词用空格分割,
单词之间只有一个空格,前>后没有空格。
比如:
(1) “hello xiao mi”-> “mi xiao hello”
s = input('请输入:')b = s.split(' ')[::-1]print(' '.join(b))# 第二种方法print(' '.join(s.split()[::-1]))123456
练习:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
s1=input('请输入第一个字符串:')s2=input('请输入第二个字符串:')for i in s1: for i in s2: s1 = s1.replace(i,'')print(s1)123456
练习:随机生成加法的运算
import randomcount = 0right = 0while True: a=random.randint(0,10) b=random.randint(0,10) p rint('%d + %d = ' %(a,b)) player = input('请输入答案:') if str(a + b) == player: print('回答正确') right+=1 count+=1 elif player == 'q': break else: print('回答错误') count+=1percent = (right / count)*100print('您一共答了%d道题,答对%d道题,正确率为%d%%' %(count,right,percent))12345678910111213141516171819
练习:随机生成加减乘除运算
import randomcount = 0right = 0op = ['+','-','*','/']while True: a=random.randint(1,10) b=random.randint(1,10) s = random.choice(op) print ('%d %s %d = ' %(a,s,b) ) question = input('请输入您的答案(q退出):') if s=='+': result =str( a + b) print(result) if question == result: print ('回答正确') right+=1 count+=1 elif question == 'q': break else: print('回答错误') count+=1 if s=='-': result =str( a - b) print(result) if question == result: print ('回答正确') right+=1 count+=1 elif question == 'q': break else: print('回答错误') count+=1 if s=='*': result = str( a * b) print(result) if question == result: print ('回答正确') right+=1 count+=1 elif question == 'q': break else: print('回答错误') count+=1 if s=='/': result = str( a / b) print(result) if question == result: print ('回答正确') right+=1 count+=1 elif question == 'q': break else: print('回答错误') count+=1percent = right / countprint('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
练习:快速生成验证码,内推码
import randomimport string code_str = string.ascii_letters + string.digitsprint('生成的随机数字和字母为(包括大写字母,小写字母和数字):',code_str)def gen_code(len=4): return ''.join(random.sample(code_str,len))print('截取以4为步长的字符串为::',gen_code())print('生成10个以4为步长的字符串为:',[gen_code() for i in range(10)] )12345678
赞 (0)