比赛成绩计算
score = [[87,79,90],[99,83,93],[90,75,89],[89,87,94],[95,85,84]]
for i in range(len(score)):
final = score[i][0]*0.6 + score[i][1]*0.3 + score[i][2]*0.1
print('the {} final score is {}'.format(i+1, int(final)))
列表里每一个元素又是一个列表,对应一组的竞赛成绩
利用 len(score) 求得总的组数;
为了在输出语句里输出各组的编号数,所以需要使用带循环变量 i 的 for 循环
在这个循环结构中,按照计算公式计算每一组的总成绩,并显示输出计算结果
因为结果要求显示整数,格式定义里使用了int(final)。
员工工资表
members = {'张三':['人力部',5500],
'李四':['后勤部',4500],
'王三':['市场部',6500],
'赵六':['开发部',8500]
}
sal_dep = {}
for key in members:
print('{}的工资是:{}, 部门是{}'.format(key, members[key][1], members[key][0]))
sal_dep[members[key][1]] = members[key][0]
max_val = max(sal_dep)
max_name = sal_dep[max_val]
print('工资最高的部门是:{},该部门工资是:{}'.format(max_name,max_val))
字典 members 里的 value 是个列表,所以需要用到列表的索引
对着字典 members 遍历,按照要求显示每个员工的工资和部门信息,另外还要取得工资和部门的名称存入字典 sal_dep
为了统计工资最高的部门的工资,需要字典 sal_dep 来保存这两个信息并且这个字典的 key 应该是工资数
用 max 函数对字典 sal_dep 的 key 进行求最大值的计算,并将最大值赋给变量 max_val
再从字典里,取出 key 为 max_val 的 value 赋给变量 max_name
最后按照要求显示结果
计算向量积
ls = [111, 222, 333, 444, 555, 666, 777, 888, 999]
lt = [999, 777, 555, 333, 111, 888, 666, 444, 222]
s = 0
for i in range(len(ls)):
s += ls[i]*lt[i] #对应i位置的元素相乘后累加
# 错误代码s+ = ls[i] * lt[i]
print(s)
课程分数按学号排序输出
#studs列表中的元素是字典
studs= [{'sid':'103','Chinese': 90},
{'sid':'101','Chinese': 80},
{'sid':'102','Chinese': 70}]
scores = {}
for stud in studs:
sv = stud.items() #sv被赋值为二维列表,形如[('sid','103'),('Chinese',90)]
for it in sv:
if it[0] == 'sid': #第一次访问:it = ('sid','103')
k = it[1] # k = '103'
else: #第二次访问:it = ('Chinese',90) it[1] = 90
scores[k] = it[1] #scores["103"] = 90
so = list(scores.items()) #形如:[('103':90),('101':80),...]
so.sort(key = lambda x:x[0],reverse = False) #按学号进行排序
for l in so:
print('{}:{}'.format(l[0],l[1])) #遍历输出排序后结果
- 字典作为元素,定义在列表里,用列表的遍历就可以从中提取出来
- 提取出来的元素直接就是字典,因此可以用 items()直接获取,形成键值对对象集合 sv;
- 对键值对对象集合sv遍历,就可以以元组it的方式访问其中的每一对键值对,sv = stud.items(),是第一个空的答案;
- 题目要求提取学生的学号,所以需要比较键it[0]是否是’sid’,是则将学号it[1]提取出来作为新的字典scores的键k;不是则将成绩提取出来作为新字典scores的值,scores[k] = v,是第二个空的答案
- 经过对studs列表里的各条字典处理完之后,新的scores字典就全部生成。
- 题目要求按学号从小到大的顺序输出学号和成绩,所以需要对字典的键值对内容items()提取到列表so里,此处是第三个空的答案:so = list(scores.items())
- 用Lambda函数进行排序。这个不在考试范围里,所以代码模板直接给出语句;
- 对排好序的列表输出每组列表。
计算向量的内积
flag = 1
while flag:
try:
n = eval(input())
xin = input().split(',')
yin = input().split(',')
flag =0
sum = 0
for i in range(n):
sum += int(xin[i]) * int(yin[i])
print("x和y的内积是:", sum)
except:
print("请输入整数!")
flag =1
列表元素统计
def is_prime(n): #定义判断n是否是素数的函数
for i in range(2,n): #如果是,函数值为True
if n % i == 0:
return False #如果不是,函数值返回为False
return True
ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] #本题目主要针对的是没有重复数据的列表
for i in ls.copy(): #遍历ls中每一个元素,ls.copy()这是一个拷贝副本,保证删除ls中的元素后,不影响元素遍历。
if is_prime(i) == True: #如果i是素数
ls.remove(i) #使用remove方法,从列表ls中删除i
print(len(ls)) #输出去除素数后,ls的元素个数len(ls)
字典交换
def reverse_dict(dic):
out = {}
for k,v in dic.items():
out[v] = k
keys = sorted(out.keys(),reverse = True)
for k in keys:
print(k,out[k])
return out
#请输入一个字典
dic = eval(input(""))
reverse_dict(dic)