python期末--实践大题怎么写代码(直接拿题库教学!)
前言
本文是实践大题,想去学习理论:带你手把手复习python期末-CSDN博客
或者想要更详细的python教程可以去看此专栏编程语言教学_其实防守也摸鱼的博客-CSDN博客
从零带你学python,还有多种方式让你学会用AI写代码

本文配套代码压缩包和总结文档,可自行下载(题目更多更完整)

程序填空题(共9题)
填空题要把【xxx】这个中括号删掉
题目2
从键盘输入一个非负的整数n,求0到n各项阶乘之和0!+1!+2!+...+(n-1)!+n!,并输出。
【输入描述】一个正整数。
【输出描述】计算结果,数值为整数。
【输入样例】3
【输出样例】10
题目大意:输入n,计算 1! + 2! + ... + n! 的值。
n=int(input())
sum=0
for i in range(1,n+1):
【 ans = 1 】 # 第1空:每次计算新阶乘前,ans要重置为1
for j in range(1,i+1):
ans *= j
sum = 【 sum + ans 】 # 第2空:将当前i的阶乘累加到总和里
if n==0:
print(1)
else:
【 print(sum) 】 # 第3空:输出最终的累加结果

为什么:
- ans = 1:内层循环计算阶乘,每次进入新的i时必须重新从1开始乘。
- sum + ans:把当前算出的 ans(即i!)加到总和sum中。
- print(sum):n不为0时,输出1到n的阶乘之和。
题目5
一个包含n位(n≥3)数字的正整数k,若k的各位数字的n次幂之和等于k,则k称为水仙花数。输入一个正整数n,输出所有n位的水仙花数。
【输入描述】一个正整数n,n≥3。
【输出描述】所有n位的水仙花数。
【输入样例】3
【输出样例】
153
370
371
407
题目大意:输入n,找出所有n位水仙花数(各位数字的n次方之和等于该数本身)。
n=int(input())
for i in range( 【 10**(n-1), 10**n 】): # 第1空:n位数的范围
sum=0
k=i
for j in range(n):
y=k%10
sum=sum+y**n
【 k = k // 10 】 # 第2空:去掉k的最后一位
if 【 sum == i 】: # 第3空:判断是否为水仙花数
print(i)

为什么:
range(10**(n-1), 10**n):n位数最小是10^(n-1),最大是10^n - 1。k = k // 10:整数除法10,去掉已处理的个位。sum == i:水仙花数的定义就是"各位n次方和等于原数"。
题目8
输入两个正整数,输出这两个整数之间(含)的偶数。
【输入描述】2个正整数。
【输出描述】输出这2个整数之间(含)的各个偶数(中间以空格隔开)。
【输入样例】
43 51
【输出样例】
44 46 48 50
题目大意:输入两个整数a、b,输出a到b之间(含)的所有偶数。
a,b=[【 int(i) 】 for i in input().split()] # 第1空:将输入转为整数
i = 【 a 】 # 第2空:从a开始循环
while i <= b:
if 【 i % 2 == 0 】: # 第3空:判断偶数
print(i, end=" ")
i=i+1

为什么:
int(i):input().split()得到的是字符串,必须转int才能比较大小。i = a:while循环从区间左端点a开始。i % 2 == 0:模2余0即为偶数。
题目9
输入一段英文文章,其中只包含英文字母和空格。按照出现次序,逐一输出文章中的单词,出现多次的单词只输出一次。单词不区分大小写,并一律按小写形式输出。
【输入描述】1行,表示一段英文文章,其中只包含英文字母、空格。
【输出描述】1行,包含若干单词,单词之间用一个空格分隔。
【输入样例】
like Baby baby baby ohhh Baby baby Like nooo
【输出样例】
like baby ohhh nooo
题目大意:输入一行单词,只输出首次出现且以元音字母开头的单词(不区分大小写)。
words = input().split()
lst = 【 [] 】
i = 0
while i < len(words):
tmp = words[i].lower()
if 【 tmp not in lst: 】
lst.append(tmp)
print(tmp, end=' ')
【 i += 1 】

