day7 字典 集合 字符串 随机数

day7
	字典
		1.获取
语法:字典名[key],获取指定key对应的value
dict[key]
		2.修改或添加
语法:字典名[key] = 值

#方式二:update(),更新,合并字典
#注意:dict1.update(dict2),将dict2合并到dict1

#方式三:setdefault(key,default),如果default定义,则添加一对键值对,
# 如果省略default,则添加的键值对为:key:None

#get(key,default),如果key存在,则返回对应的value
#如果key不存在,如果省略default,则返回None,但是如果未省略default,则返回default
		#3.删
#方式一:pop(key):根据指定的key删除键值对,返回值为被删除的key对应的value

#方式二:del
del dict1["bob"]
print(dict1)

#方式三:clear(),清空
dict1.clear()
print(dict1)  #{}
		#4.查
dict1 = {"zhangsan":50,"lisi":99,"jack":100,"bob":66}
#a.len():获取字典中键值对的对数
print(len(dict1))

#b.keys():获取字典中所有的key
print(dict1.keys())

#c.values():获取字典中所有的value
print(dict1.values())

#d.items():获取字典中所有的键值对
print(dict1.items())
		#5.其他
#a.copy()

#b.dict.fromkeys(序列):了解,序列可以是列表,元组,
r0 = dict.fromkeys(["a","b"])
print(r0)  #{'a': None, 'b': None}
		#6.遍历字典
dict1 = {"zhangsan":50,"lisi":99,"jack":100,"bob":66}

#方式一:直接遍历               ******
for key in dict1:
 print(key,dict1[key])


#方式二:enumerate,很少用
# for i,key in enumerate(dict1):
#     print(i,key,dict1[key])


#方式三:keys(),了解,更多使用方式一
for key in dict1.keys():
 print(key,dict1[key])


#方式四:values(),通过key获取value结果是唯一的,但是通过value获取key结果不是唯一的
for value in dict1.values():
 print(value)

#方式五:items(),获取key-value对        ******
for key,value in dict1.items():
 print(key,value)
	集合
		#1.创建
#1.{}默认表示字典,并不是集合
#注意:1.无序的,2.可以存放不同类型的数据  3.不允许存放重复元素【去重】
set1 = {14,"faf",True,14,14,14}
print(set1)
print(type(set1))

#2.set()
		#2.增
#a.add()
#注意1:如果元素已经存在,则添加失败
#注意2:通过add向集合中添加元素,只能添加不可变的数据类型

#b.update(),更新
#注意:通过update向集合中添加元素,只能添加可迭代对象【容器】,添加的时候打碎加入
		#3.删

#a.remove(x),删除指定的元素,删除集合中不存在的
#注意:删除集合中不存在的元素,则会报错,为KeyError【字典中key不存在时】
# s1.remove(20)   #KeyError: 20
# print(s1)

#b.discard(x),删除指定的元素,删除集合中不存在的元素,不会发生错误

#c.pop(),随机删除集合中的一个元素
		#4集合间的运算

#一、符号表示
s1 = {1,2,3}
s2 = {3,4,5}
#1.交集
print(s1 & s2)

#2.并集
print(s1 | s2)

#3.不同时包含于s1和s2的元素
print(s1 ^ s2)  #{1, 2, 4, 5}

#4.集合s1中包含但是集合s2中不包含的元素
print(s1 - s2)


#二、系统功能

#|
newset1 = s1.union(s2)
print(newset1)

#&
newset1 = s1.intersection(s2)
print(newset1)

#-
newset1 = s1.difference(s2)
print(newset1)
	数学功能
		> 内置功能
>
> - abs(x):返回数字的绝对值
> - (x>y)-(x<y):比较大小,
> - max(x1,x2,…):返回给定参数的最大值
> - min(x1,x2,…):返回给定参数的最小值
> - pow(x,y):求x的y次方的值
> - round(x,n):返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
>
> 导入math模块  import math;
>
> - ceil(x):返回x的上入整数,不能直接访问,需要通过math访问,即math.ceil(18.1)	
>
> - floor(x):返回x的下入整数,同ceil的用法
>
> - modf(x):返回x的整数部分和小数部分,两部分的数值符号与x相同,整数部分以浮点型表示,同ceil的用法
>
> - sqrt(x):返回数字x的平方根,数字可以为负数,返回类型为实数【浮点型】,同ceil的用法
	随机数功能
		import  random

