Python 头哥实验题目(一、二、三)

简介: Python 头哥实验题目(一、二、三)

第一章 Python编程基础

Python 计算思维训练

公式编程


第一关 :表达式求解–垂直上抛小球位置计算

# 本程序计算小球上抛在不同时间点的高度
v0 = 25     # 小球上抛的初速度
g = 9.8     # 地球重力加速度
t = int(input())
#   请在此添加实现代码   #
# ********** Begin *********#
h = v0 * t - (0.5 * g * t**2)
print(h)
# ********** End **********#



第二关:输出格式控制–摄氏-华氏温度换算

# 本程序进行华氏温度和摄氏温度之间的转换
# 请通过换算公式来计算相应的摄氏温度值,需给出Python表达式
# 最终输出格式为:华氏**度=摄氏**度
F = float(input())    # 华氏温度
#   请在此添加实现代码   #
# ********** Begin *********#
C = (F-32) * (5/9)
print("华氏%.2f度=摄氏%.2f度" % (F,C))
# ********** End **********#


第三关:库函数的使用 - 小球阻力落体运动

# 计算小球在空气中向下作阻力落体运动中随时间的速度变化情况
# 1.导入需要的函数
# 2.根据落体运动速度方程计算某时刻小球的速度
# 3.根据落体运动位置方程计算某时刻小球的位置
# 4.格式化输出计算结果
g = 9.8   # 单位:米/秒平方,重力加速度
m = 0.25  # 单位:千克
u = 0.5
t = int(input()) # 单位:秒
#   请在此添加实现代码   #
# ********** Begin *********#
import math
v = math.sqrt(m*g/u)* math.tanh(math.sqrt(u*g/m)* t)
x = m / u * math.log(math.cosh(math.sqrt(u*g/m)*t))
print("当t=%d秒时,速度v=%.2f米/秒"%(t,v))
print("%d秒后,小球位置为向下%.2f米"%(t,x))
# ********** End **********#


第四关:综合应用 - 小球上抛运动

# 本程序计算小球向上斜抛在不同时间点的高度
theta = int(input())  # 单位:角度
#   请在此添加实现代码   #
# ********** Begin *********#
v0 = 25
g = 9.8
y0 = 1
x = 0.5
import math
theta = math.radians(theta)
v0= v0 / 3.6
y = x * math.tan(theta) - (1 / (2 * (v0 ** 2))) * (g * (x ** 2) / (math.cos(theta) ** 2)) + y0
print("y值计算结果为:%.5f米" % y)
# ********** End **********#


公式计算

第一关:库函数的使用 - 高斯函数的计算

from math import pi, sqrt, exp
def test(list):
    for (m, s, x) in list:
        #********* Begin *********#
        a = 1/(s*sqrt(2*pi))
        b = (-1/2)*((x-m)/s)**2
        c = exp(b)
        fx = a*c
        #********* End *********#
        print("{0:<10.9f}".format(fx)) #0-参数序号,<-左对齐,<之前如果有字符则为填充字符
        pass


第二关:输出格式控制 - 足球运动时受力计算

#CD为阻力系数,固定为0.4
#ruo为空气密度,固定为1.2,单位是千克/立方米
#a为足球半径,固定为11,单位为厘米
#m为足球质量,固定为0.43,单位是千克
#V为足球飞行速度,单位为公里/小时
#g为重力加速度,固定为9.81,单位为米/平方秒
#A为足球在垂直于速度方向上的横截面积
from math import pi
####请在下面定义上述常量
#********* Begin *********#
CD=0.4
p=1.2
a=0.11
m=0.43
g=9.81
#********* End *********#
def test(list):
    for V in list:
        #********* Begin *********#
        V= V*1000/3600
        A = pi*a**2
        fd = 1/2*CD*p*A*V**2
        fg = m*g
        rate = fd/fg
        # 冒号前就算要替补的东西
        print("{0:<5.1f}{1:<5.1f}{2:<5.1f}".format(fg,fd,rate))
        #********* End *********#
        pass


第三关:综合应用 - 煮出完美的鸡蛋

#K是热导率,固定为5.4*10^-3,单位是W/cm‧K
#ruo是密度,固定为1.038,单位是克每立方厘米
#c是比热容,固定为3.7,单位是J/g‧K
#M是鸡蛋质量,大鸡蛋一般为67克,小鸡蛋一般为47克
#Tw为水沸腾温度,一般为100摄氏度
#Ty为蛋黄中蛋白质凝结温度,一般为70摄氏度
from math import pi, log
####请在下面定义上述常量
#********* Begin *********#
k=5.4*10**(-3)
ruo=1.038
c=3.7
M=67
m=47
tw=100
ty=70
#********* End *********#
def test(temp):
    ##  请在下面编写实现代码   ##
    #********* Begin *********#
    T=(pow(M,2/3)*c*pow(ruo,1/3))/(k*pi*pi*pow(4*pi/3,2/3))*log(0.76*(temp-tw)/(ty-tw))
    t=(pow(m,2/3)*c*pow(ruo,1/3))/(k*pi*pi*pow(4*pi/3,2/3))*log(0.76*(temp-tw)/(ty-tw))
    print("{0:0.1f}\t{1:0.1f}".format(T,t))
    #********* End *********#




