目录
一、声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
二、声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
三、用三个元组表示三门学科的选课学生姓名(一个学生可以同时选多门课)
四、已知字符串 s = "aAsmr3idd4bgs7Dlsf9eAF",要求如下
五、将字符串按照单词进行逆序,空格作为划分单词的唯一条件
六、输入一个字符串,压缩字符串如下aabbbccccbbd变成a2b5c4d1
七、,将字符中单词用空格隔开
一、声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
student = {'姓名':'张三','年龄':23,'成绩':90,'电话':12345,'性别':'男'}
二、声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
(1) 统计不及格学生的个数
(2) 打印不及格学生的名字和对应的成绩
(3) 统计未成年学生的个数
(4) 打印手机尾号是8的学生的名字
(5) 打印最高分和对应的学生的名字
(6) 删除性别不明的所有学生
(7) 将列表按学生成绩从大到小排序(选做)
#(1)统计不及格学生的个数
student_list = [{'姓名':'张三','年龄':23,'成绩':90,'电话':12345,'性别':'男'},
{'姓名':'李四','年龄':34,'成绩':45,'电话':45672,'性别':'不明'},
{'姓名':'王五','年龄':45,'成绩':30,'电话':12785,'性别':'女'},
{'姓名':'赵柳','年龄':89,'成绩':80,'电话':90432,'性别':'不明'},
{'姓名':'麻七','年龄':12,'成绩':75,'电话':98473,'性别':'男'},
{'姓名':'丽丽','年龄':16,'成绩':64,'电话':23532,'性别':'女'}]
# count = 0
# for i in student_list:
# if(i.get('成绩') < 60):
# count +=1
# print('不及格学生人数:{}'.format(count))
#
# #(2) 打印不及格学生的名字和对应的成绩
# for i in student_list:
# if(i.get('成绩') < 60):
# print('不及格学生的名字是:{},对应的成绩为:{}' .format(i.get('姓名'),i.get('成绩')))
#(3) 统计未成年学生的个数
# count = 0
# for i in student_list:
# if (i.get('年龄') < 18):
# count +=1
# print('未成年的个数为:{}'.format(count))
#(4) 打印手机尾号是8的学生的名字
# for i in student_list:
# if (i.get('电话') % 10 == 2):
# print('手机尾号为2的学生为:%s' % i['姓名'])
# #(5) 打印最高分和对应的学生的名字
# max = 0
# name = ''
# for i in student_list:
# if (i.get('成绩') > max):
# max = i.get('成绩')
# name = i.get('姓名')
# print('最高分为:{},姓名为:{}'.format(max,name))
#(6) 删除性别不明的所有学生
# s = []
# for i in student_list:
# if (i.get('性别') == '不明'):
# continue
# s.append(i)
# print(s)
#(7) 将列表按学生成绩从大到小排序
'''
Python 内置函数 sorted() 及列表 *** 作函数 sort()
二者的完整语法如下:
1、sort()
List.sort(key=None,reverse=False)
key:排序依据,通常为函数名,如 abs、str.lower、str.upper 等;或以函数指定可迭代对象中的某个元素来进行排序。
reverse:排序规则,reverse=True 降序, reverse=False 升序(默认)。
2、sorted()
sorted(iterable,key=None,reverse=False)
iterable:排序对象,如字符串,列表,元组,字典等可迭代对象。
key:排序依据,通常为函数名,如 abs、str.lower、str.upper 等;或以函数指定可迭代对象中的某个元素来进行排序。
reverse:排序规则,reverse=True 降序, reverse=False 升序(默认)。
二者的主要区别是:
sort() 是应用在列表上的方法,是对已经存在的列表进行排序 *** 作并覆盖,无返回值;
sorted() 则可以对所有可迭代的对象进行排序 *** 作,返回的是一个新的列表,而不是在原来的基础上进行的 *** 作。
如果要排序的对象比较复杂,难以用单一参数来实现时,则需要引入匿名函数 lambda。
通常而言,Python 自定义函数主要有两种方式,一是 def,二便是 lambda。
lambda 函数体比 def 简单很多,比较直观。
lambda 的主体是一个表达式,而不是一个代码块。
lambda 表达式仅能封装有限的逻辑。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
lambda 函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
其中 [arg1 [,arg2,.....argn]] 为入口参数,expression 为函数体。作为函数对象,其也可赋值给一个变量,再利用变量来调用该函数:
'''
student_list.sort(key=lambda x:x['成绩'],reverse=True)
print(student_list)
# len1 = len(student_list)
# for x in range(len1):
# for y in range(len1 - x - 1):
# if student_list[y]['成绩'] < student_list[y + 1]['成绩']:
# student_list[y],student_list[y + 1] = student_list[y + 1],student_list[y]
# print(student_list)
三、用三个元组表示三门学科的选课学生姓名(一个学生可以同时选多门课)
(1) 求选课学生总共有多少人
(2) 求只选了第一个学科的人的数量和对应的名字
(3) 求只选了一门学科的学生的数量和对应的名字
(4) 求只选了两门学科的学生的数量和对应的名字
(5) 求选了三门学生的学生的数量和对应的名字
python = ('stu1','stu2','stu6','stu7','stu9','stu10','stu11')
h5s = ('stu1','stu3','stu6','stu8','stu9')
javas = ('stu1','stu2','stu4','stu5','stu8','stu9')
#(1) 求选课学生总共有多少人
# total = []
# for i in python:
# if i not in total:
# total.append(i)
#
# for j in javas:
# if j not in total:
# total.append(j)
#
# for k in h5s:
# if k not in total:
# total.append(k)
# print(len(total))
#(2)求只选了第⼀个学科的⼈的数量和对应的名字
# only_python = []
# for i in python:
# if (i not in h5s and i not in javas):
# only_python.append(i)
# print('只选了第一学科的人数为:{},分别是{}'.format(only_python,len(only_python)))
'''
位置传参是将要传入位置的值当做一个整体(不管是字典还是列表、元组)都当成一个整体传入
如果使用字典或者元组传参,是将元组或者字典里面的内容分别赋值给省略字段名的位置,依次传入(左边大括号数可以小于内容数,从前向后取)
可以同时传递位置参数和关键字参数,省略字段名不能和数字形式的字段名同时出现,关键字参数必须位于位置参数之后
'''
#(3)求只选了一门学科的学生的数量和对应的名字
# only_one = []
# for i in python:
# if (i not in javas and i not in h5s):
# only_one.append(i)
#
# for j in javas:
# if (i not in python and i not in h5s):
# only_one.append(i)
#
# for i in h5s:
# if (i not in javas and i not in python):
# only_one.append(i)
# print('只选了一学科的人数为:{},分别是{}'.format(len(only_one),only_one))
#(4)求只选了两门学科的学生的数量和对应的名字
# only_two = []
# for i in python:
# if i in h5s and i not in javas:
# only_two.append(i)
# elif i in javas and i not in h5s:
# only_two.append(i)
# for j in h5s:
# if j in javas and j not in python:
# only_two.append(j)
#
# print('只选了一学科的人数为:{},分别是{}'.format(len(only_two),only_two))
#(5)求选了三门学生的学生的数量和对应的名字
only_all = []
for i in python:
if i in h5s and i in javas:
only_all.append(i)
print('只选了一学科的人数为:{},分别是{}'.format(len(only_all),only_all))
四、已知字符串 s = "aAsmr3idd4bgs7Dlsf9eAF",要求如下
a.请将s字符串的大写改为小写,小写改为大写: swapcase()
s = "aAsmr3idd4bgs7Dlsf9eAF"
str = []
for i in range(len(s)):
if ( 'a' <= s[i] <= 'z'):
str.append(chr(ord(s[i]) - 32))
elif ('A' <= s[i] <= 'Z'):
str.append(chr(ord(s[i]) + 32))
else:
str.append(s[i])
print(''.join(str))
b.请将s字符串的数字取出,并输出成一个新的字符串: 循环,isdigit()
s = "aAsmr3idd4bgs7Dlsf9eAF"
str = []
for i in s:
if '0'<= i <='9':
str.append(i)
print(''.join(str))
c.请统计s字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),
并输出成一个字典。 例 d = {'a':2,'s':1, 'm':1}
提示:循环,判断字符是否在字典中 'a' in d
s = "aAsmr3idd4bgs7Dlsf9eAF"
str = []
key_value = {}
for i in s:
if '0' <= i <= '9':
continue
elif 'A' <= i <= 'Z':
str.append(chr(ord(i) + 32))
else:
str.append(i)
str_set = set(str)
for j in str_set:
num = str.count(j)
key_value[j] = num
print(key_value)
d.输出s字符串出现频率最高的字母, 如果有多个最高,将每个都输出: max(d.values()),再循环
s = "aAsmr3idd4bgs7Dlsf9eAF"
str = []
key_value = {}
for i in s:
if '0' <= i <= '9':
continue
elif 'A' <= i <= 'Z':
str.append(chr(ord(i) + 32))
else:
str.append(i)
str_set = set(str)
for j in str_set:
num = str.count(j)
key_value[j] = num
print(key_value)
#d.输出s字符串出现频率最高的字母, 如果有多个最高,将每个都输出: max(d.values()),再循环
str_count = []
max_count = max(key_value.values())
for k in key_value.keys():
if key_value[k] == max_count:
str_count.append(k)
print(str_count)
e.请判断'boy'字符串中的每一个字母,是否都出现在s字符串里。
如果出现,则输出True,否则,则输出False
a = "boy"
s = "aAso3idd4bgs7Dlsf9eAF"
for i in a:
if i in s:
continue
else:
print('False')
break
else:
print('True')
五、将字符串按照单词进行逆序,空格作为划分单词的唯一条件
如传入:”Welome to Beijing”改为 “Beijing to Welcome”
s = 'Welome to Beijing'
s1 = list(s.split(' '))
s1.reverse()
print(' '.join(s1))
六、输入一个字符串,压缩字符串如下aabbbccccbbd变成a2b5c4d1
s = 'aabbbccccbbd'
dict2 = {}
for i in s:
if i not in dict2:
dict2[i] = s.count(i)
s1 = ''
for k,v in dict2.items():
s1 += k + str(v)
print(s1)
七、,将字符中单词用空格隔开
已知传入的字符串中只有字母,每个单词的首字母大写,
请将每个单词用空格隔开,只保留第一个单词的首字母大写
传入:”HelloMyWorld” 返回:”Hello my world
s = 'HelloMyWorld'
str = []
for i in range(len(s)):
if 'A' <= s[i] <='Z' and i != 0:
str.append(' ')
str.append(s[i])
print(''.join(str).capitalize())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)