#1.random.choice(iterable):从一个可迭代对象中随机获取一个数据
n1 = random.choice([4,5,6,7,"aa","bbb",True])  #列表
print(n1)

n1 = random.choice((4,5,6,7,"aa","bbb",True))   #元组
print(n1)

n1 = random.choice("fahjghjga")
print(n1)

#注意:前闭后开
n1 = random.choice(range(1,100))
print(n1)

#2.random.randint(start,end):从一个指定区间内获取一个数据
#注意:闭区间
n2 = random.randint(1,100)
print(n2)

#3.random.randrange(start,end,step),类似于range(start,end,step)的使用

#练习:产生一个4~10之间的随机数
print(random.choice(range(4,11)))
print(random.randint(4,10))
print(random.randrange(4,11))

#4.random.random():获取0~1之间的随机数,结果为浮点型
print(random.random())
print(round(random.random(),2))

#练习:产生一个20~100之间的随机数,包含浮点型
#[0,1]--->[0,80]---->[20,100]
print(random.random() * 80 + 20)
print(random.randint(20,100) + random.random())

#5.random.uniform()
print(random.uniform(20,100))

第7天:字典元组作业

必做题

  1. 声明一个列表,在列表中保存6个学生的信息

    students = [
    {'name': '小花', 'age': 19, 'score': 90, 'gender': '女', 'tel':
    '15300022839'},
    {'name': '明明', 'age': 20, 'score': 40, 'gender': '男', 'tel':
    '15300022838'},
    {'name': '华仔', 'age': 18, 'score': 90, 'gender': '女', 'tel':
    '15300022839'},
    {'name': '静静', 'age': 16, 'score': 90, 'gender': '不明', 'tel':
    '15300022428'},
    {'name': 'Tom', 'age': 17, 'score': 59, 'gender': '不明', 'tel':
    '15300022839'},
    {'name': 'Bob', 'age': 18, 'score': 90, 'gender': '男', 'tel':
    '15300022839'}
    ]
    
    #(1) 统计不及格学生的个数
    count=0
    for stu in students:
        if stu["score"]<60:
            count+=1
    print(count)
    
    #(2) 打印不及格学生的名字和对应的成绩
    count=0
    for stu in students:
        if stu["score"]<60:
            count+=1
            print("姓名:"+stu["name"],"成绩:%d" % (stu["score"]))
    print("一共%d人" % (count))
    
    #(3) 统计未成年学生的个数
    count=0
    for stu in students:
        if stu["age"]<18:
            count+=1
    print(count)
    
    #(4) 打印手机尾号是8的学生的名字
    for stu in students:
        if int(stu["tel"])%10==8:
            print("姓名:" + stu["name"])
    #或者
    for stu in students:
        if stu["tel"][-1]=="8":
            print(stu["name"])
    
    #(5) 打印最高分和对应的学生的名字
    score=[]
    for stu in students:
        score.append(stu["score"])
    maxscore=max(score)
    print(maxscore)
    for stu in students:
        if stu["score"]==maxscore:
            print("姓名:" + stu["name"], "成绩:%d" % (stu["score"]))
            
    #(6) 删除性别不明的所有学生(这个地方有个坑,跳不出来的话大家可以在群里套路,或者等老师的解答)      有坑     ****************
    for stu in students[:]:
        if stu["gender"]=="不明":
            students.remove(stu)
    print(students)
    #或者
    newList=[]
    for stu in students:
        if stu["gender"] !="不明":
            newList.append(stu)
    print(newList)
    
    #(7) 将列表按学生成绩从大到小排序(选做)
    for i in range(len(students)-1):
        for j in range(len(students)-1-i):
            if students[j]["score"] > students[j + 1]["score"]:
                students[j], students[j + 1] = students[j + 1], students[j]
    print(students)
    

    (1) 统计不及格学生的个数
    (2) 打印不及格学生的名字和对应的成绩
    (3) 统计未成年学生的个数
    (4) 打印手机尾号是8的学生的名字
    (5) 打印最高分和对应的学生的名字
    (6) 删除性别不明的所有学生(这个地方有个坑,跳不出来的话大家可以在群里套路,或者等老师的解答)
    (7) 将列表按学生成绩从大到小排序(选做)

  2. 写出你对今日授课内容中有疑问的地方(或者觉得有困难的知识点)