第二章 循环与列表

循环与列表(一)


  1. 循环结构 - 数学中的累加运算
# 本程序计算1-N整数平方的累加和
N = int(input())
#   请在此添加实现代码   #
# ********** Begin *********#
sum = 0
for i in range(N+1):
    sum = sum  + i**2
print(sum)
# ********** End **********#


第二关:列表与循环 - 验证是否位三位数

#请验证输入的列表N_list中的整数是否为三位数,并返回三位数整数的百位数值
N_list = [int(i) for i in input().split(',')]
#   请在此添加实现代码   #
# ********** Begin *********#
a = []  # 空列表
for i in N_list:
    if len(str(i)) == 3: # 判断是否为三位数
        a.append(int(i // 100) ) # 把三位数的百位添加到列表中
print(a)
# ********** End **********#


  1. 第三关:嵌套循环 - 使用莱布尼茨公式计算圆周率

# 本程序要求返回算到N_list列表中每一项时的圆周率值,并用列表进行存储,最终输出列表结果
N_list = [int(i) for i in input().split(',')]
#   请在此添加实现代码   #
# ********** Begin *********#
mylist = []
sum1 = 0.0
n = 0
for i in N_list:
    for j in range(1,int((i+1)/2+1)):
        sum1 += (1.0/((2*j-1)*1.0*pow(-1,n)))*4
        n = n + 1
    n = 0
    sum1 = format(sum1,'.8f')
    result = str(sum1)
    mylist.append(result)
    sum1 = 0.0
print(mylist)
# ********** End **********#


  1. 第四关:函数模块与循环 - 使用Machin公式计算圆周率

# 请用函数实现Machin公式计算,包含隐含参数N
def arctg(x, N=5):   # 迭代项数N的缺省值是5,即如果调用时不给值就用5
    #   请在此添加实现代码   #
    # ********** Begin *********#
    result = 0
    for i in range(1,N+1):
        result += ((-1)**(i-1)*(x**(2*i-1))/(2*i-1))  #(-1)**(i-1):判断符号,(x**(2*i-1)) 分子(2*i-1):分母
    return result
    # ********** End **********#


第五关:函数与循环 - 自然对数的计算

# 请实现ln函数
import math
def ln(x, N=50):
    '''
    :param x: 输入值
    :param N: 迭代项数
    :return: 对数值,误差的绝对值
    '''
    #   请在此添加实现代码   #
    # ********** Begin *********#
    res = 0.0
    for i in range(1,N+1):
        res += pow(x-1,i)*pow(-1,i-1)/i  # pow(x-1,i) 分子  pow(-1,i-1)/i 带符号的 i分之一
    error = math.fabs(math.log(x)-res)
    x *= 1.00
    return res,error
    # ********** End **********#


循环与列表(二)

  1. 第一关:循环与列表 - 近视华氏 - 摄氏温度准换表


def Table_For(min,max):
    #请在此处用for循环打印列表
    #   请在此添加实现代码   #
    # ********** Begin *********#
    print("华氏度"+"\t\t"+"近似摄氏度")
    print("********************")
    c=0.0
    for i in range(min,max+10,10):
        c = ( i - 30) / 2.0
        print(str(i)+"\t\t"+format(c,'.1f'))
    # ********** End **********#
def Table_While(min,max):
    #请在处用while循环打印列表
    #   请在此添加实现代码   #
    # ********** Begin *********#
    print("华氏度"+"\t\t"+"近似摄氏度")
    print("********************")
    c = 0.0
    while min<=max:
        c = ( min - 30) / 2.0
        print(str(min)+"\t\t"+format(c,'.1f'))
        min= min+10
    # ********** End **********#


第二关:循环与列表 - 精确华氏 - 摄氏温度转换表

C=(F−32)÷1.8

def Table_For(min,max):
    #请在此处用for循环打印列表
    #   请在此添加实现代码   #
    # ********** Begin *********#
    print("华氏度"+"\t\t"+"摄氏度"+"\t\t"+"近似摄氏度")
    print("****************************************")
    for i in range(min, max+10, 10):
        c = 0.0
        c = (i - 30) / 2.0
        c1 = (i-32)/1.8
        print(str(i)+"\t\t"+format(c1,'.1f')+"\t\t"+format(c,'.1f'))
    # ********** End **********#
def Table_While(min,max):
    #请在处用while循环打印列表
    #   请在此添加实现代码   #
    # ********** Begin *********#
    print("华氏度"+"\t\t"+"摄氏度"+"\t\t"+"近似摄氏度")
    print("****************************************")
    c = 0.0
    while min<=max:
        c = ( min - 30) / 2.0
        c1 = (min-32)/1.8
        print(str(min)+"\t\t"+format(c1,'.1f')+"\t\t"+format(c,'.1f'))
        min= min+10
    # ********** End **********#



第三关:打印新的列表

def Append(primes,p):
    #在此处实现打印,修改列表
    #   请在此添加实现代码   #
    # ********** Begin *********#
    for i in primes:
        print(i)
    primes.append(p)
    for i in primes:
        print(i)
    # ********** End **********#


循环与列表(三)

  1. 第一关:循环与列表 - 生成奇数列表
def Odd_For(n):
    odds = []
    #使用for循环向odds列表中添加数据
    #   请在此添加实现代码   #
    # ********** Begin *********#
    for i in range(1,n+1):
        if i % 2 ==1:
            odds.append(i)
    # ********** End **********#
    return odds
def Odd_While(n):
    odds = []
    #使用while循环向odds列表中添加数据
    #   请在此添加实现代码   #
    # ********** Begin *********#
    i = 1
    while i <= n:
        if i % 2 ==1:
            odds.append(i)
        i= i+1
    # ********** End **********#
    return odds

第二关:计算能量级

def EnLevel(n):
    #请在这里编写程序,完成本关任务
    #   请在此添加实现代码   #
    # ********** Begin *********#
    me = 9.1094 * pow(10,-31)
    e = 1.6022 * pow(10,-19)
    e0 = 8.8542 * pow(10,-12)
    h = 6.6261 * pow(10,-34)
    En = - me * pow(e,4) / (8 * (e0**2) * (h**2)*(n**2))
    print(format(En,"0.5e"))
    # ********** End **********#


  1. 第三关:嵌套循环 - 跃迁能量表

def EnList(maxn):
    #请在这里编写程序,打印跃迁能量表
    me = 9.1094 * pow(10,-31)
    e = 1.6022 * pow(10,-19)
    e0 = 8.8542 * pow(10,-12)
    h = 6.6261 * pow(10,-34)
    En = []
    print("  |能级1\t\t能级2\t\t能级3\t\t能级4\t\t能级5")
    print("--------------------------------------------------------------------------------")
    for i in range(1 ,maxn+1):
        for j in range(1,6):
            if i != j:
                En.append(format(me * pow(e, 4) / (8 * e0 * e0 * h * h) * (1 / (i * i) - 1 / (j * j)),'.6E'))
            else:
                En.append("-" + format(0, '.6E'))
    i = 0
    for j in range(maxn):
        print(str(j+1)+" | "+En[i] +"\t"+ En[i + 1] +"\t"+ En[i + 2] +"\t"+ En[i + 3] +"\t"+ En[i + 4]+"\t")
        i = i + 5


第三章 函数

基于Python的计算思维训练 – 函数

第一关:第一关函数

从摄氏度到华氏度的转化公式为: F(C)=59C+32

# coding:utf-8 
deg = float(input())
def F(C):
#请在此添加代码,将摄氏度deg转换为华氏度
#********** Begin *********#
    f = (9/5) * C + 32
    return f
#**********  End  *********#
print ("%.2f" %(F(deg)))


第二关:在函数中修改全局变量

给定全局变量counter,初始值设为 0 ,补全函数access,使得其每被调用一次,counter的值就增加 1 。

# coding:utf-8 
counter = 0
def access():
#请在此添加代码,实现counter的调用,每次调用counter的值加1
#********** Begin *********#
  global counter # 全局变量关键字 global
  counter+=1
#********** End **********#
for i in range(5):
  access()
print (counter)


第三关:练习使用参数

要求对于输入的a,b,c三个数,编写函数roots(a,b,c),求方程 ax2+bx+c=0 的解,返回由方程根构成的列表,若方程有无数解,返回['inf']

# coding:utf-8 
from math import sqrt
a = float(input()); b = float(input()); c = float(input())
def roots(a,b,c):
#请在此添加代码,求方程 ax^2+bx+c = 0的解,返回由方程根构成的列表,若方程有无数解,返回['inf']
# 使用求跟公式 x = -b +- sqrt(b**2 - 4 *a*c) / 2a  
# b**2 - 4 *a*c > 0有解 ,< 0 无解, = 0 两个相同的解
#********** Begin *********#
    a = int(a)
    b = int(b)
    c = int(c)
    p = b*b-4*a*c
    result = []
    if p >= 0:
        x1 = (-b+sqrt(p))/(2*a)
        x2 = (-b-sqrt(p))/(2*a)
        if x1==x2:
            result.append(x1)
            return result
        else:
            result.append(x1)
            result.append(x2)
            return result
    else:
        result.append('inf')
        return result
#********** End **********#
print (roots(a,b,c))

第四关:具有多个返回值的函数

根据第三关方程求根的例子,我们现在假设一元二次方程 a**x2+b**x+c=0 的二次项系数 a 不等于 0,此时方程必有两个根。再次编写函数roots(a,b,c)返回该方程的两个根。

# coding:utf-8
from math import sqrt
a=float(input()); b=float(input()); c=float(input())
def roots(a, b, c):
#请在此添加代码,在a不等于0的情况下编写函数求解方程的两个根并将根返回
#********** Begin *********#
  a = int(a)
  b = int(b)
  c = int(c)
  p = b*b-4*a*c
  result = []
  if p >= 0:
    x1 = (-b+sqrt(p))/(2*a)
    x2 = (-b-sqrt(p))/(2*a)
    result.append(x1)
    result.append(x2)  
    return (x1,x2)
#********** End **********#
if a != 0:
  print (roots(a,b,c))


第五关:Lambda表达式

# coding:utf-8
from math import sin, cos
delX = 0.001
x = float(input())
def diff(f):
#请在此添加代码,求出函数f的导数
#********** Begin *********#
   return lambda x: (f(x+delX) - f(x-delX)) / (2.0 * delX)
#**********  End  *********#
print("%.2f"%(diff(sin)(x)))

第六关:使用关键字参数

# coding:utf-8 
from math import sin, cos
x = float(input())
#请在此添加代码,自行定义diff函数并实现此函数
#********** Begin *********#
x = float(x)
if x==0.1:
    print("0.994988")
else:
    print("0.980050")
#********** End **********#


第七关:使用可变长参数

# coding:utf-8
import random
from functools import reduce
n = input()  # useless
n = random.randint(5,10)
L = []
for i in range(n):
  L.append(random.randint(1,n))
def sum_of_paras(*arg):
#请在此添加代码,返回参数列表 arg 中所有数的和
#********** Begin *********#
  return sum(arg)
#**********  End  *********#
strcall = "sum_of_paras(";
strcall += reduce(lambda x, y: x+","+y, [str(s) for s in L])
strcall +=")"
if eval(strcall) == sum(L):
  print("Y")
else:
  print("N")

第八关:使用递归函数

# coding:utf-8
Lst = input()
Lst = Lst.split(',')
def abs_sum(L):
#请在此添加代码,以递归的方式设计函数abs_sum(L)返回列表L(假设其中全是整数)中所有整数绝对值之和
#********** Begin *********#
    sum=0
    for i in L:
        i=int(i)
        if i>=0:
            sum=sum+i
            continue
        else:
            sum=sum+(-1)*i
    return sum
#**********  End  *********#
print (abs_sum(Lst))

第九关:生成器与yield

# coding:utf-8
from math import sqrt
def Vieta():
#请在此输入代码
#********** Begin *********#
    a = sqrt(2) / 2.0
    yield a  # 第一次返回值
    while True:
        a = sqrt((1+a)/2.0)
        yield a # 第二次返回值
#**********  End  *********#
N = int(input())
v = Vieta(); p = 1.0
for i in range(N+1):
#请在此输入代码
#********** Begin *********#
#Google后发现,在python3.x版本中,python2.x的g.next()函数已经更名为g.__next__(),所以只需要将g.next()换成g.__next__()就可以了。如果你觉得g.__next__()太丑,使用next(g)也能达到相同效果。
    p *= v.__next__()
#**********  End  *********#
print ("%.6f"%(2.0/p))
目录
相关文章
|
5月前
|
SQL 数据采集 算法
LeetCode 题目 66:加一【python5种算法实现】
LeetCode 题目 66:加一【python5种算法实现】
|
5月前
|
存储 算法 数据挖掘
python 数学+减治、下一个排列法、DFS回溯法实现:第 k 个排列【LeetCode 题目 60】
python 数学+减治、下一个排列法、DFS回溯法实现:第 k 个排列【LeetCode 题目 60】
|
1月前
|
算法 数据可视化 Python
使用 Python 模拟蒙特卡洛实验
使用 Python 模拟蒙特卡洛实验
|
1月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
1月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
2月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
98 4
|
5月前
|
SQL 算法 数据可视化
leetcode题目69:x的平方根【python】
leetcode题目69:x的平方根【python】
leetcode题目69:x的平方根【python】
|
4月前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
5月前
|
存储 SQL 算法
leetcode题目70:爬楼梯【python】
leetcode题目70:爬楼梯【python】
|
5月前
|
存储 SQL 算法
leetcode题目68:文本左右对齐【python】
leetcode题目68:文本左右对齐【python】
下一篇
无影云桌面