Python实训题目

写在前面

学校python课实训平台的oj太敏感辣,少一个空格都会报错——面向答案编程。为纪念在python实践课上花费的不多但受苦的经历,特将代码保存于博客上。
宁愿刷leetcode也不愿意跑python代码

2.1 表达式和基本输入输出

2.1.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, 请问该硬盘最多可存放多少个字节的数据量?
提示:字节为最小的存储单位,硬盘容量500GB中的B是指字节byte。1G=1024M, 1M=1024K, 1K=1024。

第六题
计算并判断 1.0 1 3 ∗ 0.9 9 2 1.01^ 3∗0.99 ^2 1.0130.992 , 是否大于1.01,输出判断结果True或False。可知“三天打鱼,两天晒网,终将一无所获”。
提示:直接用关系运算符进行比较,关系运算符的输出是逻辑值True或False。
代码:

# -*- 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())
#-------b.1egin-----------
s = x/y
m = x%y
print(s,end=" ")
print("%d"%m)

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

#第三题:在屏幕上输入一个三位数输出该数的个位、十位和百位数字
x = eval(input())
#-------begin-----------
g = x//100
s = (x-100*g)//10
b = (x-100*g-10*s)
print("%d "%b,end="") 
print("%d "%s,end="")
print("%d"%g)  

 

#-------ends------------ 
 
#第四题:已知a=1.234567,b=0.000321 .按保留小数点后3位输出a,2.按指数形式输出 b
a,b = 1.234567, 0.00321
#-------begin-----------
import math
print("a=%.3f,"%a,end="")

print("b=%.2e"%b)
 
#-------ends------------  
     
#第五题:请问一个硬盘的存储容量为500GB, 请问该硬盘最多可存放多少个字节的数据量
#-------begin-----------
  
x = 500*2**30
print("%s"%x)

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

#第六题:计算并判断题干中表达式的值是否大于1.01,输出判断结果True,False。    
#-------begin-----------

x = 1.01**3
y = 0.99**2
z =x*y
if z > 1.01 :
  print("True")
else :
  print("False")
 

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

2.1.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):返回欧几里德范数 s q r t ( x 2 + y 2 ) sqrt(x ^2 +y 2 ) sqrt(x2+y2)

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 +π ^5 、 e ^6 π4+π5e6的值,以及输出二者的差。

第二题
分别计算并输出 π/4与4arctan(1/5)−arctan(1/239)的值,并观察其差异。

第三题
分别计算并输出sinh(0.25)与
( e 0.25 − e − 0.25 ) / 2 (e ^{0.25} −e ^{−0.25} )/2 (e0.25e0.25)/2的值,查看并比较二者的大小。

第四题
已知 h,v0,g,θ = 1.9, 14, 9.8, 40 #θ初始化为角度
计算并输出表达式在这里插入图片描述

的值, 请注意,需要将θ由初始的角度转为会弧度再计算表达式。

第五题
从键盘输入的是角度数θ,需要转化为弧度数x之后进行下面公式计算。
计算公式 l n ( ∣ c o s x ∣ e s i n x ) ln(∣cosx∣e ^{sinx} ) ln(cosxesinx), 并输出结果

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

解答:

# -*- coding: utf-8 -*-
"""
Created on Tue Sep  8 00:23:44 2020
表达式的计算问题
@author: hzh
"""

from math import *

# ********** Begin ********** #
#如果输出值小数,请保留4位小数。

#第一题
import math
x = math.pi**4+math.pi**5
y = math.exp(6)
z = x-y
print("%.4f"%x)
print("%.4f"%y)
print("%.4f"%z)
#第二题
import math
x = math.pi/4
y = 4*math.atan(0.2)-math.atan(1/239)
print("%.4f"%x)
print("%.4f"%y)

#第三题
import math
x = math.sinh(0.25)
y = 0.5*(math.exp(0.25)-math.exp(-0.25))
print("%.4f"%x)
print("%.4f"%y)

#第四题
h,v0,g,θ = 1.9, 14, 9.8, 40  #变量赋值
import math
x = math.radians(θ)
y = (2*v0*math.sin(x)+math.sqrt(4*v0**2*sin(x)**2+8*g*h))/(2*g)
print("%.4f"%y)



