湖南大学python头歌实训-简单计算

这是一个关于Python编程的实训教程,涵盖了从基础的数字类型实验到解决实际问题,如算式计算、能力提升计算、日期判断、回文数检测、三角形面积计算等。实训内容包括Python表达式转换、数学函数运用、变量赋值和简单计算问题的求解,旨在提升学员的Python编程能力和解决实际问题的能力。
摘要由CSDN通过智能技术生成

实验2 Python数字类型实验

第1关:算式计算

任务描述
本关任务:本关实现将数学算式转换成Python表达式并计算结果。

相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处中填写代码,将文字“代码”删除,填写上正确的表达式的代码,实现用Python计算下面各算式的值并输出:
第一题
,

第二题
,

第三题
,

def myprint(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)
# ********** Begin ********** #
#请在每一题的myprint语句内删除“代码”两字,填充题目所需的表达式
#第一题
m=2.34/(1+257)
myprint(m)

#第二题
n=1065/(24*15)
myprint(n)

#第三题
q=1+2/(3+4/5)

myprint(q)
# ********** End ********** #

第2关:天天向上

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

相关知识
Python中的乘方运算

编程要求
根据提示,在右侧编辑器补充代码,如果初始能力值为1.0,连续365天后能力值差距是多少?计算并输出该值。

测试说明
平台会对你编写的代码进行测试:

测试输入:0.1
预期输出:
请输入能力值变化率:向上:1.44,向下:0.69,能力差距:0.75

测试输入:0.2
预期输出:
请输入能力值变化率:向上:2.07,向下:0.48,能力差距:1.59

提示:
"请输入能力值变化率:"是给定语句x = input(‘请输入能力值变化率:’)输出显示的内容,本平台在比对结果时会将所有输出内容进行文本比对。


###代码开始
while 1:
    dm=input("股票代码")
    if dm[:2]=='60':
        print('沪市A股')
    elif dm[:3]=='000' and dm!='000000':
        print('深市A股')
    elif dm[:3]=='300':
        print('创业板')
    elif dm[:3]=='002':
        print('中小板')
    elif dm[:3]=='688':
        print('科创板')
    elif dm=='000000':
        break
    else:
        print('错误编码')
###代码结束

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

本关任务:请编写程序,分别输入一个日期的年、月、日数值,输出显示该日期是星期当中的星期几。
假设三个输入数据为: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.算术运算符//、%、+、-等,2.表达式是运算优先级。

编程要求
根据提示,在右侧编辑器Begin-End 之间补充代码,计算输入的y年m月d日对应日期是星期几(用变量w表示)。请勿改动 Begin-End 区间之外的代码。

测试说明
平台会对你编写的代码进行测试:

测试输入:2021,3,1
预期输出:
2021年3月1日是星期1

