1. 字符串
1.1 创建和赋值
字符串或串是由数字、字母、下划线组成的一串字符。可以简单的通过在引号间(单引号、双引号、三引号)包含字符的方式创建它。
一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符。
1.2 字符串的基本特性
1.2.1 连接操作符和重复操作符
- 连接:+ 重复:*
name = 'yxy'
print('hello' + name)
print('*'*10)
结果:
helloyxy
**********
1.2.2 成员操作符
- 成员操作符:in
s = 'hello yxy'
print('yxy' in s)
print('yxy' not in s)
结果:
True
False
1.2.3 正向索引和反向索引
- 正向索引和反向索引
s = 'have a good time'
print(s[1]) #a
print(s[-4]) #t
1.2.4 切片
- range:
range(3)
range(1,6,2)
- 切片:切除一部分的内容,从0开始
s[start:end:step]
s[:end]
s[start:]
- 切片总结:
s[:n] 拿出前n个元素
s[n:] 拿出后n个元素
s[:] 从开始到结尾,显示全部内容
s[::-1] 倒叙
1.2.5 可迭代对象/for循环
for循环访问:
s='mmwyj'
count=0
for item in s:
count+=1
print(f"第{count}个元素:{item}")
结果:
第1个元素:m
第2个元素:m
第3个元素:w
第4个元素:y
第5个元素:j
1.2.6 练习- - -回文字符串
用户输入一个字符串, 判断该字符串是否为回文字符串。
eg: "aba"是回文字符串, "abba"也是回文字符串。 "abc"不是回文字符串。
way1:
while True:
str1 = input("please input string:")
if str1[:] == str1[::-1] :
print(f"{str1}是回文字符串!")
else:
print(f"{str1}不是回文字符串!!")
way2:
s = input("please input string:")
result = "是回文字符串" if s == s[::-1] else "不是回文字符串"
print(s + result
1.3 字符串的内建方法
1.3.1 字符串的判断与转换
类型的判断:
s = 'hello mmyxy'
print(s.isalnum()) #False
print(s.isdigit()) #False
print(s.islower()) #True
类型的转换:
s='Hello'
print('Hello'.upper()) #HELLO
print('Hello'.lower()) #hello
print('Hello'.title()) #Hello
print('Hello'.capitalize()) #Hello
print('Hello'.swapcase()) #hELLO
需求:用户输入Y或者y都继续执行代码
chose = input("是否选择继续安装程序:Y/y表示同意:")
if chose.lower() == 'y':
print('正在安装程序!!~~~')
1.3.2 字符串的开头和结尾的匹配
# 1. startswith 以什么开头
url='http://www.baidu.com'
if url.startswith('http'):
print(f"{url}是一个正确的网址,可以爬取网站的代码")
else:
print(f"{url}不是一个正确的网址,不可以爬取网站代码哦")
http://www.baidu.com是一个正确的网址,可以爬取网站的代码
# 2. endswith 以什么结尾
# 常用场景:判断文件的类型
filename = 'hello.png'
if filename.endswith('.png'):
print(f"{filename}是一个图片")
elif filename.endswith('.mps'):
print(f"{filename}是一个音乐")
else:
print(f"{filename}是一个其他文件")
hello.png是一个图片
1.3.3 字符串的数据清洗
数据清洗的思路:
strip:删除开头结尾的空格,广义的空格如真实的空格‘ ’,\n \t 等也都删除
lstrip:删除左侧的空格,广义的空格如真实的空格‘ ’,\n \t 等也都删除
rstrip:删除右侧的空格,广义的空格如真实的空格‘ ’,\n \t 等也都删除
replace:替换
s=' hello mmyxy '
print(s.strip())
print(s.lstrip())
print(s.rstrip())
print(s.replace(' ','&'))
hello mmyxy
hello mmyxy
hello mmyxy
&hello&mmyxy&&
1.4 字符串的位置调整
print("学生管理系统".center(50))
print("学生管理系统".center(50,'*'))
print("学生管理系统".ljust(50,'*'))
print("学生管理系统".rjust(50,'-'))
#输出结果
学生管理系统
**********************学生管理系统**********************
学生管理系统********************************************
--------------------------------------------学生管理系统
1.5 字符串的搜索、统计
s = 'hello world'
# find如果找到子串,则返回字串的索引位置,否则返回-1
# index如果找到字串,则返回子串的索引位置,否则报错(抛出异常)
print(s.find('llo'))
print(s.find('xxx'))
print(s.index('he'))
print(s.count('l'))
print(s.count('xxx'))
print(s.find('l',1,3))
#print(s.index('xxx'))
输出结果:
2
-1
0
3
0
2
1.6 字符串的分离与拼接
ip = '192.168.43.1'
item1 = ip.split('.') #分离
print(item1)
item2 = '-'.join(item1) #拼接
print(item2)
['192', '168', '43', '1']
192-168-43-1
1.7 string模块
# 需求:随机生成100个验证码
import random,string
for i in range(100):
print(''.join(random.sample(string.digits,2)) + ''.join(random.sample(string.ascii_letters,4)))
1.8 其他内置方法
s = 'hello world'
print(len(s)) 返回字符串的字符数
print(max(s)) 返回最大的字符,(按照 ASCII 码值排列)
print(min(s)) 返回最小的字符,(按照 ASCII 码值排列)
print(enumerate(s)) 枚举对象同时列出数据和数据下标
print(zip(s)) 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
1.9 小学生计算能力测试系统
设计一个程序,用来实现帮助小学生进行算术运算练习,它具有以下功能:提供基本算术运算(加减乘)的题目,每道题中的操作数是随机产生的,练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息,最后显示正确率。
- 思路:
运行程序, 设定测试次数,输入测试数字的大小范围
任意键进入测试
系统进行测试并判断对错
系统根据得分情况进行总结,退出程序
import random
count = int(input("please input test count:"))
right_count=0
for i in range(count):
num1 = random.randint(1,10)
num2 = random.randint(1,10)
symbol = random.choice(["+","-","*","/"])
result = eval(f"{num1}{symbol}{num2}")
question = print(f"{num1}{symbol}{num2}=")
user_answer = int(input(f"答案为:"))
if user_answer == result:
right_count += 1
print("回