contents:
一、字符串的定义
字符串是 Python 中最常用的数据类型。我们可以使用单引号,双引号,三引号,来创建字符串。(其中三引号可以横跨多行)
创建字符串很简单,只要为变量分配一个值即可。例如:
二、字符串特性
字符串是字符的有序集合,可以通过其位置来获得具体的元素。在python中,字符串中的字符是通过索引来提取的,索引从0开始。
字符串可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2,即程序认为可以从结束处反向计数。
1.索引
2.切片(按照步长索引) s[start:stop:step]
3.成员操作符
4.连接
5.for循环遍历
6.字符串的常见用法
7.字符串的搜索和替换
8.字符串的对齐
9.字符串的分离和连接
10.开头和结尾匹配
11.去掉两边空格
三.字符串练习
1.变量名定义是否合法:
2.小米笔试编程题目
3. 设计一个程序,帮助小学生练习10以内的加法
4. 小学生算术能力测试系统:
一、字符串的定义
定义:字符串是 Python 中最常用的数据类型。我们可以使用单引号,双引号,三引号,来创建字符串。(其中三引号可以横跨多行)
创建字符串很简单,只要为变量分配一个值即可。例如:
"""
a = 'westos'
b = "what's"
c = """
用户管理系统
1.添加用户
2.删除用户
3.显示用户
....
"""
print(c)
二、字符串特性
字符串是字符的有序集合,可以通过其位置来获得具体的元素。在python中,字符串中的字符是通过索引来提取的,索引从0开始。
字符串可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2,即程序认为可以从结束处反向计数。
1.索引
索引即获取特定偏移的元素
例:s = 'yzhuzhuy' 索引:0 1 2 3 4 5 6 7
正向索引:
print(s[2]) 拿出第三个字符
反向索引:
print(s[-1]) 拿出第八个字符即倒数第一个
2.切片(按照步长索引)
s[start:stop:step]
从start开始到end -1结束,步长为step;
-start省略,则从头开始切片;
-stop省略,一直切片到字符串最后
-step省略,步长默认为1
- s[ : ] / s 获取字符串从开始到结尾的所有元素
- s[ : :-1] 对于字符串进行反转
- s[:4] 取出前四个字符
- s[-4:] 取出后四个字符
- print(s * 10) 重复十遍输出s
3.成员操作符
成员运算符:
① in 在该有序数组内
② not in 不在该有序数组内
返回结果:布尔值( True False )
print('aa' in s) aa是否在s里
print('he' not in s) he是否不在s里
4.连接
- str1 + str2
>>>print("villa" + "fcb")
villafcb
- str1 str2
>>>print("villa" "fcb")
villafcb
- str1,str2
>>>print("villa","fcb")
villa fcb
- 字符串列表连接 str.join(list)
函数join接受一个列表,然后用字符串连接列表中的每一个元素:
>>> hello=["hello","world"]
>>> huahua='love'
>>> print(huahua.join(hello))
helloloveworld
- %连接字符串,其实就相当于c语言
print("%s%s" %(a,b))
villafcb
5.for循环遍历
for i in s:
print(i)
练习:判断回文数 (用字符反转即可)
num = input('Num:')
print(num == num[::-1])
6.字符串的常见用法
- 判断:
isdigit | 判断是否为数字 |
isalpha | 判断是否为字母 |
isalnum | 判断是否为 数字\字母\字母和数字 |
islower | 判断是否为小写字母 |
isupper | 判断是否为大写字母 |
istitle | 判断是否为标题(标题首字母大写) |
isspace | 判断是否为空格 |
只要有一个元素不满足,就返回False
print('weeeqwe32131'.isdigit())
print('42131321fsas'.isalpha())
print('weewqeq323213'.isalnum())
- 转换:
lower(转换为小写字母), upper(转换为大写字母), title(转换为标题),swapcase(大小写字母相互转换)
>>> a='123'
>>> a.isdigit()
True
>>> b='abc'
>>> b.isalpha()
True
>>> c='123acb'
>>> c.isalnum()
True
>>> b.isalnum()
True
>>> b.swapcase()
'ABC'
>>> a='aA'
>>> a.swapcase()
'Aa'
7.字符串的搜索和替换
- find:检查字符串中是否包含字符串,find 找到子字符串,并返回最小的索引
>>> s= 'hello world hello'
>>> print(s.find('hello')) 默认返回最先找到的最小地址
0
>>> print(s.find('world'))
6
>>> print(s.rfind('hello')) rfind返回右边的最小地址
12
replace:用新字符new替换字符串中的字符old。如果指定第三个参数max,则替换不超过 max 次。
>>> s = 'yun yun yun yun yun'
>>> print(s.replace('yun','hello',3))
hello hello hello yun yun
count:统计字符串中某字符出现的次数
print('hello'.count('l'))
print('hello'.count('ll'))
len:计算字符串的长度
print(len('wfqfqfqfq'))
8.字符串的对齐
>>> print('hello world'.center(30))
hello world
>>> print('hello world'.center(30,'#'))
#########hello world##########
>>> print('hello world'.ljust(30,'#'))
hello world###################
>>> print('hello world'.rjust(30,'#'))
###################hello world
9.字符串的分离和连接
split:通过制定分隔符对字符串进行分割,参数num有指定值,仅分割Num 个字符串
join:将序列中的元素与指定的字符串连接成一个新的字符串
分离
>>> s='172.25.254.49' 定义字符串
>>> a=s.split() 默认将空格作为分隔符
>>> print(a)
['172.25.254.49']
>>> a=s.split('.') 加入参数,将.作为分隔符
>>> print(a)
['172', '25', '254', '49']
连接(默认直接连接)
>>> b=''.join(a)
>>> print(b)
1722525449
>>> c='~~'.join(a) 使用~~连接分离后的字符串
>>> print(c)
172~~25~~254~~49
10.开头和结尾匹配
endswith 结尾匹配
startswith 开头匹配
filename = 'hello.loggg'
if filename.endswith('.log'):
print(filename)
else:
print('error.file')
url = 'https://172.25.254.250/index.html'
if url.startswith('http://'):
print('爬取内容~~')
else:
print('不能爬取~~')
11.去掉两边空格
strip() 去掉两边空格
lstrip() 去掉左边空格
rstrip() 去掉右边空格
括号里加上参数就是去掉对应的参数
eg:>>> a='hello'
>>> a.strip('h')
'ello'
注意: 去除左右两边的空格, 空格为广义的空格, 包括: \n, \t, \r
>>> s = ' hello'
>>> s
'\thello'
>>> s = ' hello'
>>> s
' hello'
>>> s.lstrip()
'hello'
>>> s = ' hello '
>>> s
' hello '
>>> s.lstrip()
'hello '
>>> s.rstrip()
' hello'
>>> s.strip()
'hello'
>>> s = ' hello'
>>> s
'\thello'
>>> s.strip()
'hello'
>>> s = ' hello\n'
>>> s
'\thello\n'
>>> s.strip()
'hello'
>>> s = 'helloh'
>>> s.strip('h')
'ello'
>>> s.lstrip('h')
'elloh'
三.字符串练习
1.变量名定义是否合法:
变量名可以由字母 数字 下划线组成
变量名只能以字母或者下划线开头
s = '321csv_' s[0] s[1:]
s = 'asfasf%%'
'_'
exit
while True:
s = input('变量名:')
if s == 'exit':
print('exit')
break
if s[0].isalpha() or s[0] == '_':
for i in s[1:]:
if not (i.isalnum() or i == '_'):
print('%s变量名不合法' %(s))
break
else:
print('%s变量名合法' %(s))
else:
print('%s变量名不合法' %(s))
2.小米笔试编程题目
题目描述:
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,
单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
- 示例1:
```
- 输入
hello xiao mi
- 输出
mi xiao hello
"""
print(' '.join(input().split()[::-1]))
# _*_coding:utf-8_*_
while True:
s = raw_input('- 输入\n ')
if s == 'exit':
print('bye~~~')
break
else:
a = s.split()
b = ' '.join(a[::-1])
print("- 输出\n %s" %b)
3. 设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保留两位小数点);
思想:1.用import random随机数产生模块,random.randint() : 随机生成一个int类型的数,可以指定这个数的范围。
2.用到了类型转换:int(a),将变量a转换为整型
import random # 调用随机数模块
n = 0
m = 0
while True:
a = random.randint(0, 9)
b = random.randint(0, 9) # 产生随机数
print(a, '+', b, '=')
m = m + 1 # 答题的总数
c = a + b
d = input() # 输入学生的计算结果
if d == 'exit':
print("你总共答对了%d道题\n正确率为%.2f%%" % (n, 100 * n / (m-1)))
break
elif int(d) == c:
print('答案正确!')
n = n + 1 # 答对的次数
else:
print('答案错误!')
4. 小学生算术能力测试系统:
设计一个程序,用来实现帮助小学生进行百以内的算术练习,
它具有以下功能:提供10道加、减、乘或除四种基本算术运算的题目;
练习者根据显示的题目输入自己的答案,
程序自动判断输入的答案是否正确并显示出相应的信息。
"""
import random
op = ['+','-','*','/']
print(random.choice(op))
思想:1.用到了random随机数产生模块
2.
import random # 调用随机数模块
n = 0
m = 0
for i in range(1, 11):
a = random.randint(0, 9)
b = random.randint(0, 9) # 产生随机数
op = ['+', '-', '*', '/']
r = random.choice(op) # 进行随机的运算选择
print(a, r, b, '=')
if r == '+': # 算术选择模块
c = a + b
elif r == '-':
c = a - b
elif r == '*':
c = a * b
else:
c = a / b
d = input() # 输入学生的计算结果
if float(d) == c:
print('答案正确!')
n = n + 1 # 答对的次数
else:
print('答案错误!')
if i == 10:
print('答题结束'.center(30, '#'))
print("你总共答对了%d道题\n正确率为%.2f%%" % (n, 100 * n / 10))