# s1-6 计算某日期是星期几
y = eval(input())   #获取年份
m = eval(input())   #获取月份
d = eval(input())   #获取日
# 请在下面添加代码
###### Begin ######
y0=y-(14-m)//12
x=y0+y0//4-y0//100+y0//400
m0=m+12*((14-m)//12)-2
w=(d+x+(31*m0)//12)%7

####### End #######
print('{}年{}月{}日是星期{}'.format(y, m, d, w))

第4关:判断回文数

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

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

编程要求
根据提示,在右侧编辑器补充代码,判断输入的5位数是否为回文数。请用k1表示最高位万上是数字,k2表示千位上的数字,k3表示百位,k4表示十位,k5表示个位上的数字。要求用数字类型的算术运算//和%等实现代码。

测试说明
平台会对你编写的代码进行测试:

测试输入:12321
预期输出:
12321 是回文数

测试输入:12345
预期输出:
12345 不是回文数

#s1-7 判断回文数
n = eval(input())      #输入数据
# 请在下面添加代码
###### Begin ######
k1=n//10000
k2=n%10000//1000
k4=n%100//10
k5=n%10

####### End #######
if k1 == k5 and k2 == k4:
    print(n,"是回文数")
else:
    print(n,"不是回文数")

第5关:计算三角形面积

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

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

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

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

测试说明
平台会对你编写的代码进行测试:

测试输入:
60
60
10
预期输出:
三角形的面积=43.30

#s1-8 计算三角形面积
B = eval(input())   #三角形一个角的度数,角度
C = eval(input())   #三角形另一个角的度数,角度
a = eval(input())   #两个角度之间的夹边
# 请在下面添加代码
###### Begin ######
import math
b=math.sin(B*math.pi/180)
c=math.sin(C*math.pi/180)
m=math.sin((B+C)*math.pi/180)
x=a*a*b*c/2/m
print("三角形的面积={:.2f}".format(x))


####### End #######

第二章-Python语言基础-2.1简单计算问题的求解

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

任务描述
本关主题是具体值组成的表达式的建模,实践如何将这样的数学表达式转换成Python表达式。

本关任务:仔细阅读背景知识,找到数学运算符与Python数值运算符之间的对应关系,将下面数学表达式转换为Python表达式,并用print语句打印结果。

例如,对数学表达式1+1,对应的Python表达式和结果输出语句为print(1+1)。

请用print语句输出下列数学表达式的值,或实际问题的答案。

相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,完成如下要求:

第一题
求1234除以123的余数。

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

第三题
123/12的商。

第四题
123/12的值。

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

第六题
3
3
+4
3
+5
3
=6
3
是否成立?

第七题
分别计算1.02
365
和1.01
365
,可知“多百分之一努力,得千分收成”。

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

测试说明
直接输出每道题的答案,每个答案占一行,中间不能空行。

注意:请不要直接print最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。

def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)
# ********** Begin ********** #
#请在每一题的print语句内完成题目所需的表达式

#第一题
a=1234%123
print_(a)

#第二题
b=90*365*24*60*60
print_(b)

#第三题
c=123//12
print_(c)

#第四题
d=123/12
print_(d)

#第五题
e=1e9/60/60/24/365
print_(e)

#第六题:要求编写两式比较的表达式,输出为True或False
f=3**3+4**3+5**3==6**3
print_(f)

#第七题
g=(1.02)**365
h=(1.01)**365
print_(g)
print_(h)

#第八题:要求编写两式比较的表达式,输出为True或False
i=(1.01)**3*(0.99)**2>1.01
print_(i)
# ********** End ********** #

第2关:Python数学函数

任务描述
本关任务:仔细阅读下面的相关知识,找到数学函数与Python数学函数之间的对应关系,将下面数学表达式转换为Python表达式,并用print语句打印结果。

相关知识
本关主题是对包含特殊运算符的表达式的建模,实践如何利用Python数学函数将这样的数学表达式转换成Python表达式。

Python一个很吸引人的特点是其外围库非常丰富。math模块中定义了非常丰富的数学函数,可以在命令提示符下运行下述命令查看所有预定义的数学函数:

import math
help(math)
或:

import math
dir(math)
下面列出一些常用的数学函数,请仔细阅读,通过完成本关任务,了解和掌握math库中数学函数的使用。

abs(x):返回整数的绝对值,如abs(-10)返回10。

ceil(x):返回数字的向上取整,如math.ceil(4.1)返回5。

exp(x):返回e的x次幂,如math.exp(1)返回2.718281828459045。

fabs(x):返回浮点数的绝对值,如math.fabs(-10) 返回10.0。

floor(x):返回数字的向下取整,如math.floor(4.9)返回4。

log(x,base):如math.log(math.e,math.e)返回1.0,math.log(100,10)返回2.0。

log10(x):返回以10为基数的x的对数,如math.log10(100)返回2.0。

max(x1,x2,…):返回给定参数的最大值,参数可以为序列。

min(x1,x2,…):返回给定参数的最小值,参数可以为序列。

modf(x):以元组的形式返回,(小数部分,整数部分)。两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y):x
y
运算后的值。

round(x [,n]):返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

sqrt(x):返回数字x的平方根,返回类型为实数,如math.sqrt(4)返回2.0。

acos(x):返回x的反余弦弧度值。

asin(x):返回x的反正弦弧度值。

atan(x):返回x的反正切弧度值。

atan2(y, x):返回给定的X及Y坐标值的反正切值。

cos(x):返回x的弧度的余弦值。

hypot(x, y):返回欧几里德范数sqrt(x
2
+y
2
)。

sin(x):返回x弧度的正弦值。

tan(x):返回x弧度的正切值。

degrees(x):将弧度转换为角度,如degrees(math.pi/2) , 返回90.0。

radians(x):将角度转换为弧度

除了上述常用的数学函数,math库中还定义了两个常用的数学常量:

pi——圆周率,一般以π来表示。

e——自然常数。

一般有两种常用方法来使用math中的函数:

import math
print(math.abs(3))
或:

from math import *
print(abs(3))
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,本关需要你编程计算的数学表达式或实际问题包括以下五题。

第一题
分别计算并输出π
4

5
、e
6
的值,以及二者的差。

第二题
分别计算
4
π

与4arctan(
5
1

)−arctan(
239
1

)的值,并观察其差异。

第三题
分别计算并输出cos(
17


)、
16
1

[−1+
17

+
2(17−
17

)

+2
17+3
17


2(17−
17

)

−2
2(17+
17

)


],及二者的差。

第四题
计算
2
1+
5


+2


2
1+
5


第五题
分别计算并输出sinh(0.25)与
2
(e
0.25
−e
−0.25
)

的值,查看并比较二者的大小。

测试说明
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python代码即可。

from math import *

def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)
# ********** Begin ********** #
#请在每一题的print语句内完成题目所需的表达式

#第一题
import math
a=math.pi
b=math.e
x=a**4+a**5
y=b**6
z=x-y
print_(x)
print_(y)
print_(z)

#第二题

print_(math.pi/4)
print_(4*math.atan(1/5)-math.atan(1/239))

#第三题
x=math.cos(2*math.pi/17)#这里根本不用转换

a=math.sqrt(17)
b=math.sqrt(2*(17-a))
d=math.sqrt(2*(17+a))
c=2*math.sqrt(17+3*a-b-2*d)
y=(-1+a+b+c)/16
z=x-y
print_(x)

print_(y)
print_(z)

#第四题
x=(1+math.sqrt(5))/2
y=math.sqrt(x+2)-x
print_(y)

#第五题
x=sinh(0.25)
y=(math.e**0.25-math.e**(-0.25))/2
print_(x)
print_(y)

# ********** End ********** #

第3关:变量与赋值

任务描述
仔细阅读下面的介绍,理解变量的定义、其与值的关联关系,以及赋值语句的语法与功能,将下面数学表达式转换为Python表达式,并用print语句打印结果。

相关知识
本关主题是实践和体验Python变量的用途,学会使用Python赋值语句实现表达式值的传递。

在前面两关中,所有表达式都由具体值构成,如17、
17


等,这些值又称为常量,因为其值在程序运行过程中不能再被改变。与此对应,Python的变量的值在程序运行过程中是可被修改的。

现实世界中大部分表达式中的运算数是可变的,并不是固定成一个值的。如求圆面积公式s=πr
2
,其中的r是可变的,对不同半径的圆,求面积的方法是一样的,只是r的值有差别。那么,需要变量和赋值语句的帮助,来这类表达式转换为Python表达式和语句。

此外,需要主要的是,数学公式s=πr
2
中,π和r之间省略了乘号,在数学上这是允许的,但是转换成Python表达式时,不能省略,否则会产生语法错。

可将变量看作是为某个对象起的名字,它提供了名字与对象关联的方式。考虑下面的代码:

mypi=3.1415926
r=1.2
length=2mypiradius
r=24.3
这段代码首先用名字pi和r分别与不同的float类型对象3.1415926和1.2关联。然后,用名字length与第三个float类型对象2mypiradius关联,如下图(a)所示。如果该程序继续执行语句r=24.3,则名字r将与另一个float类型对象24.3关联,如下图(b)所示。

请记住,在Python中,变量是而且仅是一个名字而已。赋值语句用赋值运算符=将右边符号(常量、变量、表达式、函数调用等)所代表的对象与左边的名字进行关联。这种关联不是一对一的,因此,一个对象可以有一个、多个,甚至没有名字与它关联。

Python语法规定变量名(又称为标识符)可以包含大写字母、小写字母和数字(但不能以数字开头),以及特殊字符_(下划线)。Python中标识符是区分大小写的,例如,R和r是不同的标识符。

Python保留了一些标识符作为保留关键字,这些关键字具有特定含义,不能被用作变量名,包括:and、as、assert、break、class、continue、def、del、elif、else、except、exec、finally、for、from、global、if、import、in、is、lambda、not、or、pass、print、raise、return、try、with、while、yield等。

Python允许多重赋值,语句x, y = 2, 3表示将x与2关联,y与3关联。多重赋值带来很多方便,例如可用一条语句实现两个变量值的交换,运行下面的代码,可以看到变量x和y的值进行了交换:

x, y = 2, 3
x, y = y, x
print(‘x =’, x)
print(‘y =’, y)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,请编程输出以下数学表达式或实际问题的最终答案:

第一题
根据下面将摄氏温度转换为华氏温度的公式,在指定的位置编写程序,计算华氏温度值:F=
5
9

C+32。

第二题
钟形高斯函数如下所示,请在指定位置编写程序,计算不同参数下的结果。
f(x)=
2πs

1

e
[−
2
1

(
s
x−m

)
2
]

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

第四题
垂直向上抛出小球,设小球初始速度为v
0

,则小球运动过程中离抛出点的高度距离公式为:
y=v
0

t−
2
1

gt
2

其中g是重力加速度,值为9.8,t表示时间。请在指定位置编写程序,计算在给定初速度下,所给时刻,小球的高度。

测试说明
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python代码即可。

注意:请不要直接print最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。

import math

def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)
# ********** Begin ********** #
#第一题
for temperature in [-271, -100, 0, 100, 1000]:
    #请在下面编写代码
    F=(9/5)*temperature+32
    #请不要修改下面的代码
    print_(F)

print('\n***********************\n')

#第二题
for (m, s, x) in [(0,2,1),(1,2,2),(1,3,4),(1,10,100)]:
    # 请在下面编写代码
    a=-(((x-m)/s)**2)/2
    b=math.sqrt(2*math.pi*s)
    fx=((math.e)**a)/b

    # 请不要修改下面的代码
    print_(fx)

