一、字符串概念
1. 字符串的创建和赋值
字符串类型是 Python 里面最常见的类型。
可以简单地通过在引号间(单引号,双引号和三引号)包含字符的方式创建它。
第一种方式:
str1 = ‘our company is westos’
第二种方式:
str2 = “our company is westos”
第三种方式:
str3 = “”“our company is westos”""
转义符号
一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符
三重引号
作用一:进行多行注释
Python中单行注释是#,多行注释的时候每行都写一个#,或者采用连续的三个双引号。
作用二:定义多行字符串
为避免使用转义换行符 \n,通常会用在定义SQL语句的表达式中没有变量的时候使用。
删除字符和字符串
字符串是不可变的,只能通过赋一个空字符串或者使用 del 语句来清空或者删除一个字符串
但是没有必要显式的删除字符串。定义这个字符串的代码结束时会自动释放这些字符串。
2.字符串的基本特性
连接符( + ), 重复操作符( * ),计算长度
连接操作符: 从原有字符串获得一个新的字符串
重复操作符: 创建一个包含了原有字符串的多个拷贝的新串
“*” *10 + “学生管理系统” + “*”*10
序列操作符(索引与切片)
- 索引(s[i] ):获取特定偏移的元素
- 索引的分类:正向索引, 反向索引
- 切片S[i:j]提取对应的部分作为一个序列:
- 如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长; - s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法;
- s[::-1]是实现字符串反转的一种方法;
成员操作符(in ,not in)
成员操作符用于判断一个字符或者一个子串(中的字符)是否出现在另一个字符串中。出现则返回 True,否则返回 False.
string 模块预定义的字符串
string.ascii_lowercase #所有的小写字母(abcdefghijklmnopqrstuvwxyz)
string.ascii_uppercase #所有的大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)
string.ascii_letters #所有的字母(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)
string.digits #所有的数字(0123456789)
string.punctuation #所有字符(!"#$%&’()*+,-./:;<=>?@[]^_`{|}~)
string.whitespace #空格,换行符\n \t
3.字符串内建函数
字符串的判断与转换
title: 标题需要每一个首字母大写,e.g. Hello Python
space: 空格指的是广义的空格, e.g: \n, \t,
字符串的开头和结尾匹配
字符串的数据清洗
字符串的位置调整
字符串的搜索,统计
字符串的分离与拼接
其他内置方法
cmp() 根据字符串的 ASCII 码值进行比较(py3取消)
len() 返回字符串的字符数
max() and min() 返回最大或者最小的字符,(按照 ASCII 码值排列)
enumerate() 枚举对象同时列出数据和数据下标
zip() 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
字符串相关模块
还有很多模块就不一一举例了。
二、实战练习
1.检测大写字母 detect-capital
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
1.全部字母都是大写,比如“USA”。
2.单词中所有字母都不是大写,比如“leetcode”。
3.如果单词不知含一个字母,只有首字母大写,比如“Google”
否则,我们定义这个单词没有正确使用大写字母。
代码:
while True:
str = input('请输入一个单词:')
print('单词正确')if str == str.upper() or str == str.lower() or str==str.capitalize() else print('单词错误')
运行截图:
2.学生出勤记录 student-attendance-record
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:
1.‘A’:Absent,缺勤
2.‘L’:Late,迟到
3.‘P’:Present,到场
如果一个学生的出勤记录中不超过一个‘A’(缺勤)并且不超过俩个连续的‘L’(迟到),那么这个学生会被奖励。
你需要根据这个学生的出勤记录判断他是否会被奖励。
代码:
while True:
str = input('请输入出勤记录:')
print("可奖励") if str.count('A') <=1 and str.count('L') <=2 else print('不可奖励')
运行截图:
3.机器人能否返回原点 robot-return-to-origin
在二维平面上,有一个机器人从原点(0,0)开始。给出它的移动顺序,判断这个机器人在完成移动后是否在(0,0)处结束。移动顺序由字符串表示。字符move[i]表示其第i次移动。机器人的有效动作有R(右),L(左),U(上)和D(下)。如果机器人在完成所有动作后返回原点,则返回true。否则,返回false。
注意:机器人“面朝”的方向无关紧要。“R”将始终使机器人向右移动一次,“L”将始终向左移动等。此外每次移动机器人的移动幅度相同。
代码:
while True:
str = input('请输入动作:')
print(True) if str.count('R') == str.count('L') and str.count('U') == str.count('D') else print(False)
运行截图:
4.小学生计算能力测试系统
设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供基本算术运算(加减乘)的题目,每道题中的操作数是随机产生的,练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息。最后显示正确率。
思路:
运行程序, 输入测试数字的大小范围
输入测试题目数量
任意键进入测试
系统进行测试并判断对错
系统根据得分情况进行总结,退出程序
代码:
import random
csopeMin = int(input('请输入测试数字最小为:'))
csopeMax = int(input('请输入测试数字最大为:'))
amount = int(input('请输入题目数量:'))
type = input('请输入题目类型(有+,-,*可供选择):')
a = 0
b = 0
if type == '+':
for item in range(amount):
x1 = random.randint(csopeMin,csopeMax)
x2 = random.randint(csopeMin,csopeMax)
print('请计算%s+%s'%(x1,x2))
result = x1 + x2
result1 = int(input('请输入答案:'))
if result == result1:
print("计算正确")
a += 1
else:
print("计算错误,正确答案为%s"%result)
b += 1
else:
c = a / (a+b) * 100
print('答题结束,正确率为:%.2f%%'%c)
else:
if type == '-':
for item in range(amount):
x1 = random.randint(csopeMin, csopeMax)
x2 = random.randint(csopeMin, csopeMax)
print('请计算%s-%s' % (x1, x2))
result = x1 - x2
result1 = int(input('请输入答案:'))
if result == result1:
print("计算正确")
a += 1
else:
print("计算错误,正确答案为%s" % result)
b += 1
else:
c = a / (a + b) * 100
print('答题结束,正确率为:%.2f%%' % c)
else:
if type == '*':
for item in range(amount):
x1 = random.randint(csopeMin, csopeMax)
x2 = random.randint(csopeMin, csopeMax)
print('请计算%s*%s' % (x1, x2))
result = x1 * x2
result1 = int(input('请输入答案:'))
if result == result1:
print("计算正确")
a += 1
else:
print("计算错误,正确答案为%s" % result)
b += 1
else:
c = a / (a + b) * 100
print('答题结束,正确率为:%.2f%%' % c)
else:
print('题目类型错误!')
运行截图: