python基础(三)

一、字符串

1.字符串的格式化

python将若干值插入带有“%”标记的字符串中,从而动态地输出字符串。字符串地格式化语法如下所示。

    "%s"%str1
    "%s %s"%(str1,str2)

第一行代码使用一个值格式化字符串。第二行代码使用多个值格式化字符串,用于替换的值组成一个元组。

2.字符串常用的操作函数

2.1 find()函数返回指定子串第一次在字符串中出现的位置,找不到返回-1(从左向右找)

#取文件名后缀
file_name = "osjcdos.txt.exe"
#从左开始找.的位置
print(file_name.find("."))
print(file_name[7:])

#从右开始找.的位置
print(file_name.rfind("."))
print(file_name[11:])

2.2 index()函数在找到子串位置时与find()函数返回值一致,但是当找不到时程序会抛出异常(从左向右找)

2.3 rfind()函数返回指定子串第一次在字符串中出现的位置,找不到返回-1(从右向左找)

2.4 rindex()函数在找到子串位置时与find()函数返回值一致,但是当找不到时程序会抛出异常(从右向左找)

2.5 count()函数返回字符串中指定子串参数的个数

#count()函数返回字符串中指定子串参数的个数
name = "nnjkdnjpyjksjdopy"
name.count("py")

name.count("py",1,len(name))#从字符串位置1到末尾找子串的个数

2.6 replace(a,b,c)函数将字符串中的子串a替换为子串b,最多替换c次

#replace(a,b,c)函数将字符串中的子串a替换为子串b,最多替换c次
name = "hello,hihihihihi"
print(name.replace("hi","Hi"))

print(name.replace("hi","Hi",2))
#split()函数
name = "hini josd sod dsnfo"
print(name.split(" "))#以空格切割,即遇到空格就切割,并将其结果保存在列表里,返回值为列表

2.7 caplitalize()函数将字符串第一个字符大写

#caplitalize()函数将字符串第一个字符大写
name = "aadjflsjd"
name.capitalize()

2.8 tilted()函数把字符串每个单词的首字母大写

2.9 startswith(a)函数检查是否以a开头,是则返回true,否则返回false

2.10 endswith(b)函数检查字符串是否以b开头,是则返回true,否则返回false

2.11 lower()函数返回小写

2.12 upper()函数返回大写

2.13 rjust(width)函数返回源字符串右对齐,并使用空格填充至长度width的新字符串

2.14 ljust(width)函数返回源字符串左对齐,并使用空格填充至长度width的新字符串

2.15 center(width)函数返回源字符串居中对齐,并使用空格填充至长度width的新字符串

2.16 lstrip()函数删除字符串左边的空白字符

2.17 rstrip()函数删除字符串结尾的空白字符

2.18 strip()函数删除字符串两端的空白字符

2.19 partition(str)函数把字符串以str分割成三部分,str前、str、str后,返回值为元组,

2.20 rpartition(str)函数只不过从右开始

2.21 splitlins()函数按照行分割,返回一个包含各行作为元素的列表

2.22 isalpha()如果字符串所有字符都是字母,则返回True,否则返回False

2.23 isdigit()函数如果字符串中只包含数字则返回True,否则返回False

2.24 isalnum()函数如果字符串所有字符都是字母或数字则返回True,否则返回False

2.25 isspace()函数如果只包含空格则返回True,否则返回False

2.26 join(str)函数字符串中每个字符后面插入str,构造出一个新的字符串

3.for循环

for循环用于遍历一个集合,依次访问集合中的每一项,for循环的格式如下所示:

for 变量 in 集合:
    ...
else:
    ...

for循环的执行过程:每次循环从集合中取出一个值,并把该值赋值给变量。集合可以是元组、列表、字典等数据结构。其中else子句可以省略。

for…in…循环通常与range()函数一起使用,range()函数返回一个列表,for…in…遍历列表中的元素,range()函数的声明如下:

class range(object):
    range(stop)
range(start,stop[,step])

range()返回一个对象,列表的元素值由三个参数决定;参数start表示列表开始的值,默认为0;参数stop表示列表结束的值,该参数不能缺少;参数step表示步长,每次递增或递减的值,默认为1。

4.练习

练习1(查找用户输入的姓名是否在花名册内):

#判断用户输入的名字是否在花名册内
names =["jikun","guoxiyang","lijiaqi","lijiahao","lianzhengtao","cuixudong"]

name = input("请输入你要查找的姓名:")

flag = 0#利用flag变量标志循环内的条件语句是否执行了
for i in names:
    if(i == name):
        flag = 1
        break#如果一旦找到结果,即可立即跳出循环,提升效率