print('\n***********************\n')

#第三题
for x in [0.0, math.pi/2, math.pi, 3*math.pi/2, 2*math.pi, 5*math.pi/2, 3*math.pi]:
    # 请在下面编写代码
    sinh=((math.e)**x-(math.e)**(-x))/2

    # 请不要修改下面的代码
    print_(sinh)


print('\n***********************\n')

#第四题
g = 9.8
for v0 in [10, 15, 20, 25, 30]:
    for t in [0.0, 0.5, 1, 1.5, 2, 2.5, 3]:
        # 请在下面编写代码
        y=v0*t-g*t*t/2
        # 请不要修改下面的代码
        print_(y)
    print('***********************')
# ********** End ********** #

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

任务描述
本关主题是综合利用前三关掌握的知识,解决实际问题。这些问题来源于实际生活的各个方面,通过问题的解决,希望对计算思维有一定的体验和感悟。

本关任务:完成编程要求的相关题目。

相关知识
数据类型
对象是Python程序操作的核心,每个对象都有一个类型,它规定了程序可以对该类型对象进行哪些操作。类型分为标量的和非标量的。标量对象是不可分割的单个对象。非标量对象——例如字符串(String)——通常不是单个的整体,而是有可分解的内部结构的。

Python有4种类型的标量对象:

int对象用来表示整数。int类型的对象可通过字面直接看出,如3、9001或-72等。

float对象用于表示实数。float类型的对象也可通过字面很容易地看出来,如23.0、9.48或-72.28。也可用科学计数法表示float类型的对象,例如,3.9E3代表3.9×10
3
,等同于3900。

bool是用来表示布尔值,即“真”或“假”,在Python中分别用常量True和False表示。

None对象表示空值。

对象和运算符可以构成表达式,表达式运算后会得到一个值,称为表达式的值,这个值就是具有某种类型的一个对象。例如,表达式7+2表示int类型的对象9,而表达式7.0+2.0表示float类型的对象9.0。Python中==运算符用于比较两个表达式的值是否相等,而!=运算符用于比较两个表达式的值是否不相等。

算术运算符
int和float类型的运算符及其说明如下所示:

i+j:表示对象i和j的和。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

i-j:表示对象i与j的差。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

i*j:表示对象i与j的乘积。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

i//j:表示整数除法。例如8//2的值为int类型4,9//4的值为int类型2。即整数除法只取整数商,去掉小数部分。

i/j:表示对象i除以对象j,无论i和j的类型是int还是float,结果都为float,如10/4结果为2.5。

i%j:表示int对象i除以int对象j的余数,即数学的“模”运算。

i**j:表示对象i的j次方。如果i和j都是int类型,运算结果为int类型,如果至少有一个为float类型,结果为float类型。

比较运算符>(大于)、>=(大于等于)、<(小于)和<=(小于等于)的含义与其在数学上的含义一样。

算术运算符通常有优先级。例如,表达式x+y*2的计算过程是先算y乘以2,然后将结果与x相加。计算的顺序可以使用括号来改变,例如,(x+y)*2表示先计算x加y,然后将结果乘以2。

bool类型上的运算有:

a and b:与(and)运算,如果bool类型对象a和b都为True,结果为True,否则结果为False。

a or b:或(or)运算,如果bool类型对象a和b至少有一个为True,结果为True,否则结果为False。

not a:非(not)运算,如果bool类型对象a为True,结果为False;如果为False,结果为True。

)
N

=
1200
r

,N’=N*12)。

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

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

y
0

=y−(14−m)/12
x=y
0

+
4
y
0



100
y
0


+
400
y
0

m
0

=m+12(
12
(14−m)

)−2
d
0

=(d+x+
12
31∗m
0


)%7

例如:2000年2月14日是周几?
y
0

=2000−1=1999
x=1999+1999/4−1999/100+1999/400=2483
m
0

=2+12∗1−2=12
d
0

=(14+2483+(31∗12)/12)%7=2500%7=1
答案:周一

第五题
编写一个计算并打印地球上两点的大圆弧距离的Python程序。该程序接收用户的4个输入x
1

,y
1

,x
2

,y
2

(分别表示地球上两个点的维度和经度,单位是度)。大圆弧距离计算公式为(单位是英里):

d=R∗arccos(sin(x
1

)∗sin(x
2

)+cos(x
1

)∗cos(x
2

)∗cos(y
1

−y
2

))

其中R=69.1105英里,1英里=1.609公里。请在指定位置编写程序,所给坐标之间的大圆弧距离,单位是公里。(注意,sin、cos函数输入是弧度值,而程序中给的是角度值,需要转换。arccos结果是弧度值,需要转化成角度值)。

第六题
根据给定的温度t(华氏温度)和风速v,可以计算出风寒指数,公式如下:

w =35.74+0.6215 t +(0.4275 t −35.75) v
0.16

