Python--字符串、dir、help、转义字符、元字符串、学生管理系统

一、字符串

以引号包围,不可修改的有序序列

(一)字符串索引

通过索引获取想要的字符
格式:变量名:[索引值]

a = '123abc'
print(a[0])
print(a[3])
a = '123abc'
print(a[-1])

(二)字符串切片

从字符串中夫指出一份指定的内容,储存在另一个变量中,对原字符无影响
切片格式:[起始索引:结束索引:[步长]]
步长可以省略,默认为1
包含开头不包含结尾

a = '123abcd'
b = a[0:5:2]
print(b)

print(a[3:])
print(a[:5])
print(a[:])
print(a[3::3])

print(a[0:5:-1])
print(a[3:0:-1])
print(a[::-1])
print(a[-1:-5:-2])
a = '123456789'
print(a[-8:5])
print(a[0:-7])
print(a[-1:-5:-1])

(三)字符串拼接

字符串支持“+”和“*”进行字符串拼接

a = '我爱你'
b = '北京'
c = a + b
print(c)
a = '你好'*3
print(a)

(四)赋值语句形式

序列的赋值语句可以使用一个或者多个变量名来接受值

a, b, c = '123'
print(a)
print(b)
print(c)
a, *b='123'
print(a)
print(b) 
# b的输出形式为列表

(五)字符串的修饰

1、字符串格式化-format()

(1)使用位置参数
a = '我叫{},年龄{}'.format('zhang', 29)
print(a)
a = '我叫{0}姓名{0}年龄{1}'.format('li', 29)
print(a)
(2)使用关键字参数
print('我叫{name}年龄{age},姓名{name}'.format(name='zhang', age=30))
(3)填充与格式化
a = '我叫{:*^8}'.format('张')
print(a)

: 后面的是填充的字符
^ 张居中
< 张居左
> 张居右
最后的数字:占的总长度

(4)精度与进制
a = '二进制{:b}'.format(10)
print(a)
x = bin(10)
print(x, type(x))
a = '八进制{:o}'.format(10)
print(a)
y = oct(10)
print(y, type(y))
a = '十六进制{:x}'.format(10)
print(a)
z = hex(10)
print(z, type(z))

2、字符串格式化-百分号

%% 百分号标记
%s 字符串
%d 有符号整数(十进制)
%f 浮点整数(用小数点符号)

name = 'zhang'
age = 18
height = 1.75
x = '我叫%s身高%.2f年龄%d'%(name,height,age)
print(x)

二、字符串查找

(一)字符串查找

1、find-返回从左第一个制定索引的字符,找不到返回-1

a = 'abcdefg'
b = 'cd'
x = a.find(b)
print(x)
print(a.find('zz'))

2、rfind()-返回从右第一个指定索引的字符,找不到返回-1

a = 'abcdefg'
b = 'cd'
x = a.rfind(b)
print(x)

3、index()-返回从左第一个指定字符的索引,找不到报错

a = 'abcxdefcdg'
b = 'cd'
x = a.index(b)
print(x)

4、rindex()-返回从右第一个指定字符的索引,找不到报错

a = 'abcdefg'
b = 'cd'
x = a.rindex(b)
print(x)

5、count()-计数,返回自定字符在字符串当中的个数

a = 'abcdefg'
b = 'cd'
x = a.count(b)
print(x)

练习:

a = input('请输入一个长串:')
b = input('请输入以个子串:')
i = 0
while i <= len(a) - len(b):
    j = 0
    while j < len(b):
        if a[i+j] != b[j]:
            break
        j += 1
    if j == len(b):
        print(i)
        break
    i += 1
else:
    print(-1)

(二)字符串的拆分

1、partition 只分隔第一个出现的子串,分割成三部分,子串前,子串自身,子串后

a = '123ab456'
a = '123ab456ab789'
x = a.partition('ab')
print(x)

2、split 按照指定内容进行分隔,默认将制定的所有内容进行分隔。

a = '123a456a789a0'
b = a.split('a')
print(b)

split 也可以指定以什么进行分隔

a = '2019-07-24'
b = a.split('-')
print(b)

split 指定最大切割长度

a = '123ab456ab789ab000'
b = a.split('ab', maxsplit=2)
print(b)

3、splitlines() 按照行分隔,按照换行符进行分割

a = 'abc\n123\n45'
b = a.splitlines()
print(b)

(三)字符串的替换

1、replace从左向右替换制定元素,也可以是定替换个数,默认全部替换

a = '123abc456abc'
b = a.replace('abc', 'xy')
b = a.replace('abc', 'xy', 1)
print(b)
print(a)

2、translate 按照对应关系来替换内容

s = '1234567890111'
a = '1234567'
b = 'abcdefg'
table = str.maketrans(a, b) # 创建映射表,a\b的长度必须一样,组合成映射表
b = s.translate(table) # 通过映射表,进行替换生成新的串
print(b)

