python学习笔记(1)

一、python之循环

while循环

while循环的语法

 while 条件:
	条件成立重复执行的代码

例子1:复打印5次:i am error

i=0
while i<5:
    print("i am error")
    i+=1

例子2:计算1-100累加和

i=1
result=0
while i<=100:
    result+=i
    i+=1
print("结果为:{}".format(result))

例子3:计算1-100之间的偶数累加和

i=1
result=0
while i<=100:
    if i%2==0:
        result+=i
    i+=1
print(result)

break和contiune的区别

break和contiune:是循环中满足一定条件退出循环的两种不同模式

break:一共有5个苹果,如果第三个吃饱了,就不需要吃剩下的苹果,吃苹果的动作停止,这就是break:终止此循环;

continue:如果吃的过程中,吃到第三个吃出了虫子,这个苹果就不吃了,开始吃第4个苹果,这就是continue,即退出当前循环继而执行下一次循环代码。

break的例子

i=1
while i<=5:
    if i==4:
        print("吃饱了,不吃了")
        break
    print("吃了{}个苹果".format(i))
    i+=1

continue的例子
注意:如果使用continue,一定要在continue之前加上计数器,否则会进入死循环

i=1
while i<=5:
    if i==3:
        print("有大虫子")
        i+=1
        continue
    print("吃了{}个苹果".format(i))
    i+=1

while循环嵌套的例子:

1、循环打印3遍i am wrong;clear the window;2、1是一套惩罚,这一套惩罚要执行3天

j=0
while j<3:
    i=0
    while i<3:
        print("i am wrong")
        i+=1
    print("clear the window")
    print("---------------一套惩罚结束-----------------")
    j+=1

while循环嵌套应用

1.需求:想要实现如图的效果
在这里插入图片描述
代码实现:

j=1
while j<=5:
    #一行*开始
    i=1
    while i<=5:
        print("*",end="")
        i+=1
    #一行*结束,该换行执行下一行了,利用print默认结束符换行
    print()
    j+=1

2.需求:打印9*9乘法表

j=1
while j<=9:
    i=1
    while i<=j:
        print(f'{i}*{j}={i*j}',end="\t") #\t就是为了乘法表对齐用的
        i+=1
    print()
    j+=1

循环的else简介

循环可以和else配合使用,else下方缩进的代码指的是当循环正常结束之后要执行的代码;如果是break终止循环的情况,else下方缩进的代码将不执行

while 条件:
	条件成立执行的代码
else:
	循环正常结束之后要执行的代码

例子1:

i=1
while i<=5:
    print("i am wrong")
    i+=1
else:
    print("原谅你了")

例子2:带break的例子

i=1
while i<=5:
    if i==3:
        print("你说的不真诚")
        break
    print("i am wrong")
    i+=1
else:
    print("原谅你了")

效果如下:
在这里插入图片描述
例子3:带continue的例子

i=1
while i<=5:
    if i==3:
        print("你说的不真诚")
        i+=1
        continue
    print("i am wrong")
    i+=1
else:
    print("原谅你了")

效果如下:
在这里插入图片描述

for循环

for循环的语法:

for 临时变量  in 序列:
	重复执行的代码

搭配continue的例子:

str="nihao"
for i in str:
    if i=="h":
        print("h不打印")
        continue
    print(i)
else:
    print("print is over")

效果如下:
在这里插入图片描述

循环的总结

1.break是退出整个循环;continue是退出本次循环,继续执行下一次重复执行的代码
2.else:
while和for都可以搭配使用else
else下方缩进的代码含义:当循环正常结束后执行的代码
break终止循环,不会执行else下方缩进的代码
continue退出循环,执行下方缩进的代码

二、python之字符串

切片

切片语法:

序列[开始位置下标:结束位置下标:步长]
左包右不包,默认步长为1
print(str[::-1])  表示倒序
print(str[-4:-1:-1]) 执行为空
-4开始到-1结束,选取方向是从左向右;但是-1步长,是从右向左
选取方向如果和步长的方向冲突,则无法选取数据
print(str[-1:-4:-1])这样选取方向就一致了