请在指定位置编写程序,根据所给的温度和风速,计算风寒指数。

测试说明
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python代码即可。

请不要直接print最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。

import math

def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)
# ********** Begin ********** #
#第一题
for (vin, rin, rout) in [(10, 10, 5), (10, 10, 10), (20, 20, 5), (20, 20, 10)]:
    #请在下面编写代码
    vout=vin*(rin/rout)**2#注意乘号
    #请不要修改下面的代码
    print_(vout)

print('\n***********************\n')

#第二题
for (d, p, S) in [(7,300,10000),(7,400,15000),(10,400,12000),(15,400,12000)]:
    # 请在下面编写代码
    r=(d*p/(math.pi*S))**(1/3)#如何转换三次方
    # 请不要修改下面的代码
    print_(r)

print('\n***********************\n')

#第三题
for (P, N, r) in [(300000,10,6.5), (300000,20,6.5),(300000,30,6.5)]:
    # 请在下面编写代码
    r1=r/1200
    N1=N*12
    payPerMonth=(P*r1*(1+r1)**N1)/((1+r1)**N1-1)
    # 请不要修改下面的代码
    print_(payPerMonth)


print('\n***********************\n')

#第四题

for (m,d,y) in [(1,1,2017), (2,14,2017), (5,1,2017), (6,1,2017),(7,1,2017),(12,25,2017)]:
    # 请在下面编写代码
    y0=y-(14-m)//12
    x=y0+y0//3-y0//100+y0//400
    m0=m+12*((14-m)//12)-2
    d0=(d+x+31*m0//12)%7
    # 请不要修改下面的代码
    print_(d0)


print('\n***********************\n')

#第五题

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)]:
    # 请在下面编写代码
    
    #sin(x弧度)
    #x/180*math.pi
    #s1=math.sin(x1/180*math.pi)
    #s2=math.sin(x2/180*math.pi)
    R=69.1105*1.609
    #c1=math.cos(x1/180*math.pi)
    #c2=math.cos(x2/180*math.pi)
    #c12=math.cos((y1-y2)/180*math.pi)
    x1=x1*math.pi/180
    x2=x2*math.pi/180
    y1=y1*math.pi/180
    y2=y2*math.pi/180
    dist=R*math.acos(math.sin(x1)*math.sin(x2)+math.cos(x1)*math.cos(x2)*math.cos(y1-y2))
    dist=dist*180/math.pi

    # 请不要修改下面的代码
    print_(dist)

print('\n***********************\n')

#第六题

for (t, v) in [(32,10), (32, 100), (40, 10), (40, 100)]:
    # 请在下面编写代码
    w=35.74+0.6215*t+(0.4275*t-35.75)*(v**0.16)#hh又忘了乘号
    # 请不要修改下面的代码
    print_(w)
# ********** End ********** #

第三章:Python编程基础-基本语法(HNU)

第1关:数据输入与输出

任务描述
本关任务:根据题目要求输出表达式的值,掌握python数据的输入与输出问题。

相关知识
要完成本关,你需要掌握 print( ),input(),eval()函数的用法
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
参数
objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep – 用来间隔多个对象,默认值是一个空格。
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file – 要写入的文件对象。
flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
例如:

print(1)
1
print(“Hello World”)
Hello World

a = 1
b = ‘runoob’
print(a,b) #默认自动换行
1 runoob
print(“aaa”“bbb”)
aaabbb
print(“aaa”,“bbb”)
aaa bbb
print(“www”,“runoob”,“com”,sep=“.”) # 设置间隔符
www.runoob.com
x,y=12,34
print(x) #默认自动换行
12
print(y)#默认自动换行
34
print(x,y,end=‘’) #通过参数end 设置结尾符可控制一行显示多个数据
12 34
input()以字符串的方式获取用户输入,但无法直接参与算术运算
例如:
x = input()
4.5
type(x)
<class ‘str’>
x=input()
12
y=input()
34
print(x+y)
1234

eval(<字符串>):将输入的字符串转变成python语句,可实现算术运算

x,y=eval(input())
12,34
print(x+y)
46

编程要求
根据提示,在右侧编辑器补充代码,完成如下程序的编写。
第一题
在屏幕上输出字符串:hi, “how are you” ,I’m fine and you
第二题
从键盘输入两个整数,计算两个数相除的商与余数
假设输入12,5
输出为 2 2
第三题
在屏幕上 输入一个三位数输出该数的个位、十位和百位数字
假设输入125
输出为 5 2 1
第四题
已知a=1.234567,请按指定格式输出a的值1.按保留小数点后3位,2.指数形式,尾数部分保留小数点2位 ,输出格式:采用一行输出,中间用,隔开
第五题
请问一个硬盘的存储容量为500GB, 请问该硬盘最多可存放多少个字节的数据量
第六题
计算并判断,是否大于1.01,输出判断结果。可知“三天打鱼,两天晒网,终将一无所获”。

