赞
踩
这一次总体难度不大(除了最后一关),而且编程方式多种多样,欢迎大家在评论区分享自己的做法!
1.请在好友名单尾部添加一个好友'曾海洋'
2.请在好友名单开头添加一个好友'胡波'
3.请将首个王姓好友的名字修改为'王仁'
4.删除首个赵姓好友
第一关依旧是熟悉的热身环节,但是,值得注意的是在三四小问中,我们需要查找王姓好友。这时我们不能直接用nameList.indes('王'),因为“王”在列表中是不存在的,列表中的元素只有“王某”。所以,我们要将每个元素转化为字符串形式,再进行检索。
- #建立初始名单
- nameList=eval(input())
- ############begin###############
- #1.请在好友名单尾部添加一个好友'曾海洋'
-
- ############end#################
- nameList.append('曾海洋')
- ############begin############
- #2.请在好友名单开头添加一个好友'胡波'
-
- ##############end############
- nameList.insert(0,'胡波')
- #############begin###########
- #3.请将首个王姓好友的名字修改为'王仁'。
-
- #############end#############
- for i in nameList:
- a = str(i)
- if "王" in a:
- b=nameList.index(i)
- nameList[b]="王仁"
- break
- ############begin################
- #4.删除首个赵姓好友
-
- ###########end#################
- for i in nameList:
- a = str(i)
- if "赵" in a:
- b=nameList.index(i)
- nameList.pop(b)
- break
- print(nameList)
第二关,个人认为第二关较第一关更为简单,牢记命令即可。
- scores=eval(input())#录入多名学生的成绩
- #########begin############
- #1. 请找出最高分并输出
- ##########end############
- print(max(scores))
-
- ###########begin###########
- #2. 请找出最低分并输出
- ###########end############
- print(min(scores))
-
- ###########begin############
- #3. 请求出班级平均分并输出(保留4位小数)
- ###########end##############
- b=(sum(scores)/len(scores))
- print('%.4f'% b)
-
- ############begin###########
- #4.对分数进行升序排序并输出排序后的结果
- ############end############
- print(sorted(scores))
第三关,主要用到了列表的排序和切片。第一题可以像我一样直接降序排列,也可以先排列后倒序。第二三题用到切片,注意一下list[1,5]中第二位也就是1是能够取到的,而第六位取不到。
- #已录入的多名学生的成绩
- scores=eval(input())#录入多名学生的成绩
- ##########begin###########
- #1. 请对scores进行降序排序,并输出降序排列之后的结果
- ##########end#############
- scores.sort(reverse=True)
- print(scores)
-
- #########begin############
- #2.请找出前三名的成绩,并按降序输出
- ##########end############
- print(scores[:3])
-
- ###########begin###########
- #3. 请找出后三名的成绩,并按降序输出
- ###########end############
- print(scores[-3:])
-
- ###########begin############
- #4.请求出去掉一个最高分以及去掉一个最低分之后的成绩均值,并输出该均值(保留4位小数)
- ###########end##############
- scores.pop()
- scores.pop(0)
- a=sum(scores)/len(scores)
- print('%.4f'%a)
第2题:求出矩阵对角线元素(行号等于列号的元素)的和,并输出该和值
第3题:将矩阵上三角元素(列号大于等于行号的元素)全变为0值, 并输出该矩阵
第四关可以理解为我们所学的行列式。这里row指的是行,而temp指的是保存这行数据的临时文件。 第一题的思路是找到每一行的最大值,再将这些最大值进行比较。 第二题需要注意的是列表的序号是从0开始,所以在循环时一定要弄清楚自己所取的序号是第几行第几列。 第三题用到了一个循环嵌套,一个循环对应列,一个循环对应行。这里要注意一下,如果你直接打出list2D则会以列表形式呈现,所以在每一行结束时加上一个print(list2D[i])才能输出矩阵。
- row=eval(input())#矩阵行数
- list2D=[]#嵌套列表,用来存放一个矩阵数据
- for i in range(row):#得到每行数据列表
- temp=eval(input())
- list2D.append(temp)
-
- #第1题:请对矩阵list2D中的数据求最大值,并输出该最大值
- print(max(max(list2D[0]),max(list2D[1]),max(list2D[2])))
- print('##########')
- #第2题:求出矩阵对角线元素的和,并输出该和值
- s=0
- for i in range(1,row+1):
- s += list2D[i-1][i-1]
- print (s)
-
- print('##########')
- #第3题:将矩阵上三角元素全变为0值, 并输出该矩阵
- for i in range(0,row):
- for j in range(0,len(temp)):
- if j>=i:
- list2D[i][j]=0
- print(list2D[i])
-
-
-
- print('##########')
- #第4题:取出矩阵的最后两行,并输出这两行
- print(list2D[-2])
- print(list2D[-1])
-
- print('##########')
- #第5题:删除矩阵的最后一行,并输出删除最后一行之后的矩阵
- list2D.pop()
- for i in range(0,len(list2D)):
- print(list2D[i])
第一题:编程实现:在屏幕上输出杨辉三角形图形 例如 输入 6 输出结果为:
提示:每行数据就是一个单列表,多行数据构成列表的嵌套
第二题:约瑟夫问题 n个人按1,2,3,… ,n编号,并顺序围坐一圈。开始按照1,2,3,… ,m 报数,凡报到 m 的出列,直到所有人出列为止。 算法如下: 1)建立一个列表lb存放n个值 2)遍历该列表,从1开始计数,到第m个值将其从列表删除。然后从当前位置继续从1开始计数,数到第m个值将其从列表删除。 3)以此类推,直到列表中没有元素为止 编写程序,输入人数n和序号m,输出出圈的序号。
第五关,难度较高,这里我给大家提供两种方法:
第一种,每一行之间采用递归的方法,每写完一行,就输出一行,然后作为上一行服务于下一行。
- def printYanghui(num):
- list1=[1] #定义一个列表用来储存上一行
- print(1) #输出第一行1
- for i in range(2,num+1): #循环输出2~num行
- row=[1] #定义列表行
- # print(1,end=' ') #输出每行第一个1
- for j in range(0,i-2): #第i行应有i个元素,中间有i-2个元素
- row.append(list1[j]+list1[j+1]) #插入上一行的两两元素和
- row.append(1) #补上末尾的1
- print(row)
- list1=row
-
- printYanghui(int(input()))
第二种,将lis1变为n阶的列表,两次循环,每一行都保存在列表之中。
第二问的思路是,围成一圈也可以看作是排成一队,每次报完数就排到队伍末尾,报到m的整数倍就出列,一直到没人为止。
- #列表综合案例1:输出杨辉三角形(列表的嵌套)
- num = eval(input()) #num为杨辉三角的行数
-
- #########begin##############
- lis1=[]
- for n in range(1,num+1):
- row=[]
- if n ==1:
- row.append(1)
- else:
- m=1
- row.append(1)
- while m<n-1:
- row.append(lis1[n-2][m-1]+lis1[n-2][m])
- m+=1
- row.append(1)
- lis1.append(row)
- for i in range(0,num):
- print(lis1[i])
- #########ends##############
-
-
- #列表综合案例2:约瑟夫问题
- #n代表总人数,m代表出圈间隔序号数
- n,m=eval(input())
- result=[] #出圈列表
- #########begin##############
- lis=[]
- for i in range (1,n+1):
- lis.append(i)
- result=[]
- s=1
- while len(lis)!=0:
- if s%m!=0:
- b=lis.pop(0)
- lis.append(b)
- s+=1
- else:
- b=lis.pop(0)
- result.append(b)
- s+=1
-
-
- #########ends##############
- ####下面的代码不能修改######
- print("出圈列表:")
- print(result)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。