(四)字符串修饰

1、center() 让字符串在制定长度居中,如果不能居中左短又长,默认以空格填充

a = '123'
b = a.center(7, '*')
print(b)

2、ljust() 居左

a = '123'
b = a.ljust(10,'*')
print(b)

3、rjust() 居右

a = '123'
b = a.rjust(10,'*')
print(b)

4、zfill() 将字符串填充到制定长度,不足用0从左开始补充

a = '123'
b = a.zfill(10)
print(b)

5、strip() 默认去除两边空格

a = '   123   '
b = a.strip()
print(b, end='*')
b = a.lstrip()
print(b, end='*')

b = a.rstrip()
print(b, end='*')

(五)字符串变形

1、upper() 将字符串转换成大写

a = 'abcABC'
b = a.upper()
print(b)

2、lower() 将字符串转换成小写

a = 'abcABC'
b = a.lower()
print(b)

3、swapcase() 将所有字母大小写互换

a = 'abcABC'
b = a.swapcase()
print(b)

4、title() 将字符串当中的单词首字母大写,单词以非字母划分

a = 'what is your name'
print(a.title())

5、capitalize() 字符串首字母大写

a = 'what is your name'
print(a.capitalize())

6、expandtabs() 字符串中的\t转换成空格,空格数为8

a = '123\t456\txx'
print(a.expandtabs())

(六)字符串判断

1、isdigit() 判断是否完全由数字组成

a = '123d'
b = a.isdigit()
print(b)

2、isalpha() 判断是否完全由字母组成

a = 'azAz_'
print(a.isalpha())

3、isalnum() 判断是否完全由字母和数字组成

a = '123aZ_'
b = a.isalnum()
print(b)

4、islower() 判断是否完全是小写字母

a = 'ABCa'
print(a.isupper())

5、istitle() 判断字符串中的单词是否开头都大写格式

a = 'What is Your Name'
print(a.istitle())

6、isspace() 判断是否完全是空格

a = '          d'
print(a.isspace())

7、statswith() 判断字符串的开头字符,也可以截取判断

a = '123abc'
print(a.startswith('abc'))
print(a.startswith('1',0, 4))

8、endswith() 判断字符串的结尾字符,也可以截取判断

a = '123abc'
print(a.endswith('123'))

(七)dir()和help()内置函数

1、dir()列出字符串对象中所有方法的名称

a = 'abc'
print(dir(a))

2、help()查看具体介绍

a = 'abc'
print(help(a.replace))

三、转义字符

\\ -产生一个反斜杠
\’ -产生一个单引号
\" -产生一个双引号
\n - 表示换行
\t - 横向制表符

# \'
a = 'tom\'s cat'
print(a)
b = "tom 's cat"
print(b)

# \t-横向制表符   \n-换行
a = 'E:\test\nex.txt'
print(a)

# \\产生一个\
a = 'E:\\test\\nex.txt'
print(a)
a = 19
b = 20
c = 22
d = 33
if a > 33 and b > 44 and c > 5 and c < 100 and d > 200 and d <= 300 \
    and a < 300:
    print('判断成功')

四、元字符串

在任意字符串之前添加字母r或R,那么当前字符串中所有传义字符在使用时都不会进行转义。

a = r'E:\test\nex.txt'
print(a)

五、学生管理系统

实现学生信息的增删改查 ---- 字典存储

a={"001": {"name": "张三", 'age':18},
   "002": {"name": "李四", 'age': 28},
   "003": {"name": "王五", 'age': 19},
   "004": {"name": "赵六", 'age': 31}}
while True:
    print('1-增加')
    print('2-删除')
    print('3-修改')
    print('4-查询')
    print('0-退出')
    bh = int(input('请输入编号:'))
    if bh == 1: # 增
        xh = input('请输入要增加的学号:')
        for k in a.keys():
            if xh == k:
                print('您输入的学号已存在:')
                break
        else:
            name = input('请输入要增加的姓名:')
            age = int(input('请输入要该学生的年龄:'))
            value = {'name': name, 'age': age}
            a[xh] = value
            print('增加后:',a)
    elif bh == 2: # 删
        xh = input('请输入要删除的学号:')
        for k in a.keys():
            if xh == k:
                del a[xh]
                print(a)
                break
        else:
            print('没找到该学号')
            continue
    elif bh == 3: # 改
        xh = input('请输入要修改的学号:')
        for k in a.keys():
            if xh == k:
                xg = input('请输入要修改的内容:')
                xgh = input('修改为:')
                a[k][xg] = xgh
                print(a)
                break
        else:
            print('没找到该学号')
            continue
    elif bh == 4: # 查
        xh = input('请输入要查找的学号:')
        for k,v in a.items():
            if xh == k:
                print(k, v)
                break
        else:
            print('没找到该学号')
            continue
    elif bh == 0: # 退出
        print('成功退出')
        break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值