# -*- coding: utf-8 -*-
"""
Created on Sun Sep  6 21:39:58 2020

@author: hzh
"""
 
#第一题:在屏幕上输出字符串:hi, "how are you" ,I'm fine and you 
#-------begin-------------#
print("hi, \"how are you\" ,I'm fine and you")
 
 
#-------ends--------------# 

#第二题:从键盘输入两个整数,计算两个数相除的商与余数
x,y = eval(input())
#-------begin-----------
a=float(x/y)
print(a,x%y)

 

#第三题:在屏幕上输入一个三位数输出该数的个位、十位和百位数字
x = eval(input())
#-------begin-----------
a=x%10
b=x//10%10
c=x//100%100
print(a,b,c)#注意中间用逗号隔开,就有一个空格

'''
print("aaa""bbb")
aaabbb
print("aaa","bbb")
aaa bbb
'''
#-------ends------------ 
 
#第四题:已知a=1.234567,b=0.000321 .按保留小数点后3位输出a,2.按指数形式输出 b
a,b = 1.234567, 0.00321
#-------begin-----------
print('a={:.3f},b={:.2e}'.format(a,b))#注意中间是句号不是逗号,指数是用e
#format怎么表达的(a,b)
 
 
#-------ends------------  
     
#第五题:请问一个硬盘的存储容量为500GB, 请问该硬盘最多可存放多少个字节的数据量
#-------begin-----------
     
print(500*1024*1024*1024)

#-------ends------------           

#第六题:计算并判断!![,](/api/attachments/1152943),是否大于1.01,输出判断结果True,False。    
#-------begin-----------
 
x=(1.01**3)*(0.99**2)>1.01
print(x)
#-------ends------------       


第2关:表达式的计算问题

任务描述
本关任务:利用math库的导入与math库中数学函数的,将下面数学表达式转换为Python表达式,并用print语句打印结果。

相关知识
为了完成本关任务,你需要掌握:1.如何在python中导入math库,2.math库中常用函数的使用
下面列出一些常用的数学函数,请仔细阅读,通过完成本关任务,了解和掌握math库中数学函数的使用。

abs(x):返回整数的绝对值,如abs(-10)返回10。

ceil(x):返回数字的向上取整,如math.ceil(4.1)返回5。

exp(x):返回e的x次幂,如math.exp(1)返回2.718281828459045。

fabs(x):返回浮点数的绝对值,如math.fabs(-10) 返回10.0。

floor(x):返回数字的向下取整,如math.floor(4.9)返回4。

log(x,base):如math.log(math.e,math.e)返回1.0,math.log(100,10)返回2.0。

log10(x):返回以10为基数的x的对数,如math.log10(100)返回2.0。

max(x1,x2,…):返回给定参数的最大值,参数可以为序列。

min(x1,x2,…):返回给定参数的最小值,参数可以为序列。

modf(x):以元组的形式返回,(小数部分,整数部分)。两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y):x
y
运算后的值。

round(x [,n]):返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

sqrt(x):返回数字x的平方根,返回类型为实数,如math.sqrt(4)返回2.0。

acos(x):返回x的反余弦弧度值。

asin(x):返回x的反正弦弧度值。

atan(x):返回x的反正切弧度值。

atan2(y, x):返回给定的X及Y坐标值的反正切值。

cos(x):返回x的弧度的余弦值。

hypot(x, y):返回欧几里德范数sqrt(x
2
+y
2
)。

sin(x):返回x弧度的正弦值。

tan(x):返回x弧度的正切值。

degrees(x):将弧度转换为角度,如degrees(math.pi/2) , 返回90.0。

radians(x):将角度转换为弧度

除了上述常用的数学函数,math库中还定义了两个常用的数学常量:

pi——圆周率,一般以π来表示。

e——自然常数。

一般有两种常用方法来使用math中的函数:

import math
print(math.abs(3))
或:

from math import *
print(abs(3))
编程要求
根据提示,在右侧编辑器Begin-End处补充代码,本关需要你编程计算的数学表达式或实际问题包括以下五题。

第一题
分别计算并输出π
4

5
、e
6
的值,以及二者的差。
#####第二题
分别计算
4
π

与4arctan(
5
1

)−arctan(
239
1

)的值,并观察其差异。

第三题
分别计算并输出sinh(0.25)与
2
(e
0.25
−e
−0.25
)

的值,查看并比较二者的大小。

第四题
已知 h,v0,g,θ = 1.9, 14, 9.8, 40 #θ初始化为角度
计算并输出表达式,的值 ,其中θ为弧度值。

第五题
已知x为弧度数,从键盘输入
计算公式, 并输出结果
提示说明:也可以用exp(sin(x))函数求解,

测试说明

