您现在的位置是:首页 > 技术教程 正文

HNU头歌攻略 实验1:简单计算 #湖南大学#头歌#python

admin 阅读: 2024-03-23
后台-插件-广告管理-内容页头部广告(手机)

        因为博主要期末复习,准备复盘一下头歌的题目准备期末。又想起了开始写题目时,多次修改无果,没有答案参照、原地踏步的日子,于是决定写点东西,让湖大学子的python学习之路更轻松一点。问我为什么不发在GitHub上,我会说是为了方便同学们查找,其实是我还不会使GitHub,之后会发在上面。

免责声明:鉴于博主能力有限,犯错在所难免,如有错误还请指出;代码我基本都会重写一遍,如有他法,欢迎留言;答案都是能过测试的,包括但不限于各种投机取巧,具体原因不详。

实验1:简单计算

第1关 具体值表达式的转换

编程要求

根据提示,在右侧编辑器 Begin-End 处补充代码,完成如下要求:

第一题

求1234除以123的余数。

第二题

某个国家的人均寿命是90岁,请问人均能活多少秒?

第三题

123/12的商。

第四题

123/12的值。

第五题

请问一个新生儿能活十亿秒吗?即计算并输出十亿秒是多少年。

第六题

33+43+53=63是否成立?

第七题

分别计算1.02365和1.01365,可知“多百分之一努力,得千分收成”。

第八题

