Python程序课程设计实验报告4
- 一、 实验目的及要求
- 二、 实验设备(软硬件环境)
- 三、 任务描述
- 四、 相关知识
- 五、 操作步骤及编程实现
- 六、实验总结
一、 实验目的及要求
- 通过学习具备编写 Python 分支结构程序的能力,涉及的 Python 编程基本概念包括:布尔数据类型( boolean ),关系运算符、逻辑运算符及表达式,分支语句 if、if-lese、if-elif-else 等。
二、 实验设备(软硬件环境)
电脑、Anaconda、python3.8以上、math模块
三、 任务描述
1. 本关任务:一小球以 5 米/秒 的水平速度平抛,重力加速度取 9.8 米每秒的平方,在忽略空气阻力的情况下,求经过时间 t 秒后,小球所在位置与抛出点之间的距离 (假设小球距地面足够高,t 应大于 0)。
2. 本关任务:假设现在有一个方形,它的长度和宽度未知,只知道长和宽的变量名,请编写代码判断该方形是否为正方形(长和宽都应大于 0)。长和宽通过 input 获取,第一个值为长度,第二个值为宽度。
3. 已知摄氏度(C)与华氏度(F)的转换公式为:
F=C×1.8+32 C=(F−32)÷1.8
本关任务:根据输入的选项,完成从摄氏度到华氏度或从华氏度到摄氏度的转换。输入数据包括温度的单位、待转换的温度值,温度值为浮点型。摄氏度的单位可能为摄氏度,也可能为C,华氏度的单位可能为华氏度,也可能为F
4. 本关任务:判断一个年份是否为闰年主要取决于两点,年份能被 400 整除,或者能被 4 整除但不能被 100 整除的就是闰年。假设现在我们已知年份为 year,请编写代码判断这一年是否为闰年。
5. 根据输入的年份和月份判断该月的天数。
6. 本关任务:求解一元二次方程 ax2+bx+c=0的根,系数a、b、c的值从输入获取。注意考虑以下几种情况。
四、 相关知识
为了完成本关任务,需要掌握:
1布尔类型;
2关系运算符;
3单路分支结构 if。
4双路分支结构 if-else;
5逻辑运算符。
五、 操作步骤及编程实现
1. 本关任务:一小球以 5 米/秒 的水平速度平抛,重力加速度取 9.8 米每秒的平方,在忽略空气阻力的情况下,求经过时间 t 秒后,小球所在位置与抛出点之间的距离 (假设小球距地面足够高,t 应大于 0)。
import math
v0, g = 5, 9.8
t = eval(input('输入小球运动的时间(单位:s,大于0):'))
if t > 0:
x = v0 * t
h = 0.5 * g * t ** 2
print('小球距抛出点%f米。' % math.sqrt(x + h))
else:
print(False)
2. 本关任务:假设现在有一个方形,它的长度和宽度未知,只知道长和宽的变量名,请编写代码判断该方形是否为正方形(长和宽都应大于 0)。长和宽通过 input 获取,第一个值为长度,第二个值为宽度。
length = eval(input('输入方形的长度(大于0):'))
width = eval(input('输入方形的宽度(大于0):'))
if length > 0 and width > 0:
if length == width:
print('该方形是正方形。')
else:
print('该方形不是正方形。')
else:
print(False)
3. 已知摄氏度(C)与华氏度(F)的转换公式为:
F=C×1.8+32 C=(F−32)÷1.8
本关任务:根据输入的选项,完成从摄氏度到华氏度或从华氏度到摄氏度的转换。输入数据包括温度的单位、待转换的温度值,温度值为浮点型。摄氏度的单位可能为摄氏度,也可能为C,华氏度的单位可能为华氏度,也可能为F
list_tem = list(input('输入温度的类型(C or F)和温度值(浮点型),以空格分隔:').split())
if list_tem[0] == "C":
list_tem[1] = float(list_tem[1]) * 1.8 + 32
print('摄氏度转换到华氏度为:', list_tem[1], sep='')
elif list_tem[0] == "F":
list_tem[1] = (float(list_tem[1]) - 32) / 1.8
print('华氏度转换到摄氏度为', list_tem[1], sep='')
else:
print('温度类型错误。')
4. 本关任务:判断一个年份是否为闰年主要取决于两点,年份能被 400 整除,或者能被 4 整除但不能被 100 整除的就是闰年。假设现在我们已知年份为 year,请编写代码判断这一年是否为闰年。
year = int(input('输入一个年份:'))
if year % 400 == 0 or year % 4 == 0 and year % 100 != 0:
print(year, '是闰年。', sep='')
else:
print(year, '不是闰年。', sep='')
5. 根据输入的年份和月份判断该月的天数。
list_1 = list(input('输入年份和月份(1-12),以空格分隔:').split())
if int(list_1[1]) > 12:
print('月份错误。')
elif list_1[1] == [i for i in [1, 3, 5, 7, 8, 10, 12]]:
print('该月为31天。')
elif list_1[1] == [i for i in [4, 6, 9, 10]]:
print('该月为31天。')
else:
if int(list_1[0]) % 400 == 0 or int(list_1[0]) % 4 == 0 and int(list_1[0]) % 100 != 0:
print('该月为29天。')
else:
print('该月为28天。')
6. 本关任务:求解一元二次方程 ax2+bx+c=0的根,系数a、b、c的值从输入获取。注意考虑以下几种情况。
import math
list_coe = list(input('输入一元二次方程 ax2+bx+c=0的系数a,b,c的值(以空格分隔):').split())
a, b, c = float(list_coe[0]), float(list_coe[1]), float(list_coe[2])
if a == 0 and b != 0:
x = -c / b
print('一元一次方程的根为:x=%f' % x)
elif a != 0 and b ** 2 - 4 * a * c > 0:
delta = b ** 2 - 4 * a * c
x1 = (-b - math.sqrt(delta)) / 2 * a
if (-b - math.sqrt(delta)) == 0:
x1 = abs(x1)
x2 = (-b + math.sqrt(delta)) / 2 * a
if (-b + math.sqrt(delta)) == 0:
x2 = abs(x2)
print('一元二次方程有两个根:x1=%f x2=%f' % (x1, x2))
elif a != 0 and b ** 2 - 4 * a * c == 0:
x = -b / 2 * a
if b == 0:
x = abs(x)
print('一元二次方程有一个根:x=%f' % x)
elif a != 0 and b ** 2 - 4 * a * c < 0:
print('方程无解。')
else:
print(False)
六、实验总结
遇到的问题及解决方法。