知识汇总
哈喽,大家好,我来做一个引流啦啦啦,本人总结了华农python期末部分常见考点,并且带有近两次的python编程考试题和参考代码。个人认为,不论是对大家期末复习还是日常学习,都会有所帮助。如有需要,请点击这里跳转
除此之外,还有一个华中农业大学教务系统自动评教脚本
,解放你的双手从此刻开始点击跳转
还有还有,本人的Python教程专栏在此点击跳转
其实要是问的话,我为什么搞这些呢?会赚钱?那必然不是(除非有人来给我打赏?)
就是开源思想嘛,开源可以修正自己的错误。而且我的学习都是通过开源资料学习的,我也想把自己的所学回馈给大家,仅此而已,谢谢。
前言
很多同学在刚开始学习编程的时候,拿到一个题经常会无从下手,其实编程就是考察的逻辑,当你遇到一个问题的时候,你首先要做的就是去思考解决这个问题的过程,在大脑中有了个大致思路后再去敲代码,当发现提交上去之后不能全对,就看看代码哪里有逻辑问题。(不要总是怀疑系统出问题了。。)
在这里,我将一些常见的程序参考代码放在了下面,旨在为大家提供思路,希望大家抱着借鉴的心理来学习。强烈建议大家不要抄袭,因为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 += 1
if 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 1
return 0
def typenum(psw):
digit="1234567890"
al="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
st="~!@#$%^&*()_=-/,.?<>;:[]{}|"
m=ishave(psw,digit)+ishave(psw,al)+ishave(psw,st)
return m
def 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 False
return 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 m