Python从基础到入门——Day4

#学习笔记

#每日练习

学习笔记

# 字符串 列表 元组
# 知识点1.字符串
# 认识字符串, 下标,  切片, 常用操作方法

# 变量,存储数字类型的值
a = 100
# 存储的就是字符串类型的值
b = 'hello'
c = "hello world"
# 双引号,单引号中的数据,就是字符串

# 字符串的使用:密码,服务器进行校对,密码存储到数据库——》字符串
# <class 'str'> 控制台显示:str(字符串)
a = 'hello world'
print(a)
print(type(a))

b = "TOM"
print(type(b))

# 三引号字符串
name = '''Tom'''
print(type(name))
name2 = """Rose"""
print(type(name2))

# 三引号字符串,支持换行
a = ''' i am lisi,
            nice to meet you!'''
b = """i am lisi,
            nice to meet you!"""
print(type(a))
print(type(b))

# 创建一个字符串:I'm lisi
c = "I'm lisi"
print(type(c))
print(c)

# d = 'I'm lisi'(报错)使用转义字符” \ ”
d = 'I\'m lisi'
print(type(d))
print(d)
# 字符串的输出
print('hello world')
name = 'lisi'
print(name)
print('他的名字是%s'%name)
print(f'他的名字是{name}')

# 字符串的输入
# 再Python中,使用input 接受用户输入
# name = input('请输入名字')
# print(f'您输入的名字是:{name}')
# print(type(name))

# password = input('请输入密码')
# print(f'您输入的密码是:{password}')
# print(type(password))

# 字符串下标:编号
# 作用:通过下标,快速找到对应的数据

str1 = 'abcdefg'
print(str1)
# 数据在程序运行过程中,存储在内存,得到数据字符a字符,数据b字符
# 使用字符串中某个特定的数据字符数据,从0开始顺序分配一个编号
# 使用这个编号精确找到某个字符数据
# 下标 索引 索引值 下标从0开始
print(str1[1])
print(str1[0])
print(str1[2])
print(str1[6])
print(str1[-1])

 

# 切片
str1 = 'abcdefg'
# 得到整个字符串数据
print(str1)
# 下标得到的是下标为某个位置的数据
print(str1[2])

# 想得到abc 这三个数据怎么办?
# 切片是指对操作的对象截取其中一部分的操作
# 字符串,列表,元组都支持切片操作
#  语法结构:序列[开始位置下标:结束位置下标:步长]
# 注意:1.不包含结束位置下标对应数据,正负整数均可
# 2.步长是选取间隔,正负数均可,默认步长为1

name = 'abcdefg'
print(name[2:5:1])
print(name[2:5])
print(name[:5])
print(name[1:])
print(name[:])
print(name[::2])
print(name[:-1])
print(name[-4:-1])
print(name[::-1])

str1 = '012345678'
print(str1[2:5:1])
print(str1[2:5:2])
print(str1[2:5])
# 如果不写开始,默认从0开始
print(str1[:5])
# 如果不写结束,表示选取到最后
print(str1[2:])
# 如果不写开始和结束,表示选取所有
print(str1[:])
# 负数测试
# 如果步长为负数,表示倒序选取
print(str1[::-1])
# 下标-1表示最后一个数据,依次向前类推
"""
str1 = '012345678'
print(str1[-4:-1])
print(str1[-4:-1:1])
print('-----------')
# 不能选取数据:从-4开始到-1结束,选取的方向为从左到右,但是-1的步长从右向左选取。
# 如果选取方向(下标开始到结束的方向)和步长的方向冲突,则无法选取数据
print(str1[-4:-1:-1])
print('-----------')
print(str1[-1:-4:-1])

"""
# 字符串的常用操作
# 一般分为 查找, 修改 ,判断 三大类
# 查找:子串在字符串中的位置或出现的次数

mystr = "hello world and Tom and Rose and you"

# 1.find 字符串序列.find(子串,开始位置下标,结束位置下标)
print( mystr.find('and'))
print( mystr.find('and',15,30))
# print(mystr.find('ands'))

# 2.index 字符串序列.index(子串,开始位置下标,结束位置下标)
print(mystr.index('and'))
print(mystr.index('and',15,30))
# print(mystr.index('ands'))

# 3.count 字符串序列.count(子串,开始位置下标,结束位置下标)
print(mystr.count('and',15,30))
print(mystr.count('and'))
print(mystr.count('ands'))

# 4.rfind() 字符串序列.rfind(子串,开始位置下标,结束位置下标)
# 与find功能相同,查找方向从右侧开始
print(mystr.rfind('and'))
# print(mystr.rfind('ands'))

# 5.rindex() 字符串序列.rindex(子串,开始位置下标,结束位置下标)
# 与index功能相同,查找方向从右侧开始
print(mystr.rindex('and'))
# print(mystr.rindex('ands'))

 

# 字符串修改
# 修改字符串中的数据
mystr = "hello world and Tom and Rose and you"
# 1.replace() 替换  函数有返回值,返回值是修改后的字符串
# replace(旧子串,新子串,替换次数)
# 替换次数超出替换次数