选做题

1.已知字符串:“this is a test of Python”

​ a.统计该字符串中字母s出现的次数

​ b.取出子字符串“test”

​ c.采用不同的方式将字符串倒序输出【面试题】

​ d.将其中的"test"替换为"exam"

#a.统计该字符串中字母s出现的次数
count=0
str1="this is a test of Python"
for i in str1:
    if i =="s":
        count+=1
print(count)
#或者
print(str1.count("s"))

#b.取出子字符串“test”
str2=str1[10:14]
print(str2)
    
#c.采用不同的方式将字符串倒序输出【面试题】
newStr1=str1[::-1]
print(newStr1)
#或者
list2=[]
for i in str1:
    list2.append(i)
list2.reverse()
newStr1="".join(list2)
print(newStr1)
#或者
s2=""
i=len(str1)-1
while i >=0:
    s2+=str1[i]
    i-=1
print(s2)
#或者
list1=list(str1)
list1.reverse()
s3="".join(list1)
print(s3)

#d.将其中的"test"替换为"exam"
print(str1.replace("test","exam"))

2.已知字符串 a = “aAsmr3idd4bgs7Dlsf9eAF”,要求如下

​ a.请将a字符串的大写改为小写,小写改为大写

​ b.请将a字符串的数字取出,并输出成一个新的字符串

​ c.请统计a字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一个字典。 例 {‘a’:4,‘b’:2}

​ d.输出a字符串出现频率最高的字母

​ e.请判断 'boy’里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,则输 出False

#a.请将a字符串的大写改为小写,小写改为大写
print(a.swapcase())

#b.请将a字符串的数字取出,并输出成一个新的字符串
b=[i for i in a if i.isdigit()]
c="".join(b)
print("c:",c)
#或者
for i in a:
    if i.isdigit():
        b+=i
print(b)

#c.请统计a字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一个字典。 例 {'a':4,'b':2}
c=a.lower()
dict1={}
for i in c:
    if i not in dict1:
        dict1[i]=1
    else:
        dict1[i]+=1
print(dict1)

#d.输出a字符串出现频率最高的字母
c=a.lower()
dict1={}
for i in c:
    if i not in dict1:
        dict1[i]=1
    else:
        dict1[i]+=1
print(dict1)
maxnum=max(dict1.values())
for j in dict1:
    if dict1[j]==maxnum:
        print(j)
#或者
count=0
for i in a:
    if a.count(i)>count:
        count=a.count(i)
for j in a:
    if a.count(j)==count:
        print(j)
        break
        
#请判断 'boy'里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,则输 出False
b="boy"
count=0
for i in b:
    if i in a:
        count+=1
if count==3:
    print(True)
else:
    print(False)
#或者
strSet=set(a)
strSet.update("boy")
if len(strSet)==len(set(a)):
    print(True)
else:
    print(False)

3.写代码,已知变量,name = "gouguoQ “,请按照要求实现每个功能

​ a.移除name变量对应值的两边的空格,并输出移除后的内容

​ b.判断name变量对应的值是否以"go"开头,并输出结果

​ c.判断name变量对应的值是否以"Q"结尾,并输出结果

​ d.将name变量对应的值中的"o",替换为"p",并输出结果

​ e.将name变量对应的值根据"o"分割,并输出结果

​ g.将name变量对应的值变大写,并输出结果

