1.字符串的定义
# 定义一个字符串
a = 'hello'
# 有特殊字符时,需要转译
c = 'I\'m a student'
# 或者特殊字符用双引号引起来
d = "I'm a student"
print(a)
print(c)
print(d)
2.字符串的特性
(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中,如果在,就输出True
print('p' in a) # 判断p是否在a中,如果不在,就输出False
# 6.for循环(迭代)
print('6.for循环(迭代)')
for i in a:
print(i)
练习1:回文数判断
num = input('Num:')
if num == num[::-1]:
print('这是一个回文数')
else:
print('这不是一个回文数')
3.字符串开头结尾的匹配
(1)通过条件匹配文件名
filename = 'hello.loog'
if filename.endswith('.log'):
print(filename)
else:
print('error filename'
(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('匹配失败')
(3)去除两边空格
标题:首字母大写,其他字母必须小写
upper # 转换成大写
isupper # 判断是否大写
rstrip # 去除右边的空格,空格是广义的空格,不仅仅是空格键按出来的空格
lstrip # 去除左边的空格
In [1]: s=' hello '
In [2]: s
Out[2]: ' hello '
In [3]: s.strip()
Out[3]: 'hello'
In [4]: s.rstrip()
Out[4]: ' hello'
In [5]: s.lstrip()
Out[5]: 'hello '
练习2:判断大小写和数字
# 判断字符串里每个元素是什么类型,一旦有一个元素不满足,就返回False
print('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是否为字母
练习3:判断变量名是否合法
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;]: # 第一个字符之后的所有字符
练习4.字符串的搜索与替换
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'))
练习5.字符串的对齐
print('学生管理系统'.center(30)) # 居中
print('学生管理系统'.center(30,'*')) # 居中
print('学生管理系统'.ljust(30,'*')) # 左对齐
print('学生管理系统'.rjust(30,'*')) # 右对齐
print('学生管理系统'.ljust(30,'+')) # 左对齐
6.统计字符串的个数
print('hello'.count('l')) # 统计hello中l的个数
print('hello'.count('ll')) # 统计hello中ll的个数
print(len('hello')) # 查看hello的长度
7.字符串的分离和连接
# 分离字符串
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)) # 指定用’/‘来连接被分离的变量
练习6:缺勤不超过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)
练习7:小米面试
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,>单词用空格分割,
单词之间只有一个空格,前>后没有空格。
比如:
(1) “hello xiao mi”-> “mi xiao hello”
s = input('请输入:')
b = s.split(' ')[::-1]
print(' '.join(b))
# 第二种方法
print(' '.join(s.split()[::-1]))
练习8:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
s1=input('请输入第一个字符串:')
s2=input('请输入第二个字符串:')
for i in s1:
for i in s2:
s1 = s1.replace(i,'')
print(s1)
练习9:随机生成加法的运算
import random
count = 0
right = 0
while 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+=1
percent = (right / count)*100
print('您一共答了%d道题,答对%d道题,正确率为%d%%' %(count,right,percent))
练习10:随机生成加减乘除运算
import random
count = 0
right = 0
op = ['+','-','*','/']
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+=1
percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))
练习11:快速生成验证码,内推码
import random
import string
code_str = string.ascii_letters + string.digits
print('生成的随机数字和字母为(包括大写字母,小写字母和数字):',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)] )