目录
7-2 武林盟主 (10 分)
在传说中的江湖中,各大帮派要选武林盟主了,如果龙飞能得到超过一半的帮派的支持就可以当选,而每个帮派的结果又是由该帮派帮众投票产生的,如果某个帮派超过一半的帮众支持龙飞,则他将赢得该帮派的支持。现在给出每个帮派的帮众人数,请问龙飞至少需要赢得多少人的支持才可能当选武林盟主?
输入格式:
测试数据有多组,处理到文件尾。每组测试先输入一个整数n(1≤n≤20),表示帮派数,然后输入n个正整数,表示每个帮派的帮众人数ai(0<ai≤100)。
输出格式:
对于每组数据输出一行,表示龙飞当选武林盟主至少需要赢得支持的帮众人数。
输入样例:
3 5 7 5
4 6 6 7 5
输出样例:
6
11
import math
while True:
try:
xlist=list(map(int,input().split()))
n=xlist[0]
xlist.remove(xlist[0])
minsum =0
nums =int(n/2)+1
for i in range(0,nums):
mins=min(xlist)
if mins%2==0:
minsum +=mins/2+1
else:
minsum +=math.ceil(mins/2)
xlist.remove(mins)
print("%d"%minsum)
except:
break
7-3 数组循环移位 (10 分)
输入两个整数n和m,再输入n个整数构成一个数列,把前m个数循环移位到数列的右边。
输入格式:
测试数据有多组,处理到文件尾。每组测试数据第一行输入2个正整数n、m(1<=m,n<100),第二行输入n个整数。
输出格式:
对于每组测试数据, 在一行上输出把前m个数循环移位到数列的右边后的数列,每两个数据之间留一个空格。
输入样例:
5 3
1 2 3 4 5
输出样例:
4 5 1 2 3
import math
while True:
try:
n,m=input().split()
n=int(n)
m=int(m)
xlist=list(map(int,input().split()))
clist=xlist[m:]+xlist[0:m]
print(*clist)
except:
break
7-4 又一个往返跑方阵 (10 分)
所谓“往返跑方阵”,是指对任意给定的n,将1到n×n的整数依次填写到n×n的方阵中,从右下角第1个格子开始,向上填充;到最上面一行后,再向左一列,改变方向,向下填充;倒底后,往左移动一列,改变方向,向上填充;.…… 以此类推,直到将n×n的方阵填满。本题要求构造这样的“往返跑方阵”。
输入格式:
输入一个正整数n(1⩽n⩽10 )
输出格式:
输出n×n的往返跑方阵。每行n个数字,每个数字占3位,右对齐。
输入样例1:
在这里给出一组输入。例如:
3
输出样例1:
在这里给出相应的输出。例如:
9 4 3
8 5 2
7 6 1
输入样例2:
在这里给出一组输入。例如:
5
输出样例2:
在这里给出相应的输出。例如:
25 16 15 6 5
24 17 14 7 4
23 18 13 8 3
22 19 12 9 2
21 20 11 10 1
n = int(input())
i = j = n-1
list1 = [[] for i in range(n)]
num = 1
while True:
while i >= 0:
list1[i].insert(0, num)
num += 1
i -= 1
i = 0
j -= 1
if j < 0:
break
while i < n:
list1[i].insert(0, num)
num += 1
i += 1
i = n - 1
j -= 1
if j < 0:
break
for i in range(n):
for j in range(n):
if j == n-1:
# print('{:>2d}')
print("%3d" % list1[i][j])
else:
print("%3d" % list1[i][j], end='')
7-8 输出成绩信息 (10 分)
输入学生的学号、姓名、性别、三门课程成绩,以“#”结束,其中学号、姓名和性别为字符串,成绩可以是整数或浮点数。
按学号顺序输出学生的学号、姓名、性别和平均成绩,以空格隔开。
并依次列出每门课程的平均成绩、最高成绩、最低成绩、不及格人数。
若只输入“#”,则输出“没有学生信息!”
提示:其中平均成绩保留两位小数,如成绩为x,则以int(x*100)/100的形式输出
输入格式:
每一行输入一个学生的学号、姓名、性别和三门课程成绩,最后一行输入“#”
输出格式:
按学号顺序输出学生的学号、姓名、性别和平均成绩,以空格隔开。一行表示一个学生
然后输出一个空行
输出每门课程的平均成绩、最高成绩、最低成绩、不及格人数。一行表示一门课程
输入样例:
在这里给出一组输入。例如:
abc10 ccc 男 100 50 90
aaca01 aaa 女 90 90 90
bcd1002 bbb 男 80 86 89
1004 ddd 女 59 45 98
#
输出样例:
在这里给出相应的输出。例如:
1004 ddd 女 67.33
aaca01 aaa 女 90.0
abc10 ccc 男 80.0
bcd1002 bbb 男 85.0
82.25 100 59 1
67.75 90 45 2
91.75 98 89 0
xuhao=[]
name=[]
sex=[]
score1=[]
score2=[]
score3=[]
allscore=[]
num,fail1,fail2,fail3=0,0,0,0
a=input().split()
if a[0]=='#':
print('没有学生信息!',end='')
try:
while(a[0]!='#'):
if float(a[3])<60:
fail1+=1
if float(a[4])<60:
fail2+=1
if float(a[5])<60:
fail3+=1
xuhao.append(a[0])
name.append(a[1])
sex.append(a[2])
score1.append(float(a[3]))
score2.append(float(a[4]))
score3.append(float(a[5]))
allscore.append(int((float(a[3])+float(a[4])+float(a[5]))/3*100)/100)
a=input().split()
num+=1
lis=[[] for i in range(num)]
for i in range(num):
lis[i].append(xuhao[i])
lis[i].append(name[i])
lis[i].append(sex[i])
lis[i].append(allscore[i])
lis.sort(key=lambda item:item[0])
for i in range(num):
for j in range(4):
print(lis[i][j],end='')
if j<3:
print(end=' ')
print()
print()
if int(max(score1))==max(score1):
print('{} {} {} {}'.format(int(sum(score1)/num*100)/100,int(max(score1)),int(min(score1)),fail1))
else:
print('{} {} {} {}'.format(int(sum(score1)/num*100)/100,max(score1),min(score1),fail1))
if int(max(score2))==max(score2):
print('{} {} {} {}'.format(int(sum(score2)/num*100)/100,int(max(score2)),int(min(score2)),fail2))
else:
print('{} {} {} {}'.format(int(sum(score2)/num*100)/100,max(score2),min(score2),fail2))
if int(max(score3))==max(score3):
print('{} {} {} {}'.format(int(sum(score3)/num*100)/100,int(max(score3)),int(min(score3)),fail3),end='')
else:
print('{} {} {} {}'.format(int(sum(score3)/num*100)/100,max(score3),min(score3),fail3),end='')
except:
pass