​ h.将name变量对应的值变成小写,并输出结果

​ i.请输出name变量对应的值的第二个字符

​ j.请输出name变量对应的值的前三个字符

​ k.请输出name变量对应值的后2个字符

​ l.请输出name变量中的值"Q的索引的位置

​ m.获取子序列,仅不包含最后一个字符,如:woaini则获取woain root则获取roo

​ n.利用下划线将列表li = [‘gou’, ‘guo’, ‘qi’]的每一个元素拼接成字符串gou_guo_qi

#a.移除name变量对应值的两边的空格,并输出移除后的内容
print(name.strip())

#b.判断name变量对应的值是否以"go"开头,并输出结果
if name.index("go")==0:
    print("以go开头")
#
print(name.startswith("go"))

#c.判断name变量对应的值是否以"Q"结尾,并输出结果
if name.index("Q")==len(name)-1:
    print("以Q结尾")
    
print(name.endswith("go"))

#d.将name变量对应的值中的"o",替换为"p",并输出结果
print(name.replace("o","p"))

#e.将name变量对应的值根据"o"分割,并输出结果
print(name.split("o"))

#g.将name变量对应的值变大写,并输出结果
print(name.upper())

#h.将name变量对应的值变成小写,并输出结果
print(name.lower())

#i.请输出name变量对应的值的第二个字符
print(name[1])

#j.请输出name变量对应的值的前三个字符
print(name[:3])

#k.请输出name变量对应值的后2个字符
print(name[(len(name)-2):len(name)])
print(name[-2:])

#i.请输出name变量中的值"Q的索引的位置
print(name.index("Q"))
print(name.find("Q"))

#m.获取子序列,仅不包含最后一个字符,如:woaini则获取woain root则获取roo
new=name[0:len(name)-1]
print(new)
new=name[:-1]

#n.利用下划线将列表li = ['gou', 'guo', 'qi']的每一个元素拼接成字符串gou_guo_qi
li = ['gou', 'guo', 'qi']
newStr="_".join(li)
print(newStr)

4.用三个元组表示三门学科的选课学生姓名(一个学生可以同时选多门课)

(1) 求选课学生总共有多少人
(2) 求只选了第一个学科的人的数量和对应的名字
(3) 求只选了一门学科的学生的数量和对应的名字
(4) 求只选了两门学科的学生的数量和对应的名字
(5) 求选了三门学生的学生的数量和对应的名字

pythons = ('stu1', 'stu2', 'stu6', 'stu7', 'stu9')
h5s = ('stu1', 'stu3', 'stu6', 'stu8', 'stu9')
javas = ('stu1', 'stu2', 'stu4', 'stu5', 'stu8', 'stu9')


#(1) 求选课学生总共有多少人
total_stus=set(pythons+h5s+javas)
print(total_stus)
print(len(total_stus))

#(2) 求只选了第一个学科的人的数量和对应的名字
first_course_stus=set(pythons)-set(h5s)-set(javas)
print(first_course_stus)
print(len(first_course_stus))

#(3) 求只选了一门学科的学生的数量和对应的名字    ******
'''
1.合并所有元祖
2.查看元组中每个人出现的次数
3.次数为1的只选了一门课
'''
all_tuple=pythons+h5s+javas
print(all_tuple)
stu_dict={}
for name in all_tuple:
    if name not in stu_dict:
        stu_dict[name]=1
    else:
        stu_dict[name]+=1
print(stu_dict)
one_dict={}
for k,v in stu_dict.items():
    if v==1:
        one_dict[k]=v
print(len(one_dict))
print(one_dict)
#(4) 求只选了两门学科的学生的数量和对应的名字 **********
two_dict={}
for k,v in stu_dict.items():
    if v==2:
        two_dict[k]=v
print(len(two_dict))
print(two_dict)
    
#(5) 求选了三门学生的学生的数量和对应的名字
thr_dict={}
for k,v in stu_dict.items():
    if v==3:
        thr_dict[k]=v
print(len(thr_dict))
print(thr_dict)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值