为什么:
[]:lst用来记录已经输出过的单词,实现去重。tmp not in lst:只有当当前单词tmp还没被输出过时,才输出并加入列表。i += 1:while循环必须手动改变循环变量,否则i永远不变,程序死循环。
题目11
从键盘任意输入字符串m,对m加密,加密后为n。加密方法:对于数字加1,如是3则处理为4,如是9处理为0,其他非数字字符保持不变。
【输入描述】包含1行,一个任意字符串,表示原密码。
【输出描述】包含1行,处理后的字符串,表示加密后的密码。
【输入样例】ab7890
【输出样例】ab8901
题目大意:输入一个字符串,将其中的每个数字加1(9变0),非数字字符保持不变。
m=input()
n=''
for s in m: # 第1空:遍历字符串中的每个字符
if s.isdigit():
x=int(s)
if x==9:
y=0
else:
y=1 + x # 第2空:数字加1
n = n + str(y) # 第3空:将加密后的数字拼接到结果中
else:
n=n+s
print(n)

为什么:
s in m:对字符串m逐个字符处理。x:1 + x即原数字加1,因为x不等于9时才走这分支。n + str(y):y是整数,必须转字符串才能拼接。
题目12
老师发布了在线课堂练习,并规定:最先完成提交的5位同学,可以获得奖励。现有一组按提交时间顺序排列的学生编号(编号可能有重复),要求统计出5位能获奖的学生编号。若不足5位,则按实际数量输出。
【输入描述】一行,包含一组以空格为间隔的正整数,表示学生编号。
【输出描述】一行,按原顺序输出5个无重复的编号,以空格隔开。不足5个则按实际数量输出。
【输入样例】10 14 10 23 9 23 10 30 27 13
【输出样例】10 14 23 9 30 Good job!
题目大意:输入一串整数,按出现顺序输出前5个不重复的数。
n=0
ls=[]
nums = [int(x) for x in input().split()]
for num in nums: # 第1空:遍历输入的数字列表
if num not in ls:
print(num, end=' ')
ls.append(num) # 第2空:将该数加入已输出集合,防止重复
n += 1
if n==5:
break # 第3空:已经输出5个,结束循环
print('Good job!')

为什么:
for num in nums::遍历每个输入的数字。ls.append(num):用ls记录已经输出过的数字,实现去重判断(num not in ls)。break:n等于5时,已经满足"输出前5个"的要求,直接跳出循环。
题目15
现在需要计算实验课小组的得分,计算规则为:去掉1个最高分和1个最低分后,求出平均分(保留2位小数)作为小组得分,并按格式要求输出。
【输入描述】一行,小组每个成员的成绩,用空格分隔(每个小组成员多于2个)。
【输出描述】小组得分。
【输入样例】97 98 99
【输出样例】98.00
题目大意:输入一组数,去掉一个最大值和一个最小值后,求剩余数的平均值(保留2位小数)。
ls=[float(i) for i in input().split()]
mx=max(ls)
ls.remove(mx) # 第1空:去掉最大值
mn=min(ls)
ls.remove(mn)
s=0 # 第2空:初始化求和变量
for i in ls:
s+=i
aver = s / len(ls) # 第3空:计算平均值
print ("{:.2f}".format(aver))

