文章目录
1.jmu-python-杨辉三角 (10 分)
根据输入的n打印n行杨辉三角型。
函数接口定义:
printYanghui(n):#打印n行杨辉三角型
裁判测试程序样例:
/* 请在这里填写答案 */
n = int(input())
printYanghui(n)
输入格式:
输入n,转化为整数
输出格式:
每个数后面均有一个空格。
输入样例:
5
结尾无空行
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
def printYanghui(n): # 打印n行杨辉三角型
l = []
for i in range(n + 1):
l.append(list(0 for i in range(n + 1)))
l[1][1] = 1
for i in range(2, n + 1):
for j in range(1, n + 1):
l[i][j] = l[i - 1][j] + l[i - 1][j - 1]
for i in range(1, n + 1):
for s in range(n - i):
print(" ", end='')
for j in range(1, i + 1):
print(l[i][j], end=" ")
print()
2.python函数:对字符串数值类型判断 (10 分)
实现isNum()函数,参数为一个字符串,如果这个字符串属于整数(十进制)、浮点数或复数的表示,返回True,否则返回False。
函数接口定义:
函数接口:
isNum(x)
x是个字符串
裁判测试程序样例:
/* 请在这里填写答案 */
在这里给出函数被调用进行测试的例子。例如:
x=input()
print(isNum(x))
输入样例:
在这里给出一组输入。例如:
12.345
结尾无空行
输出样例:
在这里给出相应的输出。例如:
True
结尾无空行
输入样例:
在这里给出一组输入。例如:
abc*
结尾无空行
输出样例:
在这里给出相应的输出。例如:
False
def isNum(x):
try:
y = eval(x)
if (type(y) == int and x.isdigit()) or type(y) == float or type(y) == complex:
return True
else:
return False
except:
return False
3.6-3 使用函数求余弦函数的近似值 (20 分)
本题要求实现一个函数,用下列公式求cos(x)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加):
函数接口定义:funcos(eps,x ),其中用户传入的参数为eps和x;函数funcos应返回用给定公式计算出来,保留小数4位。
函数接口定义:
函数接口:
funcos(eps,x ),返回cos(x)的值。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
/* 请在这里填写答案 */
eps=float(input())
x=float(input())
value=funcos(eps,x )
print("cos({0}) = {1:.4f}".format(x,value))
输入样例:
0.0001 -3.1
输出样例:
cos(-3.1) = -0.9991
import math
def funcos(eps, x):
t = 0
i = 0
sum = 0
while True:
s = pow(-1, i) * x ** t / math.factorial(t)
if abs(s) < eps:
break
sum += s
t += 2
i += 1
return sum
4.求完全数的字典集 (30 分)
本题目要求读入2个正整数m和n,且m<n,求[m,n]之间所有的完全数,并形成字典。完全数:除了自己本身以外所有因子的和等于本身的数。例如6的因子为1,2,3,1+2+3=6,6即为完全数。
输入格式:
以空格分隔输入m,n两个数。
输出格式:
输出得到的字典。
输入样例1:
6 80
结尾无空行
输出样例1:
{6: [1, 2, 3], 28: [1, 2, 4, 7, 14]}
结尾无空行
输入样例2:
-8 -5
结尾无空行
输出样例2:
wrong input
m, n = map(int, input().split())
if m <= 0 or n <= 0 or m >= n:
print("wrong input")
else:
d = {}
for x in range(m, n + 1):
s = [i for i in range(1, x) if x % i == 0]
if x == sum(s):
d[x] = s
print(d)
5.阶乘应用 (70 分)
输入大于1的正整数m,计算1×2×3×4×5…×n的积小于m时最大的n。
输入格式:
输入大于1的正整数m
输出格式:
输出n的值
输入样例:
20000
结尾无空行
输出样例:
n= 7
结尾无空行
m = eval(input())
while True:
s = 1
for i in range(2, m + 1):
s *= i
if s < m:
n = i
else:
break
if s >= m:
break
print("n= {}".format(n))
6.数字螺旋方阵 (10 分)
已知n=5、6时的螺旋方阵如输出样例所示,请观察并得到其规律。输入一个正整数n,要求输出n×n个数字构成的螺旋方阵。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个正整数n(n≤20)。
输出格式:
对于每组测试,输出n×n的数字螺旋方阵。各行中的每个数据按4位字符宽度输出。
输入样例:
2
5
6
输出样例:
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
36 35 34 33 32 31
17 16 15 14 13 30
18 5 4 3 12 29
19 6 1 2 11 28
20 7 8 9 10 27
21 22 23 24 25 26
def dfs(arr, x, y, num, n):
if n <= 0: return 0
if n == 1:
arr[x][y] = num
for i in range(n):
arr[x][y + i] = num
num -= 1
for i in range(n - 1):
arr[x + 1 + i][y + n - 1] = num
num -= 1
for i in range(n - 1):
arr[x + n - 1][y + n - 2 - i] = num
num -= 1
for i in range(n - 2):
arr[x + n - 2 - i][y] = num
num -= 1
dfs(arr, x + 1, y + 1, num, n - 2)
t = eval(input())
for i in range(t):
n = eval(input())
ls = [[0] * n for i in range(n)]
dfs(ls, 0, 0, n * n, n)
for x in ls:
print("%4d" * n % tuple(x))
7.期末答疑安排 (70 分)
期末安排教师线上答疑,因作息不同,各教师的答疑时间不同,形成如下表格,编写程序当输入星期、小时和分钟,输出对应的答疑教师,如若时间不对,输出“时间错误“,若当时没安排教师则输出“此时无教师答疑”
输入格式:
第一行输入星期 第二行输入小时 第三行输入分钟
输出格式:
输出对应教师或“此时无教师答疑”或“时间错误“
输入样例1:
一
12
34
输出样例1:
此时无教师答疑
输入样例2:
二
20
34
输出样例2:
B
输入样例3:
一
23
89
输出样例3:
时间错误
dic1 = {"一": "A", "二": "B", "三": "C", "四": "D", "五": "E"}
dic2 = {'一': 9, '二': 20, '三': 13, '四': 20, '五': 13}
day = input()
h = int(input())
m = int(input())
if day not in dic2 or h > 24 or h < 0 or m >= 60 or m < 0 or (h == 24 and m > 0):
print("时间错误")
else:
if dic2[day] == h:
print(dic1[day])
elif dic2[day] == h + 1 and m <= 30:
print(dic1[day])
else:
print("此时无教师答疑")
8.学生成绩分析 (10 分)
输入考试的成绩(可以有小数),求出各分数与平均分的差值绝对值(保留一位小数),输出按差值绝对值从小到大排列的(分数,差值绝对值)列表。
输入格式:
第一行输入同学们的考试成绩,以空格隔开。
输出格式:
输出排好序的(分数,差值绝对值)列表。
输入样例:
66 78 95 63 85 94 99
输出样例:
[(85, 2.1), (78, 4.9), (94, 11.1), (95, 12.1), (99, 16.1), (66, 16.9), (63, 19.9)]
grades = list(map(str, input().split()))
g = []
for x in grades:
g.append(eval(x))
aveage = sum(g) / len(g)
lis = []
for i in range(len(g)):
lis.append((g[i], round(abs(aveage - g[i]), 1)))
print(sorted(lis, key=lambda x: x[1]))
9. 空心菱形 (10 分)
请编写程序,输入菱形的高,输出由星号勾勒出的菱形。
输入格式
行数(正整数)
输出格式
若行数为奇数,则显示星号勾勒出的菱形,否则显示错误信息。
输入样例1
5
输出样例1
*
* *
* *
* *
*
输入样例2
8
输出样例2
Error
n = eval(input())
if n % 2 != 0:
for i in range(n):
if i == 0 or i == n - 1:
for j in range(n // 2):
print(" ", end="")
print("*", end="")
elif i <= n // 2:
for j in range(n // 2 - i):
print(" ", end="")
print("*", end="")
for j in range(n - (n // 2 - i) * 2 - 2):
print(" ", end="")
print("*", end="")
else:
for j in range(n // 2 - (n - 1 - i)):
print(" ", end="")
print("*", end="")
for j in range(n - (n // 2 - (n - 1 - i)) * 2 - 2):
print(" ", end="")
print("*", end="")
print()
else:
print("Error")
9.搬砖 (10 分)
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖(注意小孩的人数只能是偶数),问有多少种搬法?(注意当某类人数为0时,也是合理的方案)
输入格式:
输入在一行中给出一个正整数n。
输出格式:
直接输出方案的数目。
输入样例1:
45
输出样例1:
4
输入样例2:
4
输出样例2:
0
n = eval(input())
if n < 8 and (n != 3 or n != 5):
print("0")
else:
sum = 0
for i in range(n // 5 + 1):
if (n - 5 * i) % 3 == 0:
sum += 1
print(sum)
10.买玩具 (10 分)
某小学要购置文具。批发市场中A牌的铅笔卖5元一支,C牌的铅笔卖2元一支,D牌的简易铅笔卖1元2只(捆绑销售,只能买偶数只)。如果想用n元买n支笔,问有多少种买法?(注意当某牌的铅笔为0支时,也是合理的方案)
输入格式:
在一行中输入一个正整数n。
输出格式:
直接输出方案的数目。
输入样例1:
450
输出样例1:
51
输入样例2:
5
输出样例2:
0
n = eval(input())
if n % 3 != 0:
print("0")
else:
sum = 0
for i in range(n // 9 + 1):
if (n - 9 * i) % 3 == 0:
sum += 1
print(sum)