【Python】实验报告4

一、 实验目的及要求

  1. 通过学习具备编写 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)

六、实验总结

遇到的问题及解决方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰美式星星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值