为什么:
ls.remove(mx):题目要求去掉一个最大值,直接remove即可。s=0:求和前必须初始化,否则s未定义。s / len(ls):总和除以剩余元素的个数即为平均值。
题目16
输入4个成绩,按照优秀、良好、合格、不合格进行评级,240分(含)以上为优秀,220分(含)以上为良好,180分(含)以上为合格,180分以下为不合格。
【输入描述】包含1行,4个整数,表示4个成绩。
【输出描述】包含1行,1个字符串,分别成绩等级(优秀、良好、合格、不合格)。
【输入样例】255 232 195 176
【输出样例】优秀 良好 合格 不合格
题目大意:输入一组成绩,按分数输出等级:
- ≥240:优秀
- ≥220(或210):良好
- ≥180:中等(或及格)
- <180:不合格
a=[int(x) for x in input().split()] # 第1空:将输入转为整数
for i in range(len(a)):
if a[i] >= 240:
print("优秀",end=" ")
elif a[i] >= 220: # 第2空:良好的分数下限
print("良好",end=" ")
elif a[i] >= 180:
print("中等",end=" ") # 第3空:输出"中等"或"及格"
else:
print("不合格",end=" ")

注意:第2空如果老师上课给的标准是210,就填
a[i] >= 210。常见的四档划分是 240/220/180 或 240/210/180,建议以课堂讲义为准。
题目18
输入一个班全部同学的身高,输出其中超过平均身高的那些同学的身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。
【输入描述】一行,包含若干个正整数,表示全班同学的身高。
【输出描述】输出一个整数,表示超过平均身高的学生人数。
【输入样例】
143 174 119 127 117 164 110 128
【输出样例】
3
题目大意:输入一行数字,统计其中大于平均值的元素个数。
a = input() # 第1空:读取输入字符串
a = [int(x) for x in a.split()] # 第2空:按空格分割并转为整数列表
n=len(a)
aver = sum(a)/n
k = 0 # 第3空:计数器初始化为0
for i in range(n):
if a[i]>aver:
k+=1
print(k)

为什么:
input():先读入一行字符串。[int(x) for x in a.split()]:按空格切分,每个元素转为int,生成列表。0:k用来计数,必须从0开始。
函数设计题(共16题)
题目1:合法学号验证
本题要求实现一个check(s)函数,判断字符串s是否为合法的学号,合法返回True,不合法返回False。符合下面规则的字符串即为合法学号,否则不合法。
1. 以字母H开始,学号长度为9
2. 除首字符H以外的8位均为数字
为了验证函数定义的正确性,测试程序代码如下,功能是判定用户输入的字符串是否合法。
【输入描述】一行包含一个字符串。
【输出描述】1行,Yes或No,表示字符串是否为合法学号
【输入样例1】H1234567890
【输出样例1】No


其实不要下面的else也是可以成功运行的,就像这样

####考生在以下空白处定义函数
def check(s):
if s[0]=='H' and len(s)==9 and s[1:].isdigit():
return True
####考生在以上空白处定义函数
if check(input()):print('Yes',end='')
else:print('No',end='')
# # len(s) == 9 -> 长度是9
# # s[0] == 'H' -> 首字符是H
# # s[1:].isdigit() -> 从第2位到末尾全是数字
# # and 连接三个条件,必须同时满足才返回 True
题目2:员工小礼品发放
请在该程序文件中,定义一个函数 f(n) 函数,n 为员工人数。函数返回列表,列表中从小到大列出应发放小礼品的序号。
公司准备给员工们发放小礼品,每位员工有一个序号(序号从 1 开始),序号为 11 的倍数及序号中含 9 的员工可得到一份小礼品。本程序的功能是根据输入的员工人数,计算公司需要准备多少份小礼品,并列出应发放礼物的序号。
【输入描述】一个正整数,表示员工人数。
【输出描述】第一行:一个整数,表示要准备的小礼品份数。第二行:应发放礼物的序号(空格隔开)。
【输入样例】100
【输出样例】礼物份数:27
应发放礼物的序号:9 11 19 22 29 33 39 44 49 55 59 66 69 77 79 88 89 90 91 92 93 94 95 96 97 98 99