计算并判断1.013∗0.992是否大于1.01,输出判断结果。可知“三天打鱼,两天晒网,终将一无所获”。

  1. def print_(x):
  2. if type(x) == float:
  3. print("%.4f" % x)
  4. else:
  5. print(x)
  6. # ********** Begin ********** #
  7. #请在每一题的print语句内完成题目所需的表达式
  8. #第一题
  9. print_(1234%123)
  10. #第二题
  11. print_(90*365*24*60*60)
  12. #第三题
  13. print_(123//12)
  14. #第四题
  15. print_(123/12)
  16. #第五题
  17. print_(1e9/(365*24*60*60))
  18. #第六题:要求编写两式比较的表达式,输出为True或False
  19. print_(3**3+4**3+5**3==6**3)
  20. #第七题
  21. print_(1.02**365)
  22. print_(1.01**365)
  23. #第八题:要求编写两式比较的表达式,输出为True或False
  24. print_(1.01**3*0.99**2>=1.01)
  25. # ********** End ********** #

第2关:Python 数学函数

第一题

分别计算并输出π4+π5、e6的值,以及二者的差。

第二题

分别计算4π​与4arctan(51​)−arctan(2391​)的值,并观察其差异。

第三题

分别计算并输出cos(172π​)、161​[−1+17​+2(17−17​)​+217+317​−2(17−17​)​−22(17+17​)​​],及二者的差。

第四题

计算21+5​​+2​−21+5​​。

第五题

分别计算并输出sinh(0.25)与2(e0.25−e−0.25)​的值,查看并比较二者的大小。

  1. import math
  2. def print_(x):
  3. if type(x) == float:
  4. print("%.4f" % x)
  5. else:
  6. print(x)
  7. # ********** Begin ********** #
  8. #请在每一题的print语句内完成题目所需的表达式
  9. #第一题
  10. print_(math.pi**4+math.pi**5)
  11. print_(math.e**6)
  12. print_(math.pi**4+math.pi**5-math.e**6)
  13. #第二题
  14. print_(math.pi/4)
  15. print_(4*math.atan(1/5)-math.atan(1/239))
  16. #第三题
  17. print_(math.cos(2*math.pi/17))
  18. print_((17**0.5-1+(2*(17-17**0.5))**0.5+2*((17+3*17**0.5-(2*(17-17**0.5))**0.5)-2*(2*(17+17**0.5))**0.5)**0.5)/16)
  19. print_(math.cos(2*math.pi/17)-(17**0.5-1+(2*(17-17**0.5))**0.5+2*((17+3*17**0.5-(2*(17-17**0.5))**0.5)-2*(2*(17+17**0.5))**0.5)**0.5)/16)
  20. #第四题
  21. print_((((1+5**0.5)/2)+2)**0.5-(1+5**0.5)/2)
  22. #第五题
  23. print_(math.sinh(1/4))
  24. print_((math.e**0.25-math.e**(-0.25))/2)
  25. # ********** End ********** #

第3关:变量与赋值

第一题

根据下面将摄氏温度转换为华氏温度的公式,在指定的位置编写程序,计算华氏温度值:F=59​C+32。

第二题

钟形高斯函数如下所示,请在指定位置编写程序,计算不同参数下的结果。 f(x)=2πs​1​e[−21​(sx−m​)2]

第三题

请在指定位置编写程序,按下面公式计算sinh(x)的值。 sinh(x)=2ex−e−x​

第四题

垂直向上抛出小球,设小球初始速度为v0​,则小球运动过程中离抛出点的高度距离公式为: y=v0​t−21​gt2 其中g是重力加速度,值为9.8,t表示时间。请在指定位置编写程序,计算在给定初速度下,所给时刻,小球的高度。

  1. import math
  2. def print_(x):
  3. if type(x) == float:
  4. print("%.4f" % x)
  5. else:
  6. print(x)
  7. # ********** Begin ********** #
  8. #第一题
  9. for temperature in [-271, -100, 0, 100, 1000]:
  10. #请在下面编写代码
  11. F = temperature*9/5+32
  12. #请不要修改下面的代码
  13. print_(F)
  14. print('\n***********************\n')
  15. #第二题
  16. for (x, s, m) in [(0,2,1),(1,2,2),(1,3,4),(1,10,100)]:
  17. # 请在下面编写代码
  18. fx = (2 * math.pi * s)**(-0.5) * math.exp(-0.5 * ((x - m)/s)**2)
  19. # 请不要修改下面的代码
  20. print_(fx)
  21. print('\n***********************\n')
  22. #第三题
  23. for x in [0.0, math.pi/2, math.pi, 3*math.pi/2, 2*math.pi, 5*math.pi/2, 3*math.pi]:
  24. # 请在下面编写代码
  25. sinh = (math.e**x-math.e**(-x))/2
  26. # 请不要修改下面的代码
  27. print_(sinh)
  28. print('\n***********************\n')
  29. #第四题
  30. g = 9.8
  31. for v0 in [10, 15, 20, 25, 30]:
  32. for t in [0.0, 0.5, 1, 1.5, 2, 2.5, 3]:
  33. # 请在下面编写代码
  34. y = v0*t-g*t**2/2
  35. # 请不要修改下面的代码
  36. print_(y)
  37. print('***********************')
  38. # ********** End ********** #

第4关:※解决实际问题※

第一题

在指定地方编写Python程序来计算、显示通过如下图所示的管道的水流速率。进入管道的水流速率的单位为英尺/秒,管道入口半径和出口半径的单位为英寸。

出口速率的计算公式为:vout​=vin​(rout​rin​​)2,其中vout​为出口速率,vin​为入口速率,rout​为管道出口半径,rin​为管道入口半径。

第二题

圆杆(如下图所示的自行车踏板)的最小半径(能够支撑一个人的脚所施加的压力,而不至于超过附着在曲柄臂链轮的压力)的计算公式为:r3=πSdp​,其中r为圆杆的半径(inches),d为曲柄臂的长度(inches),p为施加在踏板上的重量(lbs),S为每 lbs/in2上的压力。基于上述信息,在右侧指定位置编写一个Python程序根据用户输入来计算r的值。

基于上述信息,在指定位置编写一个Python程序根据用户输入来计算r的值。

第三题

编写出一个Python程序,在给定年限N和复合利率r的情况下,计算当贷款金额为P时,每月需还贷的金额,每月还贷公式为(1+r′)N′−1Pr′(1+r′)N′​,其中r'为月利息。(提示:r′=1200r​,N'=N*12)。

