华中农业大学python实验题
知识汇总
博客 | 地址 | 内容 |
---|---|---|
华中农业大学Python期末速成笔记 | https://blog.csdn.net/m0_46521785/category_10626330.html | 华中农业大学python期末常见考点和两套python期末考试真题 |
华中农业大学python实验题 | https://blog.csdn.net/m0_46521785/article/details/109253364 | 部分python常见实验题,可以学习时参考或者期末复习用 |
Python基础知识专栏 | https://blog.csdn.net/m0_46521785/category_10626330.html | Python基础知识详细版本(分章节) |
华中农业大学教务系统自动评教脚本 | https://blog.csdn.net/m0_46521785/category_10626330.html | 浏览器自动评教,解放双手 |
如有问题请私信或评论,我会及时回复,不收取任何费用。所有博客没有任何盈利手段,我只是希望能给刚入门的同学提供一下帮助,也希望大家能够帮忙宣传一下,这样可以帮助到更多有需要的同学。
前言
编程分为三步:
- 构思。编程考察的其实是思维逻辑能力和抽象能力,我们遇到一个问题应该先思考如何一步步去解决,有思路后再去写代码实现。类似于我们高中做数学题,先思考,再落笔。
- 代码实现。这一步需要大家有一定的编程知识的基础积累,比如字符串常用的函数、不同类型如何转换、列表、字典、集合等复杂数据类型的使用。这时候需要我们记忆,将常用的函数记住
- 调试。很少有程序可以一次性通过全部测试样例,我们需要多,然后对关键部分(比如条件判断、变量的变化过程)一步步调试,大家使用IDLE的话可以直接print,看看某个节点的数据是否满足预期。
代码实现也分三步:
- 输入。主要是input函数的使用,同时配合eval函数,实现输入整数、小数、一次性输入多个变量。
- 过程处理。if语句、for循环、while循环的使用,以及一定的python编程基础知识的积累。
- 输出。直接使用print换行输出、通过修改end参数实现间隔空格输出、做到格式化输出(保留两位小数)
在这里,我将一些常见的程序参考代码放在了下面,旨在为大家提供思路,希望大家抱着借鉴的心理来学习。强烈建议大家不要抄袭,因为itc有查重系统
,一是会有风险(已经有很多老师发现这个网站了,真的是太惭愧了),二是有悖于我的初衷。
在此,很感谢2019年与我一同上课的同学给我提供了更广阔的思维,也感谢老师的指导,这将是我一生最宝贵的财富。
代码基本都是没问题的,可以直接提交,
但不鼓励大家直接抄袭
。
请不要纠结算法复杂度,因为我当时没想很多,欢迎大家提供高效的程序。
题目只是我写过的,如果有什么遗漏的题目请在评论区联系我,我会及时补充!。
直接使用Ctrl + F 进行搜索题目名称即可
。
复杂数据类型练手题
出现最多次的整数
输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。
_ = input()
a = input().split()
# 转化为数值
a = [eval(i) for i in a]
# 创建字典统计次数
mydict = {}
# 做循环统计次数
for i in a:mydict[i] = mydict.get(i,0)+1
# 得到最多次数
max_times = max(mydict.values())
# 将键值对转化为列表,里面的元素是键值对的元组类型
data = list(mydict.items())
# 对数据进行排序,排序规则没有指定,默认是对元组的第一个元素从小到大排序
data.sort()
# 输出数据
for i in data:# 判断次数是不是最多的那个if i[1] == max_times:print(i[0],i[1])
求折点
给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。其他的天都不是折点。如下图中,第3天和第6天是折点。
给定n个整数a1, a2, …, an表示销售量,请计算出这些天总共有多少个折点。
为了减少歧义,我们给定的数据保证:在这n天中相邻两天的销售量总是不同的,即ai-1≠ai。注意,如果两天不相邻,销售量可能相同。
_ = input()
a = input().split() # 输入数据
a = [eval(i) for i in a] # 字符串转化为数值
count = 0 # 最终结果的计数(输出的第一行)
ans = [] # 用来存放答案
for i in range(1,len(a)-1): # 不循环最左边和最右边的数值,因为只有一个数不能比较if a[i]<a[i+1] and a[i]<a[i-1]: # 判断是不是极小值,题目说了,不用加等号ans.append(str(i+1)+" low")count += 1if a[i]>a[i+1] and a[i]>a[i-1]: # 判断是不是极大值,题目说了,不用加等号ans.append(str(i+1)+" high")count += 1
print(count)
[print(i) for i in ans]
读者第几次出现
涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。
'''
有条件的同学可以使用动态规划做
'''
_ = input()
a = input()
a = a.split()
mydict = {i:0 for i in a} # 创建一个字典,用来统计第几次出现,将次数放在ans列表中
ans = [] # 创建一个列表,和输入的数据一一对应
for i in a:mydict[i]+=1 # 元素开始出现啦ans.append(str(mydict[i])) # 将第几次出现放在字典里
print(' '.join(ans))
Hello World程序
print("Hello World!")
变量
用变量m存储100,用变量n存储13.14,输出变量m,n的值。
m=100
n=13.14
print(m)
print(n)
计算圆周长和圆面积
输入圆的半径r,计算圆周长和圆面积,保留2位小数
import math
r=float(input("Please enter radium:"))
S=math.pi*r*r
C=2*math.pi*r
print("Circumference is {:.2f}".format (C))
print("Round area is {:.2f}".format (S))
温度转换程序
在温度刻画的不同体系中,摄氏度以1标准大气压下水的结冰点为0度,沸点为100度。华氏度以1标准大气压下水的结冰点为32度,沸点为212度。如何利用程序辅助进行摄氏度和华氏度之间的转换,结果保留1位小数。
#Temperature
val=input("What is the temperature?")
if val[-1] in ["C","c"]: #①这里的冒号有什么用? ②为什么这一行写val[0:-1]就不对?f=1.8*float(val[0:-1])+32 print("The converted temperature is {:.1f}F".format(f))
elif val[-1] in ["F","f"]:c=(float(val[0:-1])-32)/1.8 #为什么这一行写val[-1]就不对?print("The converted temperature is {:.1f}C".format(c))
else:print("Input error!")
函数判断密码级别
问题描述】
输入一个表示密码的字符串,编写程序判断密码的安全级别为低级密码、中级密码和高级密码。
低级密码要求:
密码由单纯的数字或字母组成
密码长度小于等于8位
中级密码要求:
密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
密码长度不能低于8位
高级密码要求:
密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
密码只能由字母开头
密码长度不能低于16位
编写函数判断输入的密码的安全级别,如果为低级密码,则返回"A”;如果如果为中级密码,则返回“B”;如果为高级密码,则返回“C”
def ishave(s,limit): 判断字符串s中,是否存在limit中任意字符,如果存在,返回1,否则返回0
def typenum(psw): 判断psw中存在多少种类别的字符(类别三种,数字,字母,特殊字符 ),返回类别的数量
def safe(psw): 判断psw的安全性,返回安全级别对应的字符
def ishave(s,limit):for i in s:if i in limit:return 1return 0def typenum(psw):digit="1234567890"al="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"st="\~!@#$%^&*()_=-/,.?<>;:[]{}|"m=ishave(psw,digit)+ishave(psw,al)+ishave(psw,st)return mdef safe(psw):a=len(psw)# print(typenum(psw))if(a>=16 and typenum(psw)==3 and ("a"<=psw[0]<="z" or "A"<=psw[0]<="Z")):return "C"else:if a>=8 and typenum(psw)>=2:return 'B'else:return 'A'
x=input()
print(safe(x))
根据用户输入的内容,输出相应的结果
根据用户输入的内容,输出相应的结果
a=input("name:")
b=input("words:")
print('%s, I must tell you that %s.'%(a,b))
编写程序计算下列数学表达式的结果并输出
编写程序计算下列数学表达式的结果并输出,小数点后保留3位,右对齐占9个打印位置。
from math import *
x=sqrt(((3**4+5*6**7)/8))
print('%9.3f'%x)
幸运数字
提示输入用户名,并随机生成一个幸运数字(0-9),输出结果"用户某某某你的幸运数字是X"。(import random 调用randint和seed函数)
import random
random.seed(10)
a=input("name:")
b=random.randint(0,9)
print("%s, Your lucky number is %d."%(a,b))
3位整数变换1
x=eval(input())
a=x//100
b=(x-a*100)//10
c=(x-a*100)%10
d=c*100+b*10+a
print(d)
征友
土生土长的北京妞儿,在胡同里长大房不多,就一个四合院和近郊的别墅。不算美如天仙但还算标致,在清华读的经管,现在在做基金经理,个人擅长基本面分析,价值投资。现在只想找个聪明靠谱的IT男。硬性要求是出生年龄不要超过1990年,我对智商的要求比较高,下面就出个题测试下。我的微信ID是大写字母JH后面跟着两个质数,大的在前,小的在后,乘积是707829217,可直接搜索加微信,请输出该微信号!
自定义函数sushu()判断一个整数是否是素数,来帮助完成该题目。
def sushu(n):for i in range(2,n):if n%i==0:return Falsereturn True
a = eval(input())
result = 'JH'
for i in range(2,a):if sushu(i) and a%i==0:if sushu(a//i):result += (str(a//i)+str(i))print(result)break
else:print('error')
循环和函数_亲密数
求整数n以内(含n)的全部亲密数。
说明:如果正整数A的全部因子(包括1,不包括A本身)之和等于B;且正整数B的全部因子(包括1,不包括B本身)之和等于A,A不等于B,则将正整数A和B称为亲密数。
1不和其他数形成亲密数。
编写函数sumElem(),实现统计一个数字的因子之和(包括1,不包括A本身)
def sumyinzi(n):ls = [1,]for i in range(2,n):if n%i==0:ls.append(i)return sum(ls)def sumElem(n):mydict = {}for i in range(2,n+1):mydict[i] = sumyinzi(i)result = []for i in mydict:if mydict[i] in mydict and i==mydict[mydict[i]] and i!=mydict[i]:result.append((min(i,mydict[i]),max(i,mydict[i])))result = list(set(result))result.sort()[print(i,j) for i,j in result]
a = eval(input())
sumElem(a)
位置码加密
导入随机数库产生随机数时设置固定seed(10)。
为给定的字符串原码用随机产生位置码的方式进行加密。例如原码:010512,则位置码为由1-6这6个数字随机产生的数字序列:362415,位置码的生成取决于原码的长度L,每一位都不重复。根据位置码调整原码的顺序得到加密结果:021501,将原码的第3位0放到加密后的第1位,将原码的第6位2放到加密后的第2位,以此类推。
提示注意:对于样例打乱原码位置码123456时如果使用random库中的sample,choice等方法时需要用reverse方法对列表逆序才能和结果一致,用shuffle就不用逆序。
输入一个长度小于10的字符串,根据原码字符串s编写函数posCode(s)产生对应长度的位置码,并作为返回值返回。
根据原码字符串s和位置码posCode编写函数changeCode(s,posCode)实现原码根据位置码转换成加密后的字符串,并作为返回值返回
import random
random.seed(10)
def posCode(str_len):index_ls = [i for i in range(1, str_len + 1)]random.shuffle(index_ls)return index_ls
def changeCode(s,poscode):poscode = [i-1 for i in poscode]result = ''for i in poscode:result+=s[i]return results = input()
poscode = posCode(len(s))
pos = ''
for i in poscode:pos+=str(i)
print(pos)
result = changeCode(s,poscode)
print(result)
ISBN校验码判断
s=input()
total=0
sr=s.replace('-','')
for i in range(1,13):if i%2==1:total=total+int(sr[i-1])else:total=total+int(sr[i-1])*3
id=10-total%10
if id==10:id=0
if str(id)==s[-1]:print('Right')
else:print(s[0:16]+str(id))
输入整数x,y,z,判断x3+y3+z^3和1000的关系
输入整数x,y,z,若x3+y3+z3>1000,则输出x3+y3+z3-1000的结果,否则输出三个数之和。
(x,y,z)=eval(input("please input three numbers:"))
t=x**3+y**3+z**3
if t>1000:print(t-1000)
elif t<1000:print(x+y+z)
判断一个整数是否能被7或11整除
程序的功能是判断一个整数是否能被7或11整除,若能被7或11整除,则输出"Yes",否则输出"No",请补充程序。
a=eval(input())
if a%11==0 or a%7==0 :print("number:Yes")
else:print("number:No")
汽车价格竞猜,单位万元。
写一道程序,输入一个整整(单位万元)来猜汽车价格,代码中设置汽车价格为25。根据所猜价格分别对应猜对了,猜高了,猜低了三种输出结果。
a=eval(input())
if a>25:print("price:high")
elif a==25:print("price:bingo")
else:print("price:low")
判断三角形
输入三角形三条边的值,判断能否构建三角形?
(a,b,c)=eval(input("please input three numbers:"))
if a+b>c and a+c>b and b+c>a:print("true")
else:print("false")
合法结婚年龄
我国的婚姻法规定,男性22岁为合法结婚年龄,女性20岁为合法结婚年龄。编写程序判断一个人是否到了合法结婚年龄,并输出判断结果:“Yes” 或 “No”或"Error"
S=input("Sex(F or M):")
A=eval(input("Age(1-120):"))
if S in ["F"]:if 20<=A<=120:print("Yes")elif 1<=A<=20 :print("No")else:print("Error")
elif S in ["M"]:if 22<=A<=120:print("Yes")elif 1<=A<=22 :print("No")else:print("Error")
else: print("Error")
通过年份和月份,求该月天数
输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。
(x,y)=eval(input("year,month:"))
if y in [1,3,5,7,8,10,12]:print("31")
elif y in [4,6,9,11]:print("30")
else:if x%4==0 and x%100!=0 or x%400==0:print("29")else:print("28")
随机密码
(1)使用 random 库,采用 10作为随机数种子。
提示:random.seed(10)
(2)密码允许字符如下:
s=“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”
(3)密码长度为输入的数字。
import random
random.seed(10)
s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
length = eval(input())
ans = ''
for i in range(length):ans+=random.choice(s)
print(ans)
高校类型统计
列表 ls 中存储了我国 39 所 985 高校所对应的学校类型,请以这个列表为数据变量,编写 代码,统计输出各类型的数量,要求按类别字母顺序输出。
ls = [“Comprehensive”, “Polytechnic”, “Comprehensive”, “Comprehensive”, “Comprehensive”, \
“Comprehensive”, “Comprehensive”, “Comprehensive”, “Comprehensive”, “Comprehensive”,\
“Normal”, “Polytechnic”, “Comprehensive”, “Polytechnic”, “Comprehensive”, “Comprehensive”, \
“Comprehensive”, “Comprehensive”, “Comprehensive”,“Polytechnic”,\
“Polytechnic”, “Polytechnic”, “Polytechnic”, “Normal”, “Comprehensive”, \
“Agricultural and Forestry”, “Polytechnic”, “Comprehensive”, “Polytechnic”, “Polytechnic”, \
“Polytechnic”, “Comprehensive”, “Polytechnic”, “Comprehensive”, “Comprehensive”, \
“Polytechnic”, “Agricultural and Forestry”, “Nationalities”, “Military”]
ls = ["Comprehensive", "Polytechnic", "Comprehensive", "Comprehensive", "Comprehensive", \"Comprehensive", "Comprehensive", "Comprehensive", "Comprehensive", "Comprehensive",\"Normal", "Polytechnic", "Comprehensive", "Polytechnic", "Comprehensive", "Comprehensive", \"Comprehensive", "Comprehensive", "Comprehensive","Polytechnic",\"Polytechnic", "Polytechnic", "Polytechnic", "Normal", "Comprehensive", \"Agricultural and Forestry", "Polytechnic", "Comprehensive", "Polytechnic", "Polytechnic", \"Polytechnic", "Comprehensive", "Polytechnic", "Comprehensive", "Comprehensive", \"Polytechnic", "Agricultural and Forestry", "Nationalities", "Military"]
mydict = {}
for i in ls:mydict[i] = mydict.get(i,0)+1
data = list(mydict.items())
data.sort()
[print(i[0],i[1]) for i in data]
适婚问题!
输入年龄和性别,判断你当前的个人情况!男性小于30岁显示:young,30岁到36岁之间显示:marriageable age,大于36岁显示:old。
a=input("sex(F or M):")
b=eval(input("age:"))
if a=="F" or a=="f":if b<25:print("young")elif 25<=b<=30:print("marriageable age")else:print("old")
elif a=="M" or a=="m":if b<30:print("young")elif 30<=b<=36:print("marriageable age")else:print("old")
else:print("wrong")
解密码
注:本题还未提交测试。。。
s = input()
newstr = ''
for i in s:if 'A'<=i<='Z':position = ord(i) - 65new = chr(26-position-1 + 65)newstr += newelif 'a'<=i<='z':position = ord(i) - 97new = chr(26-position-1 + 97)newstr += newelse:newstr += i
print(s)
print(newstr)
11整除问题改
注:本题还未提交测试。。。
x = input('Please input a integer:')[::-1]
odd = 0 # 奇数
even = 0 # 偶数
for i in range(1,len(x)+1):if i%2==1:odd += int(x[i-1])else:even += int(x[i-1])
print(odd)
print(even)
if (even - odd)%11 == 0:print('TRUE')
else:print('FALSE')
循环编程题
已知y=1+1/3+1/5+…+1/2n-1:求y<3时的最大n值以及最大n值对应的y值(y值保留小数点后2位)。
n=0
y=0
while y<=3:n=n+1y=y+1/(2*n-1)
y = y-1/(2*n-1)
n -= 1
print("n=%.d,y=%.2f"%(n,y))
小玉游泳
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。
a=eval(input())
b=2
n=1
while b<a:b=b+(0.98**n)*2n=n+1
print(n)
密码正确吗
试编写一个程序判断6位密码是否正确,若密码正确输出right,密码不正确输出wrong,如果输入的密码有非数字字符则输出wrong(用字符串的isdigit()方法判断是否是纯数字字符串)。密码规则是: 第i位数字是第i-1位数字加1后的3次方的个位数( 2<=i<=6)。
感谢朱*星同学反馈问题,并帮助我进行数据测试
a=input()
if a.isdigit():for n in range(1,6):if eval(a[n])!=(eval(a[n-1])+1)**3%10:print("wrong")breakelse:print("right")
else:print("wrong")
判断一个3位数是否是水仙花数。
输入一个三位正整数abc,如果满足a3+b3+c^3=abc,则该数是水仙花数。例如123不等于1+8+27所以123不是水仙花数。
a=input('please input a three-digit ')
if len(a)==3:b=eval(a[0])**3+eval(a[1])**3+eval(a[2])**3if eval(a)==b:print('number:true')else:print('number:false')
else:print('number:error')
录取研究生
某高校录取研究生的要求是,每门课成绩不低于60分,总成绩不低于340分,370分以下为自费。编一程序实现输入一个学生的四门课成绩,试判断该生为该校录取的情况(没有录取“not”、自费“pay”、公费“free”三种情况)。
(a,b,c,d)=eval(input('four scores:'))
sum=a+b+c+d
if a<60 or b<60 or c<60 or d<60 or sum<340:print('not')
else:if sum>=370:print('free')else:print('pay')
统计一共出现了多少个3
输入任意一个正整数,从1开始到这个数字的奇数序列里,统计一共出现了多少个3。
编写函数sumThree(),实现功能是,输入一个正整数,返回该数中3出现的个数。
def sumThree(n):sum=0for i in range(1,int(n)+1):if i%2!=0:sum+=str(i).count("3")return sum
x=input("number:")
print(sumThree(x))
征友
def sushu(n):for i in range(2,n//2):if n%i==0:return Falsereturn True
a=int(input())
for i in range(2,a):if a%i==0:if sushu(i) and sushu(a%i):print("JH%d%d"%(a/i,i))break
else:print("error")
韩信点兵
有一群士兵,人数不超过n。韩信将其按照一行3人排队,余2人;按照一行5人排队,余1人;按照一行7人排队,刚好排成若干行。编写程序 计算士兵的人数。
n=eval(input())
i=1
for i in range(1,n+1):if i%3==2 and i%5==1 and i%7==0:print(i,end=' ')i=i+1
翻译密码
翻译密码。为了保密,常不采用明文,而用密文,即按一定规则将字符转换为另一字符,收报人则按相反的规律转换得到原来的字符。本程序规则为:字母ascii码加5,其他字符不变,对原文进行加密,并显示密文。字母的最后5个加5不是字母了,处理规则为循环成前5个。比如“X”的密文为“C”。
a=input('please input text:')
for S1 in a:if 65<=ord(S1)<=85 or 97<=ord(S1)<=117:n=ord(S1)+5new=chr(n)elif 86<=ord(S1)<=90 or 118<=ord(S1)<=122:n=ord(S1)-21new=chr(n)else:new=S1print(new,end="")
猴子吃桃问题
猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第n天吃以前发现只剩下一个桃子,
编写程序实现:据输入的天数计算并输出猴子共摘了几个桃子
a=eval(input())
b=1
c=1
if a!=int(a) or a<0:print('illegal data')
elif a==0:print(0)
else:for c in range(1,a):b=2*b+2print(b)
在生词本查单词的译文
先输入多个英文单词及其译文,接着输入英文单词,输出该单词的译文。
在这里插入代码片
求平均分
编写程序计算学生的平均分。
n=eval(input())
sign='Ture'
sum=0
if n>0:for t in range(1,n+1):a=eval(input())if 0<a<=100 and isinstance(n,int):sum=sum+aelse:print('illegal input')breakelse:print('%.2f'%(sum/n))
else:print('illegal input')
统计大小写字母个数和数字个数
统计一行字符的大写字母,小写字母和数字的个数。先输出大写字母个数,在输出小写字母个数,最后输出数字个数。
str1=input()
a=0
b=0
c=0
for t in str1:if t.isupper():a=a+1elif t.islower():b=b+1elif t.isdigit():c=c+1else:others='program will go on work!'
print('%.d\n%.d\n%.d'%(a,b,c))
判断该字符是字母字符、数字字符还是其他字符
已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。
ch=input('please input a char:')
if ch.isalpha():print('alphabet character')
elif ch.isdigit():print('digital character')
else:print('others character')
字符串中字母大小写互换
a=input()
sum=''
for m in a:if 'A'<=m<='Z':sum=sum+chr(ord(m)+32)elif 'a'<=m<='z':sum=sum+chr(ord(m)-32)else:sum=sum+m
print(sum)
电话号码
假设电话号码的模式为:3个数字,一个短横线,4个数字,一个短横线和4个数字。如:186-7123-4567。编写程序,用以检查输入的字符串是否匹配电话号码模式,若匹配返回True,否则返回False。
a=input()
if len(a)==13:a1=a[0:3]a2=a[4:8]a3=a[9:13]a4=a[3]a5=a[8]if a1.isdigit() and a2.isdigit() and a3.isdigit() and a4=='-' and a5=='-':print('True')else:print('False')
else:print('False')
找不同
9个同学一起做游戏,每个人报一个[1,20]区间上的正整数,请你编程求出有多少个不同的数。
a = input().split()
print(len(set(a)))
找数对
输入一组数到列表nums,请找到列表中任意两个元素相加能够等于9的元素,形成一个元组,使其小数在前大数在后,如:(2,7), (1,8)。重复的元组元素只保留一个,结果按元组第一个元素从小到大顺序输出。
a=input('numbers:').split(',')
a=[eval(i) for i in a]
data=[]
for i in range(len(a)):for j in range(i+1,len(a)):if a[i]+a[j]==9:# print([i],[j])x,y=min((a[i],a[j])),max((a[i],a[j]))data.append((x,y))
data = list(set(data))
data.sort()
print(data,sep='')
出现最多次的整数
输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。
_=input()
a=input().split()
a=[eval(i) for i in a]
mydict={}
for i in a:mydict[i] = mydict.get(i,0)+1
data=list(mydict.items())
data.sort(key=lambda x:(-x[1],x[0]))
for i in range(len(data)):if data[i][1]==data[0][1]:print(data[i][0],data[i][1])
找因子
输入一个大于1的整数,返回一个列表,包含所有能够整除该整数的因子(不包含1和它本身),并且从小到大排序。如果这个数是素数,则输出“(整数) is prime”。
a=eval(input('number:'))
list1=[]
for i in range(2,a):if a%i==0:list1.append(int(i))list1.append(int(a/i))
list1=list(set(list1))
if len(list1)==0:print('%d is prime'%a)
else:print(list1)
骑车还是走路
在华农校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为30秒;停车锁车的时间为20秒;步行每秒行走2米,骑车每秒行走4米。请判断走不同的距离去办事,是骑车快还是走路快。
a=int(input('Please input a number of distance:'))
time1=50+a/4
time2=a/2
if time1>time2:print('Walk')
elif time1<time2:print('Bike')
else:print('All')
折半查找
编写程序实现对单调递增的整型数组进行折半查找。用折半查找法找出一个数是数组中第几个元素,如果找到,则返回其下标;如果该数不在数组中,则返回-1。
long=input()
a=input()
key=input()
sign='F'
list1=a.split()
list2=[int(list1[i]) for i in range(0,len(list1))]
if list2!=sorted(list2):print('illegal input')
else:for i in range(len(list1)):if key==list1[i]:sign='T'print(i)breakif sign=='F':print('not found')
字母计数
输入字符串,输出字符串中出现次数最多的字母及其出现次数。如果有多个字母出现次数一样,则按字符从小到大顺序输出字母及其出现次数。
a=input()
dict1={}
for t in a:for i in range(len(a)-1):if a[i]>a[i+1]:a=a[:i]+a[i+1]+a[i]+a[i+2:]
for i in a:dict1[i]=dict1[i]+1 if i in dict1 else 1
max1=0
for i in dict1:if dict1[i]>max1:max1=dict1[i]
for i in dict1:if dict1[i]==max1:print(i,dict1[i])
一万以内的完全平方数
请将一万以内的完全平方数输出
for i in range(1,10001):if i**(1/2)==int(i**(1/2)):print(i)
世界杯官网注册
“世界杯”是世界上最高荣誉、最高规格、最高竞技水平、最高知名度的足球比赛,2018年世界杯于6月14日至7月15日在俄罗斯举行。每一届世界杯也是全世界球迷的一次盛会。部分球迷更是不远万里亲临现场观赛。某旅游网站推出观球赛套餐,网站注册时要求用户名只能包含字母、数字和下划线,并且首字符必须是字母或下划线。在计算机中编写程序判断输入的用户名是否符合该旅游网站要求,如果符合,请输出“Yes”,否则输出“No”.
a=input()
sign='T'
if a[0]=='_' or a[0].isalpha():for i in a[1:]:if i.isalnum() or i=='_':m=0else:sign='F'breakif sign=='T':print('Yes')else:print('No')
else:print('No')
s = input()
if s[0].isnumeric() or s[0]=='_':for i in s:if (not '0'<=i<='9') or (not i=='_'):print('No')breakelse:print('Yes')
else:print('No')
二进制整数转换为十进制整数
编写程序,输入字符串形式的二进制整数(长度为16位,采用补码表示),把它转换为十进制整数,输出该十进制整数。
a=input()
b=0
c=0
i=0
if a[0]=='1':if a[-1]=='1':a=a[:-1]+'0'for i in range(len(a)):if a[i]=='1':a=a[:i]+'0'+a[i+1:]else:a=a[:i]+'1'+a[i+1:]print(a)else:for t in a[::-1]:i-=1if t=='1':breakt=a[i:]a=a[:i]for i in range(len(a)):if a[i]=='1':a=a[:i]+'0'+a[i+1:]else:a=a[:i]+'1'+a[i+1:]a=a+tlist1=[-int(i) for i in a[::-1]]
else:list1=[int(i) for i in a[::-1]]
for i in list1:c=c+i*(2**(b))b=b+1
print(c)# 或者是直接写print(int(input(),2))
统计正负数个数
从键盘输入非0整数,以输入0为输入结束标志,求平均值,统计正数负数个数
list1=[]
a=0
b=0
c=0
sum1=0
while 1:c+=1i=eval(input())sum1=sum1+iif i>0:a+=1elif i<0:b+=1else:break
print(sum1/(c-1))
print(a)
print(b)
一年中第几天
输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天。特殊情况:闰年且输入月份大于3时需考虑多加一天。
dict1={1:31,3:31,5:31,7:31,8:31,10:31,12:31,4:30,6:30,9:30,11:30}
a=input()
list1=a.split()
list1=[int(i) for i in list1]
sum1=0
if list1[0]%4==0 and list1[0]%100!=0 or list1[0]%400==0:dict1[2]=29
else:dict1[2]=28
for i in dict1:if i<list1[1]:sum1=sum1+dict1[i]
print(sum1+list1[2])
输出斐波拉契数列-上机考试题
定义一个函数fib,给定n,返回n以内的斐波那契数列。
注:斐波拉契数列由0和1开始,之后的数就是由之前的两数相加而得出:0, 1, 1, 2, 3, 5, 8, 13, 21
num=eval(input('input a number please:'))
list1=[0,1]
c=1
i=1
while 1:c=list1[i]+list1[i-1]if c>num:breakelse:i+=1list1.append(c)
for i in list1[1:]:print(i,end=',')
数字出现次数排序
给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
a=input()
b=input()
list1=b.split()
list1.sort()
list1=[int(i) for i in list1]
dict1={}
for i in list1:if i in dict1:dict1[i]=dict1[i]+1else:dict1[i]=1
list1=list(dict1.items())
list1.sort(key=lambda x:(-x[1],x[0]))
for i in list1:print(i[0],i[1])
分段函数
有一个定义在自然数上的函数 f(x) 定义如下:
若 x <5 , 则 f(x) = x;
若 5<=x<15, 则 f(x) = x+6;
若 x>=15, 则 f(x) = x-6。
试编写该函数,输入x值,返回相应的f(x)值。
x=eval(input())
def f(x):if 0<=x<5:x=xelif 5<=x<15:x=x+6elif x>=15:x=x-6else:return('illegal input')return x
print(f(x))
根据用户输入的日期计算天数
编写函数isLeap(year)用于判断year是否是闰年,若是闰年则返回True,否则返回False。
def isLeap(year):if year%4==0 and year%100!=0 or year%400==0:return Trueelse:return False
def days(year,month):dict1={1:31,3:31,5:31,7:31,8:31,10:31,12:31,4:30,6:30,9:30,11:30}sum1=0if isLeap(year):dict1[2]=29else:dict1[2]=28for i in dict1:if i<month:sum1=sum1+dict1[i]print(sum1+list1[2])
a=input()
list1=a.split('/')
list1=[int(i) for i in list1]
year=list1[0]
month=list1[1]
day=list1[2]
days(year,month)
函数CountC
编写函数CountC用来统计字符串中各字母字符(“A”“Z”,“a”“z”)出现的个数。
def countn(str1):a=0for i in str1:if i.isalpha():a+=1return a
str1=input()print(countn(str1))
求多项式的和
编写一个函数mySum(a,n),求以下n项式的和:
s=a+aa+aaa+…+aa…a, 其中a是1~9的数字,最后一项是n位都是a的数字
程序部分代码如下:
x,y=eval(input())
print(mySum(x,y))
def mySum(a,n):list1=list(map(lambda n:sum(list(map (lambda n:a*(10**n),range(n)))) ,range(1,n+1)) )return sum(list1)
x,y=eval(input())
mySum(x,y)
print(mySum(x,y))
函数sumx()
定义一个函数sumx(),参数个数不限,返回所有参数的和。请完善程序代码。
def sumx(*a):return sum(a)x,y=eval(input(""))
print(round(sumx(x,y),2))
a,b,c=eval(input(""))
print(round(sumx(a,b,c),2))
电影选看
在当前目录下有一个文件名为movie.txt,文件中有6列数据,包括No Name Year Country Score Lasting,分别表示序号、电影名、上映年份、国家、评分和电影时长。李华只想观看时长在90分钟以下(包括90分钟)的电影。请你编写程序帮他挑选出符合条件的电影序号。一行打印一个序号写到文件out.txt中。
[movie.txt])(http://itc.hzau.edu.cn/userfiles/file/2019/1574656350956070421.txt)
f=open('movie.txt','r',encoding='utf-8')
m=open('out.txt','w')
list1=f.readlines()
del(list1[0])
dict1={}
for i in list1:i.strip()list2=i.split()if int(list2[-1])<=90:print(list2[0])m.write(str(list2[0])+'\n')list2=[]
f.close()
m.close()
学生成绩转换
读入文件d1.txtd1.txt,每行数据包含两个信息:学号和成绩,将成绩转换成5级制并按照学号递减排序,在屏幕上输出学号和成绩中间有一个空格的间隔,将不及格学生人数写到文件d2.txt中。
f=open('d1.txt')
dict1={}
list1=[]
for i in f:(a,b)=i.split(' ',1)if 90<=eval(b):dict1[a]='A'elif 80<=eval(b)<90:dict1[a]='B'elif 70<=eval(b)<80:dict1[a]='C'elif 60<=eval(b)<70:dict1[a]='D'else:dict1[a]='E'
list1=list(dict1.items())
list1.sort(key=lambda x:(eval(x[0]),x[1]))
new=open('d2.txt','w')
count=0
for i in list1:print(i[0]+' '+i[1])if i[1]=='E':count+=1
new.writelines(str(count))
new.close()
f.close()
武汉气温
在当前目录下有一个文件名为temp.txt(文件中数据如下:)的文件,存放着武汉从2018年11月10日(周六)到11月19日(周一)间十天的最高和最低气温(单位为摄氏度)。其中,第一行为最高气温,第二行为最低气温。
temp.txt文件中数据:temp.txt
版本一
f=open('temp.txt')
list1=[]
for i in f:list1.append(i)
list2=list1[0].split(',')
list3=list1[1].split(',')
list2=[int(i) for i in list2]
list3=[int(i) for i in list3]
max1=max(list2)
min1=min(list3)
list4=[]
for i in range(len(list2)):if list2[i]==max1:list4.append(i+1)
print(str(list4)+':hot,temperature:'+str(max1)+'C')
list4=[]
for i in range(len(list2)):if list3[i]==min1:list4.append(i+1)
print(str(list4)+':cold,temperature:'+str(min1)+'C')
list5=[]
for i in range(len(list2)):list5.append(int((list2[i]+list3[i])/2))
print('aver:'+str(int(sum(list5)/10)))
count=0
for i in list5:if i<10:count+=1
if count>=5:print('In winter')
else:print('Not in winter')
版本二
f = open('temp.txt')
data = f.readlines()
f.close()
high,low = data
high = [eval(i) for i in high.split(',')]
low = [eval(i) for i in low.split(',')]
highest = [i+1 for i in range(len(high)) if high[i]==max(high)]
lowest = [i+1 for i in range(len(low)) if low[i]==min(low)]
print(str(highest)+':hot,temperature:%sC'%max(high))
print(str(lowest)+':cold,temperature:%sC'%min(low))mean_ls = [(high[i]+low[i])/2 for i in range(len(high))]
print('aver:%d'%int(sum(mean_ls)/len(mean_ls)))winter_ls = [i for i in mean_ls if i<10]
print('In winter') if len(winter_ls)>=5 else print('Not in winter')
求绝对值最小者
编写程序实现:计算并输出标准输入的三个数中绝对值最小的数。
import math
x= abs(eval(input()))
y= abs(eval(input()))
z= abs(eval(input()))
print(min([x, y, z]))
计算两点之间的距离
编写程序实现计算两点之间的距离
import math
x1=eval(input())
y1=eval(input())
x2=eval(input())
y2=eval(input())
result = ((x2-x1)**2+(y2-y1)**2)**0.5
print(result)
五分制转分数档
编写程序,功能是输入五分制成绩,输出对应的百分制分数档。 不考虑非法输入的情形。
对应关系为:A: 90~100, B: 80~89, C: 70~79,D: 60~69, E: 0~59
grade=input()
if grade=="A":print("90~100")
elif grade=="B":print("80~89")
elif grade=="C":print("70~79")
elif grade=="D":print("60~69")
elif grade=="E":print("0~59")
停车费
进入停车场开始计费。停车时间小于0.5小时不收费;每小时收费5元;不足1小时按1小时收费;最多收费50元也就是10小时以上都是50元。
import math
hours=eval(input("time:"))
if(hours<0.5):cost=0
elif(0.5<hours<10):cost=math.ceil(hours)*5
elif(50<=hours):cost=50
print(cost)
编写程序计算下列数学表达式的结果并输出
编写程序计算下列数学表达式的结果并输出,小数点后保留3位,右对齐占9个打印位置。
x=((3**4+5*(6**7))/8)**0.5
print('%*.3f'%(9,x))
3位整数逆序
【问题描述】输入一个3位正整数,将它逆序输出。假设输入的3位整数是938,则输出839.
x=input()
if x[-1]=='0':x = x[:-1]print(x[::-1])
else:print(x[::-1])
求一元二次方程的解
【问题描述】一元二次方程:ax2+bx+c=0 (a ≠ 0)
【输入形式】输入a、b和c的值(有理数)
【样例输出说明】输出的两个解保留两位小数,大的在前。
abc=input()
a,b,c=[eval(i) for i in abc.split(" ")]
if b*b-4*a*c<0:print("No")
else:x1=(-b+(b**2-4*a*c)**0.5)/(2*a)x2=(-b-(b**2-4*a*c)**0.5)/(2*a)x1,x2 = [max(x1,x2),min(x1,x2)]print('.2f'%x1,'.2f'%x2)
100!尾部有多少个零
编写程序计算:阶乘尾数零的个数,即:100!的尾数有多少个零?
num = 1
for i in range(1,101):num = num*i
count = 0
for i in str(num)[::-1]:if i=='0':count+=1else:break
print(count)
反复猜数
编写猜数游戏程序,功能是:允许用户反复输入数,直至猜中程序选定的数(假定为100)。输入的数如果大于选定的数,则提示"larger than expected";如果小于选定的数,则提示"less than expected";如果等于选定的数,则输出"you win"并结束程序。
n=100
while 1:guess_num = int(input())if guess_num==n:print("you win")breakelif n>guess_num:print("less than expected")else:print("larger than expected")
生成因数列表
输入一个数n,输出一个列表,列表中是n的所有因数
a=eval(input())
list1=[]
for i in range(1,a+1):if a%i==0:list1.append(i)
print(list1)
找因子
输入一个大于1的整数,返回一个列表,包含所有能够整除该整数的因子(不包含1和它本身),并且从小到大排序。如果这个数是素数,则输出“(整数) is prime”。
a=eval(input('number:'))
list1=[]
for i in range(2,a//2+1):if a%i==0:list1.append(int(i))list1.append(int(a/i))
list1=list(set(list1))
if len(list1)==0:print('%s is prime'%a)
else:print(list1)
统计高于平均分的人数
从若干学生成绩中统计高于(严格的大于)平均分的人数,用-1做为学生成绩数据的结束标志
line = input()
nums = [eval(x) for x in line.split()[:-1]]
aver_score = sum(nums)/len(nums)
r=[x for x in nums if x>aver_score]
print(len(r))
矩阵的乘法
编写程序,完成34矩阵和43整数矩阵的乘法,输出结果矩阵。
data = input()
data = [eval(i) for i in data.split()]
# 定义两个矩阵,只不过是单行的,为了方便做乘法
a = data[:12]
b = data[12:]
# 最后的结果矩阵
c = []
# 两个矩阵相乘
for i in range(3):ls = []for j in range(3):a_temp = a[i*4:(i+1)*4]b_temp = b[j::3]# 行列相乘result = 0for num_a,num_b in zip(a_temp,b_temp):result += num_a*num_bls.append(result)c.append(ls)
#------------------------- 打印出相乘后的矩阵 --------------------
for i in range(len(c)):# 输出一行信息for j in range(3):print('%8s'%c[i][j],end='')print()
随机密码
请编写程序,生成随机密码。具体要求如下:
(1)使用 random 库,采用 10作为随机数种子。
提示:random.seed(10),不能用sample函数这是不放回抽样。
(2)密码允许字符如下:
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”
(3)密码长度为输入的数字。
import random
random.seed(10)
s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
length = eval(input())
ans = ''
for i in range(length):ans+=random.choice(s)
print(ans)
删除子串
编写程序实现在字符串s中删除子字符串c的功能。
说明:不考虑去掉子字符串c后形成的新的子字符串c。
例如:字符串s为abcabcd,子串c为bc,则调用该函数后,结果字符串s为aad。
s = input()
foo = input()
print(s.replace(foo, ''))
数列分段
给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
_=eval(input())
list_shulie=[int(i) for i in input().split()]
num=1
for i in range(1,len(list_shulie)):if list_shulie[i]!=list_shulie[i - 1]:num=num+1
print(num)
找出质数对的和等于正整数的数对
给定一个正整数,编写程序找出质数对的和等于输入的这个正整数的数对,数对第一个数小于等于第二个数,并输出结果。输入值小于1000,大于5
def is_prime(num):for i in range(2,int(num**0.5)+1):if num % i ==0:return Falseelse:return True
num=int(input())
prime_ls=[int(i)for i in range(2,num) if is_prime(i)]
#print(primelist)# # 方法一,循环判断
# data=[]
# for num1 in prime_ls:
# for num2 in prime_ls:
# if num1+num2==num and num1<=num2:
# data.append((num1,num2))
# data=list(set(data))
# data.sort()
# for i in data:
# print(i[0],i[1])# 方法二,滑动区间法
l = 0
r = len(prime_ls)-1
data = []
while l<=r:result = prime_ls[l] + prime_ls[r]if result>num:r-=1elif result<num:l+=1else:# print(prime_ls[l],prime_ls[r])data.append([prime_ls[l],prime_ls[r]])l+=1
data.sort()
for i in data:print(i[0],i[1])
华中农业大学python实验题相关推荐
- 华中农业大学C++实验题
华中农业大学C++实验题 求天数 学校录取情况 骑车快还是走路快 停车费 输出运算结果 整数和 反弹路径总和 前n项之和 判断正方形 根据线索求出车号 摘到的苹果的数目 求唱歌比赛最大值 翻译密文 处 ...
- 华中农业大学算法实验课答案
华中农业大学算法实验课答案 贪心 最优分解问题: 会场安排问题 最小硬币数目问题 硬币找钱问题 汽车加油问题 程序存储问题 动态规划 最大连续子段和 最短下降路径问题: 最少硬币问题: 最长公共子序列 ...
- python实验题_python实验二
安徽工程大学 Python 程序设计 实验报告 班级 物流191 姓名 王凡 学号 3190505102 成绩____________ 日期20200322 指导教师 修宇 [实验名称] 实验二 顺序 ...
- 华中农业大学python期末考试试卷_华中农业大学本科课程期末考试试卷
[ ] 3 . 通过以闭合回路 L 为边界的任意曲面的磁感应强度 B 通量均相等. [ ] 4 . 根据热力学第二定律可知:热量可以从高温物体传到低温物体,但不能从低温物 体传到高温物体. [ ] 5 ...
- python实验题第四章_「Python」2020.03.16学习笔记 | 第四章列表、元组、字典-习题(11-13)...
学习测试开发的Day74,真棒! 学习时间为1H 第四章列表.元组.字典-习题(11-13) 11.求两个集合的交集和并集 代码 list1=[1,2,3,4] list2=[2,3,5,5] def ...
- python实验题在哪搜题_超星Python语言应用搜题公众号
天疱疮所形成的疱是上皮内疱 答:√ 突发事件应急工作的工作原则是() 答:预防为主,常备不懈 依靠科学,加强合作 反应及时,措施果断 统一领导,分级负责 为了选择某一项目而放弃的其他项目中,价值最高的 ...
- 华中农业大学C语言实验5答案,物理实验报告册(上册)-华中农业大学实验.pdf
物理实验报告册(上册)-华中农业大学实验 物理实验报告册 (上册) 专业班级__________________________ 学 号__________________________ 姓 名__ ...
- 密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码)
密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码) 3. AES实验 3) (思考题)利用Sage构建AES的S盒和逆S盒 ...
- python思考题实验题整理
思考题实验题整理 第2章 思考题 下列哪些是合法的变量名 A.6a2b.aBc.abc-123.ab_123._ _.hello world 合法:A.aBc.ab_123 思考题:#TempConv ...
最新文章
- 大转盘完整源码附效果图,可以下载直接用
- 【计算理论】可判定性 ( 丘奇-图灵论题 | 可判定性引入 | 图灵机语言 | 图灵机结果 | 判定机 | 部分函数与全部函数 | 可判定性定义 )
- android 日期相减得天数_Excel日期计算方法大全
- Tomcat配置可以访问外部资源路径
- python unittest excel,Python unittest excel数据驱动
- webpack打包优化_如何提升 Webpack 打包速度
- Android三横变叉动画,90%的孩子会写错的笔顺,动画演示来一波!一看就会!
- 施耐德驱动器维修ELAU控制器维修C400C600
- FAT32/exFAT/NTFS,三种U盘格式的区别
- Altera FPGA 差分信号初识(3)
- c语言小熊时钟报告,C语言——小熊时钟.doc
- 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD...
- 京东数据分析工具推荐(京东第三方数据平台)
- Module-ScyllaDB技术文档
- 恒久는 變化中의 不變
- 我的世界未能从服务器注册表数据,【经验之谈】“User Profile Service 服务未能登录,无法加载用户配置文件”实战历程...
- matlab 天空之城,matlab演奏天空之城
- 4、SRS4.0源代码分析之RTMP推流处理
- PSINS工具箱15状态组合导航仿真程序(test_SINS_GPS_153)浅析-卡尔曼滤波设置+导航解算
- java任务延时执行,30S后执行