####考生在以下空白处定义函数
def f(n):
l=[]
for i in range(1,a+1):
if i%11==0 or '9'in str(i):
l.append(i)
return l
####考生在以上空白处定义函数
a=int(input())
gifts=f(a)
print("礼物份数:",len(gifts))
print("应发放礼物的序号:",end=' ')
for i in gifts:
print(i,end=' ')
题目3:五个整数阶乘之和
本程序的功能是输入五个整数,求这五个整数的阶乘之和。请在该程序文件中,定义一个函数 f(n),n 是一个整数,返回 n 的阶乘。
【输入描述】五个正整数,数之间以空格隔开。
【输出描述】一个整数,表示阶乘之和。
【输入样例】1 2 4 6 7
【输出样例】5787



####考生在以下空白处定义函数
def f(n):
result=1
for i in range(1,n+1):
result *=i
return result
####考生在以上空白处定义函数
a=[int(i) for i in input().split()]
sum=0
for x in a:
sum+=f(x)
print(sum)
题目6:N的倍数判断
本程序的功能是输入三个正整数N、a和b(a<b),输出a和b之间(含a和b)是N的倍数的数。
【输入描述】正整数N、a和b。
【输入样例】3 1 10
【输出样例】3 6 9
请在该程序文件中,定义一个函数f1(x, y),返回逻辑值,如x是y的倍数则返回True,否则返回False。



####考生在以下空白处定义函数
def f1(x,y):
if x%y==0:
return True
####考生在以上空白处定义函数
N,a,b=[int(i) for i in input().split()]
for i in range(a,b+1):
if f1(i,N):
print(i,end=" ")
题目7:真约数之和
整数k的真约数是指小于k且能整除k的正整数。例如,6的真约数有1、2、3;20的真约数有1、2、4、5、10。
本程序的功能是输入一个正整数n,输出n的真约数之和。
【输入描述】一行,包含一个正整数n(不超过100000)。
【输出描述】一个整数,为n的全部真约数之和。
【输入样例】20
【输出样例】22
请在该程序文件中,定义一个函数fsum(k),计算并返回整数k的全部真约数之和。



####考生在以下空白处定义函数
def fsum(k):
s=[]
for i in range(1,k):
if k%i==0:
s.append(i)
return sum(s)
####考生在以上空白处定义函数
n=int(input())
print(fsum(n))
题目8:优秀率计算
本程序的功能是输入10个成绩,计算并输出优秀率。120分及以上的成绩为优秀。
输入描述:十个整数,表示成绩(之间用空格分隔)。
输出描述:一个百分数,表示优秀率。
输入样例:100 110 120 125 130 135 140 145 150 155
输出样例:80%
请在该程序文件中,定义一个函数 good(n),n是1个整数,表示成绩。函数返回逻辑型的值,成绩优秀返回True,不优秀返回False。



####考生在以下空白处定义函数
def good(n):
if n>=120:
return True
else:
return False
####考生在以上空白处定义函数
grades=[int(i) for i in input().split()]
s=0
for x in grades:
if good(x):
s+=1
print('%d%%' %(s*100/len(grades)))
题目11:素数个数统计
素数是指在大于1的自然数中,除了1和它本身之外,不能被其它自然数整除的数。本程序的功能是输入大于1的正整数m和n,统计m和n之间(包括m、n且m<=n)素数的个数。
【输入描述】二个正整数m和n,数之间用空格分隔。
【输出描述】素数的个数。
【输入样例】5 7
【输出样例】2
请在该程序文件中,定义一个函数 isprime(n),判断整数n是否为素数,是素数返回逻辑值 True,不是则返回逻辑值 False。



