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))