华中农业大学python实验题

本文整理了华中农业大学Python课程的部分实验题目,涵盖了基础语法、数据结构、算法、函数等方面,旨在帮助学生理解和掌握Python编程。内容包括但不限于:变量、运算、条件判断、循环、函数定义、数据处理等,每个题目附带了解题思路,是学习和复习Python编程的好资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识汇总

哈喽,大家好,我来做一个引流啦啦啦,本人总结了华农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!")

函数判断密码级别

问题描述】

输入一个表示密码的字符串,编写程序判断密码的安全级别为低级密码、中级密码和高级密码。

低级密码要求:

  1. 密码由单纯的数字或字母组成

  2. 密码长度小于等于8位

中级密码要求:

  1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.<>;:[]{}|)任意两种组合

  2. 密码长度不能低于8位

高级密码要求:

  1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.<>;:[]{}|)三种组合

  2. 密码只能由字母开头

  3. 密码长度不能低于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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值