####考生在以下空白处定义函数
def isprime(n):
for i in range(2,n):
if n%i==0:
return False
else:
return True
####考生在以上空白处定义函数
m,n=input().split()
m,n=int(m),int(n)
count_p=0
for i in range(m,n+1):
if isprime(i):
count_p+=1
print(count_p)
题目12:幸运号码判断
一个号码的"幸运程度"定义为幸运数字的个数与号码位数的比值,如果号码以幸运数字结尾,则"幸运程度"再加0.2倍。若"幸运程度"达到60%,就认为是幸运号码。例如,幸运数字为7,号码35674777的"幸运程度"计算为4/8*1.2=0.6,所以是幸运号码。本程序的功能:输入一个号码字符串和幸运数字,判定该号码是否为幸运号码。
【输入描述】输入一个号码(字符串)和一个幸运数字,以空格隔开。
【输出描述】若是幸运号码,输出Lucky!,否则输出So so。
【输入样例】35674777 7
【输出样例】Lucky!
请在该程序文件中,定义一个函数 isLucky(s, digit),根据幸运数字 digit,判断号码字符串 s 是否为幸运号码。
是幸运号码返回 True,否则返回 False。



####考生在以下空白处定义函数
def isLucky(s, digit):
num=s.count(digit)/len(s)
if s[-1]==digit:
num*=1.2
if num>=0.6:
return True
else:
return False
####考生在以上空白处定义函数
s, digit = input().split()
if isLucky(s, digit):
print('Lucky!')
else:
print('So so.')
题目13:区间求和
本程序的功能是根据输入的正整数a和b,输出a和b之间(包括a和b)中的各数之和。
# 【输入描述】
正整数a和b。
# 【输出描述】
输出a和b之间(含)的各数之和。
# 【输入样例】
1 10
# 【输出样例】
55
请在该程序文件中,定义一个函数f1(x, y),返回x到y(包括x和y)中的各数之和。



####考生在以下空白处定义函数
def f1(x,y):
return sum(range(a,b+1))
####考生在以上空白处定义函数
a,b=[int(i) for i in input().split()]
print(f1(a,b))
题目16:四叶玫瑰数判断
本程序的功能是输入一个四位整数,判断它是否为四叶玫瑰数。四叶玫瑰数是指四位数各位上的数字的四次方之和等于本身的数。
【输入描述】一个四位整数。
【输出描述】一个逻辑值True或False,True表示是四叶玫瑰数,False表示不是四叶玫瑰数。
【输入样例】1634
【输出样例】True
请在该程序文件中,定义一个函数f2(x),判断整数x是否为四叶玫瑰数,若是返回逻辑值True,不是则返回逻辑值False。



####考生在以下空白处定义函数
def f2(x):
s=str(x)
l=[int(i)**4 for i in s]
if sum(l)==x:
return True
else:
return False
####考生在以上空白处定义函数
i=int(input())
print(f2(i))
Python程序设计题练习汇总(共12题)
第4题:学生考勤
题目描述:两行名单,第一行为小组学生名单,第二行为实际到课学生名单;对比后,输出一行未到课的学生名单。

# 获取小组学生名单并分割为列表
all_students = input("请输入小组学生名单:").split()
# 获取到课学生名单并分割为列表
present_students = input("请输入到课学生名单:").split()
# 利用集合差集找出未到课学生
absent_students = set(all_students) - set(present_students)
# 输出结果
print("未到课的学生名单:", " ".join(absent_students))
代码解释: - split() 将输入字符串按空格分割为列表 - set() 将列表转换为集合,便于集合运算 - - 求两个集合的差集(属于全体但不属于到课的) - join() 将集合元素连接为字符串输出
第7题:闰年统计
题目描述:输入m、n二个年份,统计m和n之间出现闰年的次数并输出。

# 定义闰年判断函数
def is_leap_year(year):
# 闰年规则:能被4整除但不能被100整除,或能被400整除
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
return False
# 获取年份范围
m = int(input("请输入起始年份m:"))
n = int(input("请输入结束年份n:"))
# 确保m <= n
if m > n:
m, n = n, m
# 统计闰年数量
leap_count = 0
for year in range(m, n + 1):
if is_leap_year(year):
leap_count += 1
print(f"{m}年到{n}年之间共有{leap_count}个闰年")
代码解释: - 定义函数封装闰年判断逻辑 - 交换变量确保范围正确 - range(m, n + 1) 包含起止年份
第9题:库存检查
题目描述:如有货物的库存大于等于最高库存,则输出货物名称及提示”库存高了”,所有正常则输出”检查正常”。

