str类型
str表示字符串,变量定义方式如:
a = 'hello'
b = '123'
c = """
hello
world
你好
"""
str的特性
索引index
定义的字符串变量,每个字符都会有一个对应的索引值,从0开始
a = 'hello'
print(a(1) #因为是从 0 开始所以1 就是第二个字符
切片cut
同样使用索引的值,可以取出字符串里需要的部分
使用方式:
a = 'hello'
print(a[1:4]) #print(a[start:end-1])
还可以指定步长:
a = 'hello'
print(a[1:4:2]) ##print(a[start:end-1:每隔几个字符取一次值])
print(a[:3]) 显示前3个字符,不包括3这个字符
print(a[3:]) 显示3之后的字符,包括3这个字符
print(a[::-1]) 倒序显示
重复repeat
print(a * 2) 重复打印2次
链接link
a = 'hello'
b = 'world'
print(a + b)
成员操作符
可以检测字符串中是否有某些值,有就会显示True,否则为False
a = 'hello'
print('h' in a) #检测h是否在a中
print('q' in a) #检测q是否在a中
练习
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不
是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
i = input('')
if i == (i[::-1]):
print(True)
else:
print(False)
改变输出大小写
print(‘Abc Daa’.upper()) 输出全为大写;
print(‘Abc Daa’.lower()) 输出全为小写。
批量匹配
匹配结尾:.endswith()
如:
filename = 'message.log'
if filename.endswith('.log'):
print(filename)
匹配开头:.startswith()
filename = 'message.log'
if filename.startswith('message'):
print(filename)
.strip()
用途去除字符串中指定的内容,如果指定为空值则去除字符串中的空格,包括“/n、/t”等等
正常输出
加上.strip()
去除左边的空格,去除右边的空格
去除指定内容 .strip(he)
.find()
查找指定字符的最小的索引值
例:
下方结果显示的数字就是我们查找字符串对应的索引值,hello中h就是0,而world中的w在字符串中的index是6
.rfind()
查找指定字符的最大的索引值
第2个world的第一个字母对用的index值就是12
.replace()
替换字符串
字符串位置
.center() 居中
.ljust() 左对齐
.rjust() 右对齐
i = 'hello world world'
print(i.center(30,'-')) #(30,'-') 30表示显示的长度,'-'表示空位用-填充,也可以不加
print(i.ljust(30,'-'))
print(i.rjust(30,'-'))
字符串统计
数量统计:
print(‘hello’.count(‘l’)) ,统计hello中l的数量。
长度统计:
print(len(‘hello’)),统计hello的长度。
字符串的分离和连接
字符串分离: .split( ),括号中写分隔的标志,不写默认为空格
s = '192.168.31.62'
print(s.split('.')[::-1]) #指定分隔为. 然后倒序输出结果
字符串连接: ’ ‘.join( ),’ '里写入需要用什么符号连接,()写入对象
s = '192.168.31.62'
s1 = s.split('.')
print('-'.join(s1)) #使用 '-' 连接
print('/'.join(s1)) #使用 '/' 连接
练习1:
给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符>:
‘A’ : Absent,缺勤
‘L’ : Late,迟到
‘P’ : Present,到场
如果一个学生的出勤纪录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),
那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
示例 1:
输入: “PPALLP”
输出: True
i = input('')
#第一种方式
if i.count('A') <= 1 and i.count('LLL') == 0:
print(True)
else:
print(False)
#第二种方式
print(i.count('A') <= 1 and i.count('LLL') == 0)
练习2:
题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。
比如: (1) “hello xiao mi” -> “mi xiao hello”
输入描述: 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子
i = input('')
i1 = i.split( ) #先分离字符串
print(' '.join(i1[::-1])) #用jion来连接倒序输出
练习3;
设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保留两>位小数点);
import random #导入随机数
count = 0 #定义计数器
right = 0 #正确数的计数器
while True:
a = random.randint(0, 9) #抽取10以内随机数
b = random.randint(0, 9)
print('%d + %d' %(a,b))
i = input('input answer:')
c = a + b
if i == str(c): #将正确答案转为字符串和输入结果对比
print('right')
count += 1
right += 1
elif i == 'q': #q表示退出
break
else:
print('False')
count += 1
percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))
判定字符串类型
判定的类型有很多,如:
类型 | 说明 |
---|---|
isspace | 是空格 |
isupper | 是大写 |
islower | 是小写 |
isalnum | 是字母或数字 |
isalpha | 是字母 |
isdigit | 是数字 |
istitle | 是标题,标题判定是只有首字母是大写的字符串 |
用法:print(‘123aaa’.isalnum())
练习
判定变量名是否合法:
1.变量名可以由字母,数字或者下划线组成
2.变量名只能以字母或者下划线开头
例:输入 s = ‘hello@’
while True:
i = input('')
if i[0].isalpha() or i[0] is '_':
for s in i[1:]:
if not (s.isalnum() or s is '_'):
print('error')
break
else:
print('ok')
else:
print('Please check %s' %(i[0]))