Python基础 part4 字符定义的类型 str

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]))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值