# 获取货物种类数量
goods_count = int(input("请输入货物种类数量:"))
# 初始化标志
has_high_stock = False
# 循环处理每种货物
for i in range(1, goods_count + 1):
name = input(f"请输入第{i}种货物名称:")
current = int(input(f"请输入{name}的当前库存:"))
max_stock = int(input(f"请输入{name}的最高库存:"))
if current >= max_stock:
print(f"{name} 库存高了")
has_high_stock = True
# 检查是否全部正常
if not has_high_stock:
print("检查正常")
代码解释: - 使用标志变量记录是否有异常情况 - not has_high_stock 判断是否全部正常
第10题:行李费计算
题目描述:乘坐飞机时,编程计算行李费。

# 获取输入
cabin = input("请输入舱位类型:")
weight = float(input("请输入行李重量(公斤):"))
price = float(input("请输入机票价格:"))
# 根据舱位确定免费行李额
if cabin == "头等舱":
free_weight = 30
elif cabin == "商务舱":
free_weight = 20
elif cabin == "经济舱":
free_weight = 10
else:
print("输入的舱位类型不正确")
exit()
# 计算超重部分和费用
over_weight = max(0, weight - free_weight)
luggage_fee = over_weight * price * 0.015
print(f"行李费为:{luggage_fee:.2f}元")
代码解释: - max(0, ...) 确保超重部分不为负数 - 超重行李费 = 超重重量 × 票价 × 1.5%
第13题:购物金额计算
题目描述:输入会员级别、商品名、商品数量,输出购物金额。

# 定义折扣和价格
discount_dict = {'普通会员': 0.95, '银卡会员': 0.9, '金卡会员': 0.8}
price_dict = {'商品A': 100, '商品B': 200, '商品C': 150, '商品D': 50}
# 获取输入
member_level = input("请输入会员级别:")
product_name = input("请输入商品名:")
quantity = int(input("请输入商品数量:"))
# 验证输入有效性
if member_level not in discount_dict or product_name not in price_dict:
print("输入信息有误")
exit()
# 计算金额
total = price_dict[product_name] * quantity * discount_dict[member_level]
print(f"购物金额为:{total:.2f}元")
代码解释: - 使用字典存储会员折扣和商品价格 - 先验证输入有效性再计算
第15题:血压统计
题目描述:现给出某单位多名职工测量的血压值,输出血压正常的人数。

# 获取职工数量
employee_count = int(input("请输入职工数量:"))
# 计数器
normal_count = 0
# 循环统计
for i in range(1, employee_count + 1):
systolic = int(input(f"请输入第{i}位职工的收缩压:"))
diastolic = int(input(f"请输入第{i}位职工的舒张压:"))
# 正常范围:收缩压90-140,舒张压60-90
if 90 <= systolic <= 140 and 60 <= diastolic <= 90:
normal_count += 1
print(f"血压正常的人数为:{normal_count}")
代码解释: - 使用逻辑与判断两个条件同时满足 - 计数器累加符合条件的人数
第16题:体操打分
题目描述:体操比赛中,评委会给参赛选手打分。

# 获取评委数量
judge_count = int(input("请输入评委数量:"))
# 获取分数列表
scores = []
for i in range(1, judge_count + 1):
score = float(input(f"请输入第{i}位评委的分数:"))
scores.append(score)
# 排序并去掉最高分最低分
scores_sorted = sorted(scores)
scores_filtered = scores_sorted[1:-1]
# 计算平均分
average = sum(scores_filtered) / len(scores_filtered)
print(f"选手最终得分:{average:.2f}")
代码解释: - sorted() 对分数列表排序 - 切片 [1:-1] 去掉第一个(最低分)和最后一个(最高分) - 计算剩余分数的平均值
期末顺利~
更多推荐
所有评论(0)