第四题

请在指定位置编写程序,将日期作为输入并打印该日期是一周当中的周几。用户输入有三个:m(月)、d(日)、y(年)。对于m,用1表示一月,2表示二月,以此类推。对于输出,0表示周日,1表示周一,2表示周二,以此类推。

对于阳历,如果给定m,d,y,则计算步骤大致如下(注意其中的除法是整数除法,详见下面的相关知识):

y0​=y−(14−m)/12 x=y0​+4y0​​−100y0​​+400y0​​ m0​=m+12(12(14−m)​)−2 d0​=(d+x+1231∗m0​​)%7

例如:2000年2月14日是周几? y0​=2000−1=1999 x=1999+1999/4−1999/100+1999/400=2483 m0​=2+12∗1−2=12 d0​=(14+2483+(31∗12)/12)%7=2500%7=1 答案:周一

  1. import math
  2. def print_(x):
  3. if type(x) == float:
  4. print("%.4f" % x)
  5. else:
  6. print(x)
  7. # ********** Begin ********** #
  8. #第一题
  9. for (vin, rin, rout) in [(10, 10, 5), (10, 10, 10), (20, 20, 5), (20, 20, 10)]:
  10. #请在下面编写代码
  11. vout = vin*(rin/rout)**2
  12. #请不要修改下面的代码
  13. print_(vout)
  14. print('\n***********************\n')
  15. #第二题
  16. for (d, p, S) in [(7,300,10000),(7,400,15000),(10,400,12000),(15,400,12000)]:
  17. # 请在下面编写代码
  18. r = (d*p/S/math.pi)**(1/3)
  19. # 请不要修改下面的代码
  20. print_(r)
  21. print('\n***********************\n')
  22. #第三题
  23. for (P, N, r) in [(300000,10,6.5), (300000,20,6.5),(300000,30,6.5)]:
  24. # 请在下面编写代码
  25. payPerMonth = (P*r/1200*(1+r/1200)**(N*12))/((1+r/1200)**(N*12)-1)
  26. # 请不要修改下面的代码
  27. print_(payPerMonth)
  28. print('\n***********************\n')
  29. #第四题
  30. for (m,d,y) in [(1,1,2017), (2,14,2017), (5,1,2017), (6,1,2017),(7,1,2017),(12,25,2017)]:
  31. # 请在下面编写代码
  32. y0 = y - (14 - m) // 12
  33. x = y0 + y0 // 4 - y0 // 100 + y0 // 400
  34. m0 = m + 12 * ((14 - m) // 12) - 2
  35. d0 = (d + x + (31 * m0) // 12) % 7
  36. # 请不要修改下面的代码
  37. print_(d0)
  38. print('\n***********************\n')
  39. #第五题
  40. for (x1,y1,x2,y2) in [(48.87,-2.33,37.8,-122.4),(40.89,116.50,37.8,-122.4),(40.89,116.50,48.87,-2.33)]:
  41. # 请在下面编写代码
  42. R = 69.1105 # 英里/度
  43. conversion_factor = 1.609 # 英里转换为公里的因子
  44. # 将角度转换为弧度
  45. x1_rad = math.radians(x1)
  46. x2_rad = math.radians(x2)
  47. y1_rad = math.radians(y1)
  48. y2_rad = math.radians(y2)
  49. # 计算大圆弧距离
  50. distance = R * math.acos(math.sin(x1_rad) * math.sin(x2_rad) + math.cos(x1_rad) * math.cos(x2_rad) * math.cos(y1_rad - y2_rad))/2/math.pi*360
  51. dist = distance * conversion_factor
  52. # 请不要修改下面的代码
  53. print_(dist)
  54. print('\n***********************\n')
  55. #第六题
  56. for (t, v) in [(32,10), (32, 100), (40, 10), (40, 100)]:
  57. # 请在下面编写代码
  58. w = 35.74+0.6215*t +(0.4275*t-35.75)*v**0.16
  59. # 请不要修改下面的代码
  60. print_(w)
  61. # ********** End ********** #

Python数字类型实验

第1关:数字类型选择题

  • 1、

    关于 Python 的数字类型,以下选项中描述错误的是( A):

    A、

    Python 语言中,复数类型的实数部分和虚数部分的数值都是浮点类型,复数的虚数部分通过后缀“I”或者“i”来表示。

    B、

    Python 语言要求所有浮点数必须带有小数部分

    C、

    数据9.0是个浮点数,不是整数。

    D、

    整数变量的值可以由多个字存储,从理论上讲整数的精度是无限的。

  • 2、

    以下正确的是(D )。

    A、

    整除运算51 // 24.0的结果是2。

    B、

    整除运算51.0 // 24的结果是2。

    C、

    整除运算51.0 // 24.0的结果是2。

    D、

    整除运算51 // 24的结果是2。

  • 3、

    关于Python赋值语句,以下选项中不合法的是 (D )

    A、

    x=1; y=1

    B、

    x=y=1

    C、

    x,y=y,x

    D、

    x=(y=1)

  • 4、

    input函数返回值的类型是(D)

    A、

    整数类型

    B、

    浮点数类型

    C、

    布尔类型

    D、

    字符串类型

  • 5、

    以下哪个是数学表达式

    ,

    转换的Python表达式( C)

    A、

    4p**2(R+h)**3/GT**2

    B、

    4*p**2*(R+h)**3/G*T**2

    C、

    4*p**2*(R+h)**3/G/T**2

    D、

    4*pow(p,2)*pow(R+h,3)/G*T*T

第2关:算式计算

第一题

,

第二题

,

第三题

,

  1. # ********** Begin ********** #
  2. #请在每一题的赋值语句内删除“代码”两字,填充题目所需的表达式
  3. #第一题
  4. x1 = 2.34/(1+257)
  5. print('{:.4f}'.format(x1))
  6. #第二题
  7. x2 = 1065/(24*15)
  8. print('{:.4f}'.format(x2))
  9. #第三题
  10. x3 = 1+(2/(3+(4/5)))
  11. print('{:.4f}'.format(x3))
  12. # ********** End ********** #

第3关:天天向上

任务描述

本关任务:设一年365天,如果以第一天的能力值为基数,记为1.0。再假设,一年中的每天都好好学习,每一天比前一天的能力提高 x% ,或者一年中的每天都放松自己,每一天比前一天的能力减少x%。请问,两种情况在一年下来的能力值相差多少?

  1. #s1-5 天天向上
  2. x = input('请输入能力值变化率:')
  3. # 请在下面添加代码
  4. ###### Begin ######
  5. dayup = (1 + float(x)/100) ** 365
  6. daydown = (1 - float(x)/100) ** 365
  7. difference = dayup - daydown
  8. ####### End #######
  9. print("向上:{:.2f},向下:{:.2f},能力差距:{:.2f}".format(dayup,daydown,dayup-daydown))

第4关:计算某日期是星期几

任务描述

本关任务:请编写程序,分别输入一个日期的年、月、日数值,输出显示该日期是星期当中的星期几。 假设三个输入数据为:y(年)、m(月)、d(日)。对于m,用1表示一月,2表示二月,依此类推。对于输出,0表示星期日,1表示星期一,2表示星期二,依此类推。计算公式如下:

,

例如:2021年3月1日是星期几? y0 = 2021 - (14-3)//12 = 2021 x = 2021 + 2021//4 - 2021//100 +2020//400 = 2511 m0 = 3 + 12*((14-3)//12)-2 = 1 w = (1 + 2511 + (31*1) // 12) % 7 = 1 答案为星期1

  1. # s1-6 计算某日期是星期几
  2. y = eval(input()) #获取年份
  3. m = eval(input()) #获取月份
  4. d = eval(input()) #获取日
  5. # 请在下面添加代码
  6. ###### Begin ######
  7. y0 = y - (14 - m) // 12
  8. x = y0 + y0 // 4 - y0 // 100 + y0 // 400
  9. m0 = m + 12 * ((14 - m) // 12) - 2
  10. w = (d + x + (31 * m0) // 12) % 7
  11. ####### End #######
  12. print('{}年{}月{}日是星期{}'.format(y, m, d, w))

第5关:判断回文数

任务描述

本关任务:设n是任一自然数,如果n的数字各位数字反向排列所得自然数与n相同,则n被称为回文数。编写一个小程序从键盘输入一个5位数,判断其是否为回文数。

相关知识

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,称为回文数(palindrome number)。 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=12321,则称n为一回文数;但若n=12345,则n不是回文数。

  1. #s1-7 判断回文数
  2. n = eval(input()) #输入数据
  3. # 请在下面添加代码
  4. ###### Begin ######
  5. k1 = n//10000
  6. k5 = n%10
  7. k2 = n//1000%10
  8. k4 = n//10%10
  9. ####### End #######
  10. if k1 == k5 and k2 == k4:
  11. print(n,"是回文数")
  12. else:
  13. print(n,"不是回文数")

第6关:计算三角形面积

任务描述

本关任务:编写一个能计算三角形面积小程序。 输入三角形两角B和C及夹边a,计算并输出三角形的面积。相应公式为:2sin(B+C)a2sinBsinC​。

相关知识

为了完成本关任务,你需要掌握:1.Python内置数学库的使用。

编程要求

根据提示,在右侧编辑器Begin-End 之间补充代码,根据输入的两个角(单位为角度)B、C和两角间的夹边a,计算三角形面积并输出显示,保留两位小数。

解答提示: (1) 需要引入math库。 (2) 角度要转为弧度。 (3) 输出用字符串格式化format()函数,保留两位小数。

  1. #s1-8 计算三角形面积
  2. B = eval(input()) #三角形一个角的度数,角度
  3. C = eval(input()) #三角形另一个角的度数,角度
  4. a = eval(input()) #两个角度之间的夹边
  5. # 请在下面添加代码
  6. ###### Begin ######
  7. import math
  8. B_rad = math.radians(B)
  9. C_rad = math.radians(C)
  10. S = (a**2 * math.sin(B_rad) * math.sin(C_rad)) / (2 * math.sin(B_rad + C_rad))
  11. S = round(S, 2)
  12. print("三角形的面积={:.2f}".format(S))
  13. ####### End #######

第7关:math库函数应用

任务描述

本关任务:编写一个能计算

,

的小程序。

  1. import math #引入math库函数
  2. x = eval(input()) #输入x
  3. ## 补充代码开始
  4. y = (2**x+math.pi**x-math.log(math.e**2+x))/math.atan(x)
  5. ## 补充代码结束
  6. print(round(y,5)) #输出保留5位小数的y

第8关:Python内置函数应用

任务描述

本关任务:给定一组数x1~x4,先将x1用round()函数进行四舍五入,保留到小数点后3位,将x2转换为整数;然后求新的这组数的最小值和最大值,并输出这些结果。

  1. # 内置函数应用实训
  2. x1 = eval(input())
  3. x2 = eval(input())
  4. x3 = eval(input())
  5. x4 = eval(input())
  6. ## 补充代码开始
  7. x1 = round(x1,3)
  8. x2 = int(x2)
  9. a = min(x1,x2,x3,x4)
  10. b = max(x1,x2,x3,x4)
  11. print("最小值="+str(a)+"\n最大值="+str(b))
  12. ## 补充代码结束

总结:

基本操作,建议熟练,菜就多练(doge)

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