# -*- coding: utf-8 -*-
"""
Created on Tue Sep  8 00:23:44 2020
表达式的计算问题
@author: hzh
"""
#参考答案
import math
def print_(x):
    if type(x) == float:
        print("%.4f" % x)
    else:
        print(x)
# ********** Begin ********** #
#请在每一题的print语句内完成题目所需的表达式

#第一题
x=(math.pi)**4+(math.pi)**5
y=(math.e)**6
z=x-y
print_(x)
print_(y)
print_(z)

#第二题
x=math.pi/4
y=4*math.atan(1/5)-math.atan(1/239)
print_(x)
print_(y)

#第三题
x=math.sinh(0.25)
y=((math.e)**(0.25)-(math.e)**(-0.25))/2
print_(x)
print_(y) 

#第四题
h,v0,g,θ = 1.9, 14, 9.8, 40  #变量赋值
θ=math.radians(θ) 
a=math.sqrt(4*(v0**2)*(math.sin(θ)**2)+8*g*h)
b=(2*v0*math.sin(θ)+a)/(2*g)#注意(2*g)的括号
print_(b)  

#第五题

θ = eval(input()) 
a=math.fabs(math.cos(θ*math.pi/180))*(math.e**math.sin(θ*math.pi/180))
b=math.log(a,math.e)
print_(b)
#输入角度值 




# ********** End ********** #

 

第3关:简单计算问题的求解

任务描述
利用python基础解决简单的表达式的计算应用问题。

相关知识
为了完成本关任务,你需要掌握:

Python 变量和常量以及它们的命名规则;
Python 的整型和浮点型数据;
Python 中的算术表达式;
使用 print 打印输出;
给代码添加注释。
编程要求
案例演示
第一题:无输入求多边形的面积
计算一个由正方形和等腰三角形组成的多边形的面积,其中正方形边长 4 厘米,等腰三角形底边为正方形的一条边,其到对角顶点的高为 2.6 厘米。
说明:等腰三角形的顶点在正方形的外侧, 多边形的面积包括正方形的面积与三角形面积之和。
提示:假设我们现在有一个长方形,已知其长为 2.5cm,宽为 2cm,我们现在要计算该长方形的面积,可以使用以下代码来实现:

rectangle_length = 2.5 # 声明浮点型变量 rectangle_length 用于表示长方形边长,并赋值 2.5
rectangle_width = 2 #声明整型变量 rectangle_width 用于表示长方形边长,并赋值 2
area = rectangle_length * rectangle_width # 计算长方形面积,并将结果赋值给 area
print(area) # 输出长方形面积
输出:

5
第二题:根据公式,将摄氏温度转换为华氏温度,摄氏温度从键盘输入
例如输入:100
212.00
####编程要求

第三题:钟形高斯函数如下所示,请在指定位置编写程序,计算不同参数下的结果。,
例如输入:0,2,1 #m,s,x分别赋值为0,2,1
输出:0.25
第四题:编写一个计算并打印地球上两点的大圆弧距离的Python程序。该程序接收用户的4个输入x1,y1,x2,y2 (分别表示地球上两个点的维度和经度,单位是度)。大圆弧距离计算公式为(单位是英里):
,
其中R=69.1105英里,1英里=1.609公里。请在指定位置编写程序,所给坐标之间的大圆弧距离,单位是公里。(注意,sin、cos函数输入是弧度值,而程序中给的是角度值,需要转换。arccos结果是弧度值,需要转化成角度值)。
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
例如输入:48.87,-2.33,37.8,-122.4
输出:8716.97

# -*- coding: utf-8 -*-
"""
Created on Mon Sep  7 23:31:38 2020
 任务:计算一个由正方形和等腰三角形组成的多边形的面积,其中正方形边长4厘米
,等腰三角形底边为正方形的一条边,其到对角顶点的高为2.6厘米。
@author: hzh
"""
import math
def print_(x):
    if type(x) == float:
        print("%.2f" % x)
    else:
        print(x)
 
#第一题:无输入求多边形的面积
square_length = 4  # 声明整型变量square_length用于表示正方形边长,并赋值 4
triangle_h = 2.6   # 声明浮点型变量triangle_h用于表示三角形底边上的高,并赋值 2.6
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 第1步:计算正方形面积,赋值给变量area_square
area_square=square_length**2
# 第2步:计算等腰三角形面积,赋值给变量area_triangle
area_triangle=square_length*triangle_h/2
# 第3步:计算多边形面积,即正方形面积和等腰三角形面积,赋值给变量area_total
area_total=area_square+area_triangle
# 第4步:打印输出多边形面积,即使用print_()函数输出变量area_total的值
print_(area_total)
########## End ##########
print('***********************')

#第二题:从键盘输入摄氏温度,将摄氏温度转换为华氏温度并输出
########## Begin ##########
#第1步:给C赋值
C=eval(input())
#第2步:计算F的值 
F=9/5*C+32
########## End ##########
print_(F) #输出结果

