【python基础】python基础3+4(列表,元组字符串,字典)

一.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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章