常用操作方法

1、查找

所谓字符串查找方法:查找子串在字符串中的位置或出现的次数
find():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1
index():效果和find一样,不存在就会执行报错
rfind()和rindex():是从右向左查找
语法:

字符串序列.find(子串,开始位置下标,结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找

举例如下:

a="ni hao and python"
print(a.find("ni",6,10))

结果为-1

2、修改

1、所谓修改字符串,指的就是通过函数的形式修改字符串中的数据
replace():替换

语法:

字符串序列.replace(旧子串,新子串,替换次数)
注意:替换次数如果查出子串出现次数,则替换次数为该子串出现次数

例子如下:

a="ni hao and ni python"
print(a.replace("ni","you"))

效果如下:
在这里插入图片描述

2、split():按照指定字符分割字符串,会返回一个列表,丢失分割字符

语法:

字符串序列.split(分割字符,num)
num表示的是分割字符出现的次数

例子如下:

a="ni hao and ni python and ni it"
print(a.split("and",1))

效果如下:
在这里插入图片描述

3、join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串,合并列表里面的字符串数据为一个大字符串

语法:

字符或子串.join(多字符串组成的序列)

例子如下:

list=["a","b","c"]
new_str='...'.join(list)
print(new_str)

效果如下:
在这里插入图片描述

4、strip():删除字符串两侧空白字符,还有lstrip()和rstrip()
ljust():左对齐,just():右对齐,center():居中

对齐的例子:
在这里插入图片描述

5、startswith(),endswith():判断字符串的开头或结尾是否正确,返回值为true或false

str="hello li yu"
print(str.startswith("he"))

返回值为True

6、isalpha():字符串都是有字母组成,则返回True,否则返回False
isdigit():如果字符串值包含数字则返回True,否则返回False
isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,反之为False
isspace():如果字符串中只包含空格,则返回True,反之为False

例子如下:

str="hello li yu"
print(str.isalpha())

结果为False,因为有空格

str="1234"
print(str.isdigit())

结果为True
例子如下:

str="1234tui"
print(str.isalnum())

结果为True

str="  is "
print(str.isspace())

结果为False

三、python之列表

1、列表的格式
【数据1,数据2,数据3,数据4】
列表可以一次性存储多个数据,且可以为不同数据类型
列表的常用操作:增删改查
1.查找
使用函数查找之index():查找数据的下标

name_list=["lili","rose","tom"]
print(name_list.index("lili"))

count():统计指定数据在列表中出现的次数

name_list=["lili","tom","rose"]
print(name_list.count("lili"))

len():计算列表中数据的个数,即长度

name_list=["lili","tom","rose"]
print(len(name_list))

2、判断是否存在

in:指定的数据在列表之中,在就返回True,不在就返回False
not in:不在就返回True,在就返回False

name_list=["lili","tom","rose"]
print("tom"in name_list)

体验案例:

需求:查找用户输入的名字是否已经存在

代码如下:

name_list=["lili","tom","rose"]
name=input("请输入您要搜索的名字:")
if name in name_list:
    print(f"您输入的名字是{name},此用户已存在")
else:
    print(f"您输入的名字{name}不存在,可以注册")

3、增加数据

增加指定数据到列表中

1、append():列表结尾增加数据

用法:列表序列.append(数据)

例子如下:

name_list=["lili","tom","rose"]
name_list.append("yuyu")
print(name_list)

结果为:[‘lili’, ‘tom’, ‘rose’, ‘yuyu’]

name_list=["lili","tom","rose"]
name_list.append(["yuyu","jack"])
print(name_list)

结果为:[‘lili’, ‘tom’, ‘rose’, [‘yuyu’, ‘jack’]]
由此可见:列表是可变类型
2、extend():在列表结尾追加数据,与append不同的是,增加序列时,append是整体追加,而extend是将序列的数据拆开再逐一添加到列表中

name_list=["lili","tom","rose"]
name_list.extend("xiaoli")
print(name_list)

结果为:[‘lili’, ‘tom’, ‘rose’, ‘x’, ‘i’, ‘a’, ‘o’, ‘l’, ‘i’]
追加列表的例子如下:

name_list=["lili","tom","rose"]
name_list.extend(["xiaoli","xiaohong"])
print(name_list)

结果为:[‘lili’, ‘tom’, ‘rose’, ‘xiaoli’, ‘xiaohong’]
3、insert():指定位置新增数据

语法:列表序列.insert(位置下标,数据)

name_list=["lili","tom","rose"]
name_list.insert(1,"yuyu")
print(name_list)

结果为:[‘lili’, ‘yuyu’, ‘tom’, ‘rose’]
4、删除
1、del:删除整个列表或者指定的数据

语法:del 目标

删除列表

name_list=["lili","tom","rose"]
del name_list
print(name_list)

结果为:
在这里插入图片描述
删除指定数据

name_list=["lili","tom","rose"]
del name_list[0]
print(name_list)

结果为:[‘tom’, ‘rose’]
2、pop():删除指定下标的数据,如果不指定下标,会默认删除最后一个数据;无论是按照下标还是删除最后一个数据,pop都会返回这个被删除的数据

name_list=["lili","tom","rose"]
del_name=name_list.pop()
print(del_name)
print(name_list)

结果为:
rose
[‘lili’, ‘tom’]
3、remove():删除指定数据

name_list=["lili","tom","rose"]
del_name=name_list.remove("lili")
print(name_list)

结果为:[‘tom’, ‘rose’]
4、clear():清空列表的数据

name_list=["lili","tom","rose"]
name_list.clear()
print(name_list)

结果为:[]
5、修改
修改指定下标数据

list=[1,2,3]
list[0]="5"
print(list)

结果为:[5, 2, 3]
逆置:reverse()

list=[1,2,3]
list.reverse()
print(list)

结果为:[3, 2, 1]
排序sort:列表序列.sort(key=None,reverse=False)

list=[1,3,2,5,4,6]
list.sort()
print(list)

结果为:[1, 2, 3, 4, 5, 6],可见默认排序是升序,reverse=False
降序的例子:

list=[1,3,2,5,4,6]
list.sort(reverse=True)
print(list)

结果为:[6, 5, 4, 3, 2, 1]
6、复制
如果我们要对现有数据做修改,删除,就会复制保存一份旧数据,以免出错,这时候就会用到copy()。

name_list1=["tom","lili","rose"]
name_list2=name_list1.copy()
print(name_list1)
print(name_list2)

结果为:
[‘tom’, ‘lili’, ‘rose’]
[‘tom’, ‘lili’, ‘rose’]
6、列表的循环遍历
while循环
需求:依次打印列表中的各个数据

name_list=["tom","lili","rose"]
i=0
while i<len(name_list):
    print(name_list[i])
    i+=1

结果为:在这里插入图片描述
for循环:

name_list=["tom","lili","rose"]
for i in name_list:
    print(i)

7、列表的嵌套
所谓的列表嵌套就是一个列表里面包含了其他的子列表
应用场景:要存储一二三年级的学生姓名,且每个班级的学生名在一个列表里
如何查找到数据:tom?

name_list=[["tom","lili","rose"],["张三","李四","王五"],["小红","小明","小绿"]]
print(name_list[0][0])

8、综合应用
将8个老师随机分配到3个办公室里

结题步骤:
1、准备数据:老师,办公室,用列表
2、分配老师到教室:random模块,办公室列表追加老师名字
3、验证是否分配成功

代码如下:

import random
teachers=["a","b","c","d","e","f","g","h"]
offices=[[],[],[]]
#分配老师到办公室,取到每个老师到办公室列表,遍历老师列表数据
for name in teachers:
    #不能指定某个具体下标,所以在1-3中随机下标
    num=random.randint(0,2)
    #列表追加数据,append(选中),insert,extend
    offices[num].append(name)
#print(offices)
#为了更加贴合生活,把各个办公室的列表都加上编号,1,2,3
i=1
#验证是否分配成功
for office in offices:
    #打印办公室的人数,len()
    print(f"办公室{i}的人数为{len(office)},老师分别为:")
    #打印老师的名字,每个子列表的名字个数不一定,所以遍历子列表
    for name in office:
        print(name)
    i+=1

效果如下:

办公室1的人数为1,老师分别为:
h
办公室2的人数为3,老师分别为:
b
c
e
办公室3的人数为4,老师分别为:
a
d
f
g

四、python之元组

1、元组的应用场景:
如果想要存储多个数据,但是这些数据是不能修改的数据,就用到元组了。列表数据可以修改
2、元组的定义

定义多个数据
t1=(10,20,30)
print(type(t1)) #<class 'tuple'>

定义单个数据的元组,一定要加逗号
t2=(45,)
print(type(t2))  #<class 'tuple'>
t2=(45)
print(type(t2))  #<class 'int'>
t4=("aaa")
print(type(t4))  #<class 'str'>

3、元组的常见操作
1、查找
元组数据不支持修改,只支持查找,具体如下:
按下标查找数据

t1=("a","b","c")
print(t1[0])

index():查找某个数据,在就返回对应下标,不在就报错

t1=("a","b","c")
print(t1.index("b"))

count():统计某个数据在当前元组出现的次数

t1=("a","b","c","c")
print(t1.count("c"))

len():统计元组中数据的个数

t1=("a","b","c","c")
print(len(t1))

2、修改
元组内的直接数据如果修改立即报错

t2=("a","b",["cc","dd"])
t2[0]="d"

结果如下:
在这里插入图片描述
元组里面如果嵌套了列表,就可以修改

t2=("a","b",["cc","dd"])
t2[2][0]="bb"
print(t2)

结果为:(‘a’, ‘b’, [‘bb’, ‘dd’])

五、python之字典

1、字典的应用场景
如果有多个数据,例如:“tom”,“男”,20,如何快速存储
2、创建字典的语法

字典的特点:

  1. 符号为大括号
    2.数据为键值对形式出现
    3.各个键值对之间用逗号隔开

3、字典的常见操作
1、增

写法:字典序列【key】=值
注意:如果key值存在,则修改这个key的值;如果key不存在,就新增此键值对

dict1={"name":"tom","age":19,"sex":"男"}
dict1["name"]="rose"
print(dict1)
结果为:{'name': 'rose', 'age': 19, 'sex': '男'}

dict1={"name":"tom","age":19,"sex":"男"}
dict1["id"]=110
print(dict1)
结果为:{'name': 'tom', 'age': 19, 'sex': '男', 'id': 110}

2、删
删除指定键值对

dict1={"name":"tom","age":19,"sex":"男"}
del dict1["name"]
print(dict1)
结果为:{'age': 19, 'sex': '男'}

删除字典

dict1={"name":"tom","age":19,"sex":"男"}
del dict1
print(dict1)
结果为:NameError: name 'dict1' is not defined

清空字典

dict1={"name":"tom","age":19,"sex":"男"}
dict1.clear()
print(dict1)
结果为:{}

3、改
和1里面的新增一样的,key存在就是修改key值,key不存在就变成了新增

dict1={"name":"tom","age":19,"sex":"男"}
dict1["name"]="rose"
print(dict1)
结果为:{'name': 'rose', 'age': 19, 'sex': '男'}

4、找
1、key值查找

dict1={"name":"tom","age":19,"sex":"男"}
print(dict1["name"])  #查找的key值不存在就会报错

2、使用函数查找:
1、get()

语法:字典序列.get(key,默认值)
如果当前查找的key不存在就会返回第二个参数(默认值),如果省略第二个参数,则返回None

dict1={"name":"tom","age":19,"sex":"男"}
print(dict1.get("name"))
结果为:tom

如果key值不存在

dict1={"name":"tom","age":19,"sex":"男"}
print(dict1.get("id"))
结果为:None
设置参数的例子如下:
dict1={"name":"tom","age":19,"sex":"男"}
print(dict1.get("id",110))
结果为:110

2、keys()

打印字典中所有的key

dict1={"name":"tom","age":19,"sex":"男"}
print(dict1.keys())
结果为:dict_keys(['name', 'age', 'sex'])

3、values()

打印字典中所有的值

dict1={"name":"tom","age":19,"sex":"男"}
print(dict1.values())
结果为:dict_values(['tom', 19, '男'])

4、items()

查找字典中所有的键值对,里面的数据是元组

dict1={"name":"tom","age":19,"sex":"男"}
print(dict1.items())
结果为:dict_items([('name', 'tom'), ('age', 19), ('sex', '男')])

六、字典的循环遍历

1、遍历字典的key(用到我们上面说的keys())

dict1={"name":"tom","age":19,"sex":"男"}
for key in dict1.keys():
    print(key)
结果为:
name
age
sex

2、遍历字典中的value(用到上面说的values())

dict1={"name":"tom","age":19,"sex":"男"}
for value in dict1.values():
    print(value)
结果为:
tom
19

3、遍历字典的元素(items())

dict1={"name":"tom","age":19,"sex":"男"}
for item in dict1.items():
    print(item)
结果为:
('name', 'tom')
('age', 19)
('sex', '男')

4、字典的循环遍历之键值对拆包

dict1={"name":"tom","age":19,"sex":"男"}
for key,value in dict1.items():
    print(f"{key}:{value}")
结果为:
name:tom
age:19
sex:

七、python之集合

1、创建集合

创建集合用{}或者set(),但是如果要创建空集合只能使用set(),因为{}用来创建空字典

s1={10,20,30,40,50,30}
print(s1)
结果为:{40, 10, 50, 20, 30}

由此可见,顺序变化了,不支持下标,而且会去重
创建空集合

s2=set()
print(type(s2))
结果为:<class 'set'>

使用set创建集合

s1=set("abcddeffg")
print(s1)
结果为:{'f', 'a', 'b', 'd', 'c', 'g', 'e'}

2、常见操作之增删改
1、增
add():增加单个数据

s1={10,20}
s1.add(100)
print(s1)

由此可见集合是可变类型
update():增加的数据是序列,增加单个数据会报错

s1={10,20}
s1.update([10,20,30,40])
print(s1)
结果为:{40, 10, 20, 30}

2、删
1、remove():删除集合中的指定数据,如果数据不存在就会报错
删除不存在的数据

s1={10,20,30}
s1.remove(200)
print(s1)

结果为:
在这里插入图片描述
2、discard():删除集合中的指定数据,数据不存在不会报错
删除不存在的数据

s1={10,20,30}
s1.discard(200)
print(s1)
结果为:{10, 20, 30}

3、pop():随机删除一个数据,并返回这个数据

s1={2,3,4}
s2=s1.pop()
print(s2)
print(s1)
结果为:
2
{3, 4}

3、查
in():判断数据在集合序列

s1={2,3,4}
print(2 in s1)
结果为:True

not in():判断数据不在集合序列

s1={2,3,4}
print(2 not in s1)
结果为:False

八、公共操作之运算符

运算符支持的容器类型
+(合并)字符串,列表,元组
*(复制)字符串,列表,元组
in字符串,列表,元组,字典
not in字符串,列表,元组,字典

+(合并)的例子:

list1=[1,2]
list2=[3,4]
t1=(1,2)
t2=(3,4)
dict1={"name":"python"}
dict2={"age":24}
str1="aa"
str2="bb"
print(str1+str2)
print(list1+list2)
print(t1+t2)
结果为:
aabb
[1, 2, 3, 4]
(1, 2, 3, 4)

*(复制)的例子:

print(str1*10)
print(list1*3)
print(t1*3)
结果为:
aaaaaaaaaaaaaaaaaaaa
[1, 2, 1, 2, 1, 2]
(1, 2, 1, 2, 1, 2)

in和not in的例子

print(2 in t1)
print("python" not in dict1.values())
结果为:
True
False

九、python之公共方法

公共方法就是指学过的数据类型都能使用的公共函数

函数描述
len()计算容器中的元素个数
del()或del删除
max()/min()返回容器中元素最大/小值
range(start.end,step)生成从start到end的数字,步长为step,
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值