一.python基础3 【列表】
1.1布尔值和控制
布尔值分为True和False
空值是None,不可以当成0
1.2列表
'''列表'''
list=[]
#列表组合
list1=[1,2,3]
list2=[4,5,6]
list3=list1+list2
print(list3)
#列表重复
print(list1*3)
#判断是否在列表里面
print(3 in list1)
#列表截取
list4 = [0,1,2,3,4,5,6]
#输出不包括m[n,m]
print(list4[2:4])
#包括m[::m]
print(list4[3::])
print(list4[::4])
'''列表方法'''
#append 在列表末尾添加一个新元素
list5 = [0,1,2,3]
list5.append(6)
print(list5)
#extend 在列表末尾添加另一个列表
list6 = [0,1,2,3]
list6.extend([5,6,7])
print(list6)
#在下标处追加元素,其余后移
list7 = [0,1,2,3,4]
list7.insert(3,9)
list7.insert(3,[100,200])
print(list7)
#移除指定下标的元素,默认最后一个,并返回删除的数据
list8 = [0,1,2,3,4]
list8.pop()
print(list8)
#移除从左往右元素值,第一个移除
list9 = [9,8,7,6,7,5]
list9.remove(7)
print(list9)
#删除列表中所有该元素
num1 = list9.count(7)
num2 = 0
while num2 < num1:
list9.remove(7)
num2 += 1
print(list9)
#移除列表中所有元素
list10 = [9,8,7,6,7,5]
list10.clear()
print(list10)
#返回该元素的第一个索引值
list11 = [9,8,7,6,7,5]
print(list11.index(7))
#len 列表个数
list11 = [9,8,7,6,7,5]
print(len(list11))
#max 列表最大值
list11 = [9,8,7,6,7,5]
print(max(list11))
#min 列表最小值
list11 = [9,8,7,6,7,5]
print(min(list11))
#count 查看元素在列表中出现的次数
list12 = [9,8,7,6,7,5,9,8,7,6,7,5,9,8,7,6,7,5]
print(list12.count(9))
count1 = 0
for i in range(len(list12)):
if list12[i] == 9:
count1 = count1+1
print(count1)
# 逆序
list13 = [0,1,2,3,4,5]
list13.reverse()
print(list13)
list14 =[]
n = len(list13)
for i in range(n):
list14.append(list13[n-1-i])
print(list14)
#排序
list15 = [4,7,2,9,6,3,4,7,1]
list15.sort()
print(list15)
内存分类
栈区:系统自动分类,程序结束自动释放内存空间
堆区:程序员手动开辟,手动释放
'''拷贝'''
#浅拷贝 不同的变量名指向同一个内存空间,改变的时候会改变
list1 = [0,1,2,3,4]
list2 = list1
list2[3] =200
print(list1)
print(list2)
print(id(list1))
print(id(list2))
#深拷贝 另外开辟一个内存空间
list3 = [0,1,2,3,4]
list4 = list3.copy()
list4[3] =200
print(list3)
print(list4)
print(id(list3))
print(id(list4))
1.3条件控制语句
'''
死循环
表达式永远为真的循环
while 1:
print("Hello World")
'''
'''for语句'''
for 变量名 in 集合:
语句
'''range()函数 列表生成器
range([start],end,[step])
'''
#start 默认为0,end不包括,step默认为1
for i in range(2,100,2):
print(i)
for i in range(100,2,-2):
print(i)
'''enumerate()枚举遍历器'''
#遍历下标和列表元素
for index,m in enumerate([1,2,3,4,5]):
print(m,index)
'''braak语句'''
#跳出for和while语句
#只跳出最近的循环
'''continue()'''
#跳过当前循环中剩余语句,继续下一次循环
二.练习题
2.1找出列表中第二大的数
'''直接找,使用remove()'''
list1 = [2,6,3,8,9,4,9]
m1 = max(list1)
#去除列表中第一大的数
count = list1.count(m1)
num = 0
if count == 1:
list1.remove(m1)
else:
num = 0
while num < count:
list1.remove(m1)
num += 1
m2 = max(list1)
print(m2)
'''先排序,使用pop()'''
list1 = [2,6,2,5,1,4,0,6]
list1.sort()
m1=max(list1)
# 去除列表中最大的值
count = list1.count(m1)
num = 0
if count == 1:
list1.pop()
else:
num = 0
while num < count:
list1.pop()
num += 1
m2 = max(list1)
print(m2)
2.2打印九九乘法表
for i in range(1,10):
for j in range(1,10):
print(i,"*",j,"=",i*j)
2.3输入两个数,求这两个数的最大公约数
解题思路:从数学来看
辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
相减法:取两个数中的最大的数做减数,较小的数做被减数,用最大的数减去小数,如果结果为0,则被减数就是这两个数的最大公约数,如果结果不为0,则继续用这两个数中最大的数减较小的数,直到结果为0,则最大公约数为被减数。
#返回大值
def max1(a,b):
if a > b:
return a
else:
return b
#返回小值
def min1(a,b):
if a > b:
return b
else:
return a
'''辗转相除法'''
def diviser1(a,b):
min = min1(a,b)
max = max1(a,b)
c = max % min
#c为余数
while c!=0:
max,min = min,c
c = max % min
if c == 0:
print("最大公约数为",min)
'''相减法'''
def diviser2(a,b):
max = max1(a,b)
min = min1(a,b)
c = max - min
while c != 0:
max, min = min, c
c = max - min
if c == 0:
print("最大公约数为",min)
a = int(input("输入第一个数:"))
b = int(input("输入第二个数:"))
choice = int(input("选择辗转相除法,输入1,选择相减法,输入2:"))
if choice == 1:
diviser1(a,b)
else:
diviser2(a,b)
2.4输入一个字符串,将字符串的大写转小写,小写转大写
解题思路:
小写字母转换成ascii码后-32,得到的就是其对应的大写字母
同理,大写字母+32,得到的就是其对应的小写字母
'''字符串大小写转换
ord()函数,返回ASCII码
chr() 函数,返回字符
'''
def chage(c):
if ord(c) > 90:
return chr(ord(c)-32)
else:
return chr(ord(c)+32)
#str = str(input())
str ="asCD"
strN =" "
for i in str:
strN =strN+chage(i)
print(strN)
2.5随机生成一个6位数验证码
'''随机生成数字,字母,大小写'''
import random
#随机生成数字
def num1():
str1 = ""
for i in range(10):
str1 = str1 + str(i)
return random.choice(str1)
#随机生成大写字母
def alph1():
alph = ""
for i in range(26):
alph2=ord("A")+i
alph = alph + chr(alph2)
return random.choice(alph)
#随机生成小写字母
def alph2():
alph = ""
for i in range(26):
alph2=ord("a")+i
alph = alph + chr(alph2)
return random.choice(alph)
#主函数
def main():
out =""
for i in range(6):
n = random.choice("1,2,3")
if n =="1":
out = out +random.choice(num1())
elif n =="2":
out = out +random.choice(alph1())
else:
out = out +random.choice(alph2())
print(out)
main()
三.【python基础】4(字符串,元组,字典)
3.1元组
'''元组
'''
#定义元组
tuple1 = (1,2,3,4,5)
print(tuple1)
print(tuple1[2])
#获取最后一个元素
print(tuple1[-1])
print(tuple1[-2])
#修改元组
#初始化之后就不可修改,元组中的元素,元素内部可变
tuple2=(1,2,3,4,[5,6,7])
tuple2[-1][0] = 500
print(tuple2)
#删除元组
tuple3 =(1,2,3,4,5)
del tuple3
'''元组操作'''
#元组相加,成为一个新的元组
t4 = (1,2,3)
t5 = (4,5,6)
print(t4 + t5)
#元组重复
print(t4*3)
#元组元素判断
print(4 in t5)
#元组截取
t6=(1,2,3,4,5,6,7,8,9,0)
print(t6[3:7])
print(t6[3:])
print(t6[:7])
元组的方法
'''元组方法'''
t1 = (1,2,3,4,5,6,7)
#len()
print(len(t1))
#max().min()
print(max(t1))
#列表转成元组
list = [1,2,3,4]
t2 = tuple(list)
print(t2)
为什么用元组:
1.安全,元素内容无法修改
3.2字符串方法
'''字符串方法'''
'''split(str,count)'''
#以str为分隔符截取字符串,count为要截取的个数,默认字符串长度
str1 = "1**2**3****4****5"
#如果字符串中分割符过多
list1 = str1.split("*")
count = 0
for i in list1:
if len(i) > 0:
count +=1
print(count)
'''splitlines()按照(\r,\n分割)'''
str2 = '''Ben is a good boy
Ben is a better boy
Ben is a best boy
'''
print(str2.splitlines())
'''join()组合成字符串'''
#以指定字符串组合列表元组
list3 = ['Ben','is','a','boy']
str3 =" ".join(list3)
print(str3)
#max() min()按照ASCII码比较
'''replace(old,new,num)'''
#替换字符串,num替换的个数
str4 = "Ben is a good good good boy"
str5 = str4.replace("good","nice",1)
print(str5)
#字符串的映射表
t6 = str.maketrans("aco","659")
#a->6,c->5_
str7 = "Ben is a good boy"
str8 = str7.translate(t6)
print(str8)
#startswith(str,start,end)
#字符串以str开头
str9 = "Ben is a good boy"
print(str9.startswith("B",5,10))
#endswith(str,start,end)
#字符串以s结束
str9 = "Ben is a good boy"
print(str9.endswith("boy"))
#isalpha(),至少一个字符,且所有都为字母
str10 ="Benisagoodboy"
print(str10.isalpha())
#isalnum(),至少一个字符,且所有都为字母或数字
str11 ="Benisagoodboy7964"
print(str11.isalnum())
#isupper(),至少一个字符,且所有都大写
str11 ="ABCd"
print(str11.isupper())
#islower(),至少一个字符,且所有都大写
str12 ="abcd"
print(str12.islower())
#istitle()标题化
str13 ="Ben Hello "
print(str13.istitle())
#isdigit()只包含数字
str14 ="234466"
print(str14.isdigit())
#isnumeric只包含数字
print("123abc".isnumeric())
print("123".isnumeric())
3.3字典
'''字典
键:值-》key:value
字典中key唯一,不可变,不重复
键必须不可变,所以可以用数字,字符串或元组充当
'''
#保存多位学生的姓名和成绩
dict1={"Mark":60,"Lilei":80}
#元素访问
print(dict1["Mark"])
#元素修改
dict1["Mark"] = 70
print(dict1.get("Mark"))
#删除字典元素
del dict1["Mark"]
# 清空
dict1.clear()
# 删除词典
del dict1
#添加
dict2={}
dict2["student"] = 150
print(dict2.get("student"))
#不允许同一个键出现两次。
## 创建时如果同一个键被赋值两次,后一个值会被记住
dict3 = {"Name":'Zara',"Age": 7}
dict3["Name"] ="Manni"
print(dict3["Name"])
#遍历
for key in dict3:
print(key,dict3[key])
#values()
for value in dict3.values():
print(value)
#items()
for k,v in dict3.items():
print(k,v)
#枚举
for i,v2 in enumerate(dict3):
print(i,v2)