# new_str = mystr1.replace('and','he')
new_str = mystr.replace('and','he',1)
print(new_str)
print(mystr)
# 注意:如果调用replace函数后,发现原有字符串没有做改变
# 数据按照是否直接修改分为可变类型和不可变类型
# 字符串类型的数据修改,不能改变原有的字符串
# 属于不能直接修改的数据类型是 不可变类型
# 说明:字符串是不可变数据类型

 

 

# split()分割 -- 返回一个列表,丢失分割字符
# 字符串序列.split(分割字符,num)
# list1 = mystr.split('and',2)
# list1 = mystr.split(' ')
list1 = mystr.split(' ',2)
print(list1)
# join() --合并列表里面的字符串数据为一个新的字符串
# 字符/子串.join(多字符串组成的序列)
mylist = ['aa','bb','cc']
t1 = ('1','2','3')
new_str = '...'.join(mylist)
print(new_str)
print('...'.join(t1))

 

 

# 修改
mystr = "hello world and Tom and Rose and you"
# 1.capitalize() 将字符串的首字母大写
new_str = mystr.capitalize()
print(new_str)

# 2.title() 字符串中每个单词的首字母大写
new_str = mystr.title()
print(new_str)

# 3.upper() 小写转大写
new_str = mystr.upper()
print(new_str)

# 4.lower() 大写转小写
new_str = mystr.lower()
print(new_str)

 

# 删除
mystr = "    hello world and Tom and Rose and you"
print(mystr)
# 1.lstrip() 删除左侧的空白字符
new_str = mystr.lstrip()
print(new_str)

# 2.rstrip() 删除右侧的空白字符

# 3.strip() 删除左右两侧的空白字符
new_str = mystr.rstrip()
print(new_str)

 

# 字符串常用方法 ---- 判断
# 判断真假:返回的结果是布尔类型的数据:True False
mystr = "hello world and Tom and Rose and you"
# 1.startswitch()
# 判断字符串是否以某个字符串开头
print(mystr.startswith('hello'))
print(mystr.startswith('hel'))
print(mystr.startswith('hels'))

# 2.endswitch(): 判断字符串是否以某个子串结尾
print(mystr.endswith('you'))
print(mystr.endswith('you',5,10))

# 3.isalnum() 检测字符串是否由字母和数字组成

# 4.isdigit() 字符串是否为数字

# 5.isalpha() 字符串是否为字母

# 6.isspace() 字符串是否为空白字符
mystr1 = '1 2 4 4'
mystr2 = '    '
print(mystr1.isspace())
print(mystr2.isspace())

# 字符串总结:
#  下标,切片   常用操作方法:find index

 

# 知识点2.列表
# 列表的应用场景
# 列表的格式
# 列表的常用操作
# 列表的循环遍历
# 列表的嵌套使用

# 比如一个人的名字,写到存储程序中 ——》变量
# 如果一百个人的名字 ——》 列表存储多个数据
# 列表的格式:[数据1,数据2,数据3,数据4,数据5...]
# 列表可以一次性存储多个数据,且可以为不同的数据类型
# 操作:增删改查

 

# 下标
name_list = ['TOM','Lili','ROSE']
print(name_list)
print(name_list[0])
print(name_list[1])
print(name_list[2])

# 常用函数:
name_list = ['TOM','Lili','ROSE']
# 1.index()
print(name_list.index('TOM'))
# print(name_list.index('TOMS'))

# 2.count():统计指定数据在当前列表出现的次数
print(name_list.count('TOM'))

# 3.len():访问列表长度,获取列表中数据的个数
print(len(name_list))

 

# 判断是否存在
name_list = ['TOM','Lili','ROSE']
# 1.in
print('TOM' in name_list)
print('TOMS' in name_list)

# 2.not in
print('TOM' not in name_list)
print('TOMS' not in name_list)

# 需求:查找用户输入的名字是否已经存在
name_list = ['TOM','Lili','ROSE']
name = input('请输入您要搜索的名字:')
if name in name_list:
    print(f'{name}已经存在')
else:
    print(f'{name}不存在')

 

# 列表增加数据
# append()列表的结尾,追加数据
# name_list = ['TOM','Lili','ROSE']
# name_list.append('xiaohong')
# name_list.append([11,22])
# print(name_list)
# 1.列表数据可改的--列表是可变类型
# 2.append函数追加数据的时候,如果数据是一个序列,追加整个序列到列表结尾

# extend:列表结尾,追加数据
# name_list = ['TOM','Lili','ROSE']
# 单个数据
# name_list.extend('xiaohong')
# 序列数据
# name_list.extend(['mali','zhangsan'])
# print(name_list)
# extend:追加的数据是一个序列,吧把数据序列里面的数据拆开,然后逐一的追加到列表的结尾

# insert;在指定的位置新增数据 列表序列.insert(位置下标.数据)
# name_list = ['TOM','Lili','ROSE']
# name_list.insert(1,'abc')
# print(name_list)

 