if(flag == 1):
    print("找到你的名字啦!")
else:
    print("没找到你的名字!")
    names.append(name)#没有找到就将姓名添加进列表里
print(names)

#第二种方法,用in和not in
if name in names:
    print("找到了")
else:
    print("没找到")

练习2(将15名老师随机分配在3个办公室内):

#导入random模块
import random
#练习:将15名老师随机分配在3个办公室内
#定义有15位老师的列表
teachers = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o"]
#输出老师人数
print("总共有%d名老师"%len(teachers))

#定义办公室列表
rooms = [[],[],[]]

#遍历老师列表
for teacher in teachers:
    i = random.randint(0,2)#在遍历过程中,每次依靠randint()函数随机生成0-2之间的数代表不同的办公室
    rooms[i].append(teacher)# 然后将遍历到的老师加入到相应的办公室列表中去
i = 1
for room in rooms:
    t_num = len(room)#统计每个办公室中的人数
    print("\n办公室%d有%d人"%(i,t_num))
    for person in room:
        print(person,end=" ")
    print()
    i += 1

练习3(字符串练习):

#append()函数向列表尾部添加元素,如果添加的元素是个列表,则原列表变为嵌套列表
a = ["sd","sda","sda"]
b = ["aaa","xsx"]
a.append(b)
print(a)
print(a[3][0])#取b中的aaa元素为这种表示方法
print(a[0][1])#取a中sd元素中的d为这种表示方法

#insert(index,obj)函数将元素obj插入index下标之前
#extend(obj)函数将obj列表元素加入原列表之后融合为一个列表
#del()根据下表删除
#pop()删除最后一个元素
#remove()根据元素的值删除

list = ["ads","sdfsa","sdfwer","dsfafeff"]
del(list[0])
print(list)

list.pop()
print(list)

list.remove("sdfwer")
print(list)

练习4(实现花名册系统的增删改查):

#花名册系统
names =  ["jikun","guoxiyang","lijiaqi","lijiahao","lianzhengtao","cuixudong"]
#系统提示
while(True):
    print("="*30)
    print("1:添加一个新名字")
    print("2:删除一个名字")
    print("3:修改一个名字")
    print("4:查询一个名字")
    print("0:退出系统")
    print("="*30)

#获取操作数字
    op = input("请输入你要进行的操作:")

#根据用户选择进行功能调用
    flag = 0
    if(op == "1"):
        name = input("请输入要添加的名字:")
        names.append(name)
    elif(op == "2"):
        name = input("请输入要删除的名字:")
        names.remove(name)
    elif(op == "3"):
        name = input("请输入要修改的名字:")
        name_new = input("请输入修改后的名字:")
        for i in names:
            if( i == name):
                break
        i = name_new
    elif(op == "4"):
        name = input("请输入要查询的名字:")
        for i in names:
            if (i == name):
                flag = 1
                break
        if(flag == 1):
            print("找到了")
    elif(op == "0"):
        exit(0)

练习5(字符串的切片练习):

#切片概念
name = "abcdef"
#字符串下标从0开始,可以之间通过下标获取指定值
print(name[0])
print(name[1])

#通过name[a;b]获取字符串从起始位置a到终止位置b之前一位的子串
print(name[0:2])#取0-1子串
print(name[:])#取整个字符串
print(name[0:])#取整个字符串
print(name[:2])#取0-1子串
print(name[0:len(name)])#取整个字符串

#通过name[a:b:c]获取字符串从起始位置a到终止位置b之前一位的步长为c的子串
print(name[0:len(name):2])#取从0开始步长为2的子串

#通过name[-1]可以获取到字符串的最后一位
print(name[-1])

#逆置字符串
print(name[0:len(name):-1])

练习6(列表的排序和逆置):

#sort()对列表进行排序
#sort()函数将list列表按特定顺序重新排序,默认由小到大,参数reverse=True可改为倒序,由大到小
num = [2,4,34,54,7,32,76,223,32]
#列表的sort函数对列表元素进行排序后将结果直接覆盖原列表,所以在输出只需输出原列表名就可以,将list.sort()赋值给别的列表无效,始终为空列表
num.sort()
print(num)
num.sort(reverse=True)
print(num)

#reverse()函数逆置列表元素
num = ["2","32","5","234"]
num.remove()
print(num)

练习7(将一个字符串以空格或\t切片并返回倒数第二个切片):

str = "noido jsdjl sdnlkd sdnks osdj       \tsdo"
str_split = str.split()#要用split()的无参形式,可对连续空格或者\t进行忽略
print(str_split[-2])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值