#第五题
θ = eval(input()) #输入角度值 
import math
x = math.radians(θ)
y = math.log1p(math.fabs(math.cos(x)*math.exp(math.sin(x)))-1)
print("%.4f"%y)


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

2.1.3简单计算问题的求解

问题:

代码:

 # -*- coding: utf-8 -*-
"""
Created on Mon Sep  7 23:31:38 2020
 任务:计算一个由正方形和等腰三角形组成的多边形的面积,其中正方形边长4厘米
,等腰三角形底边为正方形的一条边,其到对角顶点的高为2.6厘米。
@author: hzh
"""
from math import *
#保留2位小数
 
#第一题:无输入求多边形的面积
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
import math 

area_triangle = square_length*triangle_h*0.5
# 第3步:计算多边形面积,即正方形面积和等腰三角形面积,赋值给变量area_total
area_total = area_square + area_triangle
# 第4步:打印输出多边形面积
print("%.2f"%area_total)
########## End ##########
print('***********************')

#第二题:从键盘输入摄氏温度,将摄氏温度转换为华氏温度并输出
########## Begin ##########
#第1步:给C赋值
c = eval(input())

#第2步:计算F的值并输出
f = (9/5)*c+32
print("%.2f"%f)
########## End ##########


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

#第三题:正态分布的概率密度函数
########## Begin ##########
#第1步:给mu,sigma,x赋值,从键盘输入
mu,sigma,x=eval(input())

#第2步:计算函数值并输出
import math
y = (1/(math.sqrt(2*math.pi)*sigma))*math.exp(-(x-mu)*(x-mu)/(2*sigma*sigma))
print("%.2f"%y)

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

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

#第四题:编写一个计算并打印地球上两点的球面距离的Python程序
########## Begin ##########
#第1步:从键盘录入4个数,分别赋值lat1,lon1,lat2,lon2变量,代表两个点的角度坐标
lat1,lon1,lat2,lon2=eval(input())

#第2步:角度到弧度的转换
import math
Lat1 = math.radians(lat1)
Lon1 = math.radians(lon1)
Lat2 = math.radians(lat2)
Lon2 = math.radians(lon2)
#第3步:根据题干中所给公式计算球面距离并输出
R = 6371
s = R*math.acos(math.sin(Lat1)*math.sin(Lat2)+math.cos(Lat1)*math.cos(Lat2)*math.cos(Lon1-Lon2))
print("%.2f"%s)
########## End ##########

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

2.1.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 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。
计算公式为: n ( n − 1 ) ( n 2 − 5 n + 6 ) / 24 n(n−1)(n^ 2 −5n+6)/24 n(n1)(n25n+6)/24

例如:6 边形:结果为15个点
输入:6
输出:15

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

代码:

 # -*- coding: utf-8 -*-
"""
Created on Mon Sep  7 23:55:39 2020
程序代码 :顺序结构程序设计 
@author: hzh
"""
from math import *
#保留2为小数
        
#**第一题**:计算距离
G = 9.8     # 声明浮点型变量 G,用于表示重力加速度
v0 = 5      # 声明整型变量 v0, 用于表示水平初速度
#请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########### Begin ###########
# 第一步:通过input函数获取输入值,将其转换为浮点型并赋值给t

t = eval(input())
# 第二步:计算水平距离,并赋值给s
s = 5*t
# 第三步:计算垂直距离,并赋值给h
h = 0.5*9.8*t**2
# 第四步:计算小球与原点的距离,并赋值给d
import math
d = math.hypot(s,h)
# 第五步:按照保留小数点后2位格式输出小球与原点的距离d
print("%.2f"%d)
########### End ###########
print('***********************')

#**第二题**:求三角形面积,结果保留小数点后2位
########### Begin ###########
a,b,c=eval(input())
import math
p = 0.5*(a+b+c)
s = math.sqrt(p*(p-a)*(p-b)*(p-c))
print("%.2f"%s)
########### End ###########
print('***********************')

#**第三题**:逆序数输出
########### Begin ###########
a=eval(input())
b = a//100
c = (a-b*100)//10
d = (a-b*100-c*10)//1
e = (a-b*100-c*10-
  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值