# 列表操作 --- 删除数据
name_list= ['TOM','Lili','ROSE']
# 1.del
# del name_list
# del (name_list)

print(name_list)

# 指定下标删除数据
# del name_list[0]
# print(name_list)

# pop():删除指定下标数据(默认为最后一个),并返回该数据
# name_list= ['TOM','Lili','ROSE']
# del_name = name_list.pop(1)
# print(del_name)

# remove():移除列表中某个数据的第一个匹配项
# name_list = ['TOM','Lili','ROSE']
# name_list.remove('TOM')
# print(name_list)

# clear() 清空列表
# name_list = ['TOM','Lili','ROSE']
# name_list.clear()
# print(name_list)

 

# 列表修改数据
# 1.修改指定下标的数据
# name_list = ['TOM','Lili','ROSE']
# name_list[0] = 'abc'
# print(name_list)

# 2.逆序 逆置 : reverse()
# num_list = [1,2,3,4,5]
# num_list.reverse()
# print(num_list)

# sort()排序: 默认升序  也可以降序
# num_list = [1,3,5,2,6,4]
# num_list.sort()
# num_list.sort(reverse=True)
# print(num_list)

# 列表复制数据: 函数copy()
# name_list = ['TOM','Lili','ROSE']
# list1 = name_list.copy()
# print(name_list)
# print(list1)

 

# 列表的循环遍历之while
# 1.准备表示下标的数据
# 2.循环while
# 3.条件
# 4.遍历
# 5.下标+1
# name_list = ['TOM','Lili','ROSE']
# i = 0
# while i < len(name_list):
#     print(name_list[i])
#     i += 1
#
# # 列表的循环遍历之for
# for i in name_list:
#     print(i)

# 列表嵌套
name_list = [['TOM','Lili','ROSE'],['张三','李四','王五'],['小明','小红','小绿']]
print(name_list)
# 列表嵌套的时候的数据查询
print(name_list[0][1])

每日练习题

 

# 练习题:需求:8位老师,3个办公室,将8位老师随机分配到3个办公室
# 1.准备数据   ——》8位老师,3个办公室
# 2.分配老师到办公室 ——》随机分配   将老师的名字写入到办公室列表中
# 3.验证是否分配成功  ——》打印办公室详细信息

import random
teacher_list = ['teacher1','teracher2','teracher3','teracher4','teracher5','teracher6','teracher7','teracher8']
room_list = [['room1'],['room2'],['room3']]
for name in teacher_list:
    index = random.randint(0,2)
    room_list[index].append(name)
print(room_list)

# 题目1
# 题干
# 如果需要使用变量保存以下字符串,我们该如何书写代码
# 鲁迅说:"我没有说过这句话"

words = '鲁迅说:"我没有说过这句话"'
print(words)

# 题目2
# 题干
# 做一个简单的用户信息管理系统: 提示用户依次输入姓名,年龄和爱好 并且在输入完成之后,一次性将用户输入的数据展示出来

name = input('请输入姓名;')
age = input('请输入年龄:')
hobby = input('请输入爱好:')
print(f'您的名字为{name},年龄为{age},爱好为{hobby}')

# 题干
# 现有字符串如下,请使用切片提取出ceg words = "abcdefghi"

words = "abcdefghi"
print(words[2:7:2])

# 题目4
# 题干
# 有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,
# 最后输出这个新的列表 list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

mylist = ['red','apples','orange','pink','bananas','blue','black','white']
new_list = []
for i in mylist:
    word = i
    if word[-1] == 's' or word[-1] == 'e':
        new_list.append(i)
print(new_list)

# 题目5
# 题干
# 给定一个列表,首先删除以s开头的元素,删除后,修改第一个元素为"joke",并且把最后一个元素复制一份,放在joke的后边
# list = ["spring", "look", "strange" "curious", "black", "hope"]

# list = ["spring", "look", "strange","curious", "black", "hope"]
# for i in list:
#         if i.startswith('s'):
#                 list.remove(i)
# list[0] = 'joke'
# list.insert(1,list[-1])
# print(list)

# 题目6
# 题干
# 有如下两行代码: tuple1 = (2) tuple2 = (2,) 请问tuple1与tuple2有什么不同

# 对于tuple1 = (2),python解释器会将小括号理解成一个运算符号,那么这时候 返回的值是一个int类型
# 所以对于只有一个元素的元组来说,要创建一个元组,那么就必须要加逗号

# 题干
# 现有:typle1 = ("tom","kaisa","alisi","xiaoming","songshu") 我想获得“alisi”这个内容,你能否想到三种方法来做?

# typle1 = ("tom","kaisa","alisi","xiaoming","songshu")
# result1 = typle1[2]
# print(result1)
# result2 = typle1[-3]
# print(result2)
# for i in typle1:
#     if i == 'alisi':
#         print(i)

# 题目8
# 题干
# 有如下元组: typle1 = ("tom","kaisa","alisi","xiaoming","songshu") 求出他的长度
typle1 = ("tom","kaisa","alisi","xiaoming","songshu")
print(len(typle1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值