print('***********************')

#第三题:钟形高斯函数的计算
########## Begin ##########
#第1步:给m,s,x赋值
m,s,x=eval(input())#同时输入三个数!!!!!!


#第2步:计算fx的值  
fx=math.exp(-(((x-m)/s)**2)/2)/math.sqrt(2*math.pi*s)

########## End ##########
print_(fx) #输出结果
print('***********************')

#第四题:编写一个计算并打印地球上两点的大圆弧距离的Python程序
########## Begin ##########
#第1步:给x1,y1,x2,y2赋值
x1,y1,x2,y2=eval(input())#同时输入四个数!!!!!

#第2步:角度到弧度的转换
x1=math.radians(x1)
y1=math.radians(y1)
x2=math.radians(x2)
y2=math.radians(y2)
#radians 角度转弧度 degrees弧度转角度  
#第3步:计算dist的值
R=69.1105
dist=R*math.acos(math.sin(x1)*math.sin(x2)+math.cos(x1)*math.cos(x2)*math.cos(y1-y2))
dist=math.degrees(dist)*1.609
########## End ##########
print_(dist) #输出结果
print('***********************')

第4关:顺序程序设计

任务描述
本关主题是综合利用前三关掌握的知识,解决实际问题。通过问题的解决,对计算思维有一定的体验和感悟,并熟练掌握从上到下的顺序程序设计方法。

相关知识
为了完成本关任务,你需要掌握:

input 的使用;
print 的格式化输出;
数据类型转换;
字符串类型的基本使用。
编程要求
第一题:计算距离
一小球以 5 米/秒 的水平速度平抛,重力加速度取 9.8 米每秒的平方,在忽略空气阻力的情况下,求经过时间 t 秒后,小球所在位置与抛出点之间的距离 (假设小球距地面足够高)。
例如输入2
输出:22.00

第二题:求三角形面积
一个三角形的三边长分别是 a,b,c,那么它的面积为 sqrt(p(p−a)(p−b)(p−c)),其中 p= 1/2(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 2 位小数。保证能构成三角形,0≤a,b,c≤1000,0≤a,b,c≤1000,每个边长输入时不超过2位小数。
例如输入:3,4,5
输出:6.00

第三题:逆序数输出
输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数。
例如输入:123.4
输出:4.321

第四题: 对角线求点的个数
对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。
例如:6 边形:结果为15个点
输入:6
输出:15

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。格式化输出格式请参考测试集中的预期输出。

# -*- coding: utf-8 -*-
"""
Created on Mon Sep  7 23:55:39 2020
程序代码 :顺序结构程序设计 
@author: hzh
"""
import math
def print_(x):
    if type(x) == float:
        print("%.2f" % x)
    else:
        print(x)
        
#**第一题**:计算距离
G = 9.8     # 声明浮点型变量 G,用于表示重力加速度
v0 = 5      # 声明整型变量 v0, 用于表示水平初速度
#请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########### Begin ###########
# 第一步:通过input函数获取输入值,将其转换为浮点型并赋值给t
t=eval(input())
# 第二步:计算水平距离,并赋值给s
s=5*t
# 第三步:计算垂直距离,并赋值给h
h=9.8*t*t/2
# 第四步:计算小球与原点的距离,并赋值给d
d=math.sqrt(s**2+h**2)
# 第五步:按照保留小数点后2位格式输出小球与原点的距离d
print_(d)
########### End ###########
print('***********************')

#**第二题**:求三角形面积,结果保留小数点后2位
########### Begin ###########
a,b,c=eval(input())
p=1/2*(a+b+c)
s=math.sqrt(p*(p-a)*(p-b)*(p-c))
print_(s)

########### End ###########
print('***********************')

#**第三题**:逆序数输出
########### Begin ###########
x=input()
y=x[::-1]#从右往左
print(eval(y))


########### End ###########
print('***********************')

#**第四题**: 对角线求点的个数,以整数输出结果
########### Begin ###########
n=eval(input())
y=n*(n-1)/2*(n-2)/3*(n-3)/4
print(int(y))
'''
考虑n个顶点凸多边形。

从每个顶点出发,有(n-1)条边,
边1,相邻点,与其他边没有交点,
边2,隔1点,交点数1*(n-3)
边3,隔2点,交点数2*(n-2)
。。。
边n-3,隔2点,交点数2*(n-2)
边n-2,隔1点,交点数1*(n-3)
边n-1,相邻点,与其他边没有交点,

交点数=(n-1)(n-2)(n-3)/6。(不易计算呵)

共有n个顶点,总交点数=n(n-1)(n-2)(n-3)/6。

每个交点,都涉及2条边,2个顶点,会重复计数4次。

去除重复计算的总交点数=n(n-1)(n-2)(n-3)/24。
'''
########### End ###########
print('***********************')


  • 7
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋努力的野指针

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值