数据类型-数字知识点
# 浮点数里面的无穷大 无穷小以及 不是数字
# 无穷大 inf
a = float('inf')
b = float('inf')
c = float('nan')
print("正无穷:",a)
# 无穷小 -inf
print("负无穷:",b)
# 不是数字 NaN
c = float('nan')
print("不是数字:",c)
结果:
正无穷: inf
负无穷: inf
不是数字: nan
课后习题
编程题
1.编写一个 Python 脚本,接收用户输
入的身高(单位:米)和体重(单
位:公斤)。计算并打印身体质量指
数 (BMI)。BMI 计算公式为: BMI =
体重 / (身高 * 身高) 。根据 BMI 值
打印出对应的健康状况:
BMI < 18.5: 过轻
18.5 <= BMI < 24: 正常
24 <= BMI < 28: 过重
BMI >= 28: 肥胖
参考答案:
height_str = input("请输入您的身高 (米): ")
weight_str = input("请输入您的体重 (公斤): ")
height = float(height_str)
weight = float(weight_str)
if height <= 0 or weight <= 0:
print("身高和体重必须是正数。")
else:
bmi = weight / (height * height)
print(f"您的 BMI 指数是: {bmi:.2f}")
if bmi < 18.5:
print("健康状况: 过轻")
elif bmi < 24:
print("健康状况: 正常")
elif bmi < 28:
print("健康状况: 过重")
else:
print("健康状况: 肥胖")
我的答案:
height = float(input('请输入身高(单位:米) :'))
weight = float(input('请输入体重(单位:公斤):'))
while height <=0 :
print("身高不符合要求,请重新输入")
height = float(input('请输入身高(单位:米) :'))
break
while weight <= 0:
print("体重不符合要求,请重新输入")
weight = float(input('请输入体重(单位:公斤):'))
break
BMI =weight / (height * height)
print(f"BMI为{BMI:.1f}")
if BMI < 18.5:
print("过轻")
elif BMI < 24:
print("正常")
elif BMI < 28:
print("过重")
else:
print("肥胖")
总结:
1.我的判断输入是否合规,用while实际只执行了一次,我写了break,我的想法跳出本次循环会继续输入,应该用if好一点,我想过但是逻辑用错了 用的and
2.编写一个 Python 脚本,接收用户输
入的三个浮点数 a , b , c ,代表一
元二次方程 ax^2 + bx + c = 0 的系
数(假设 a 不为 0)。计算并打印
方程的实数根。需要考虑判别式
( delta = b^2 - 4ac ) 的三种情况:
delta > 0 : 两个不相等的实数根
delta = 0 : 两个相等的实数根
delta < 0 : 没有实数根 (可以打印提
示信息,不需要计算复数根)
打印出方程的根。
参考答案:
import math # 导入 math 模块以使用 sqrt 函数
a_str = input("请输入系数 a: ")
b_str = input("请输入系数 b: ")
c_str = input("请输入系数 c: ")
a = float(a_str)
b = float(b_str)
c = float(c_str)
if a == 0:
print("错误:系数 a 不能为 0,这不是一个一元二次方程。")
else:
delta = b**2 - 4*a*c # 计算判别式
print(f"方程为: {a}x^2 + {b}x + {c} = 0")
print(f"判别式 delta = {delta}")
if delta > 0:
# 两个不相等的实数根
x1 = (-b + math.sqrt(delta)) / (2a)
x2 = (-b - math.sqrt(delta)) / (2a)
print(f"方程有两个不相等的实数根:")
print(f"x1 = {x1:.4f}")
print(f"x2 = {x2:.4f}")
elif delta == 0:
# 两个相等的实数根
x = -b / (2*a)
print(f"方程有两个相等的实数根:")
print(f"x1 = x2 = {x:.4f}")
else: # delta < 0
print("方程没有实数根。")
我的答案:
a = float(input('请输入系数a(a!=0):'))
b = float(input('请输入系数b:'))
c = float(input('请输入系数c:'))
delta = b**2 - 4*a*c
match delta:
case delta if delta< 0:
print("该方程没有实数根,不需要打印复数根")
case delta if delta > 0:
# x1、x2分别为两个实数根
x1=((-b + delta**1/2) / (2 * a))
x2 =(-b - delta ** 1/2) / (2 * a)
print(f"该方程的两个根分别为{x1},{x2}")
case delta if delta == 0:
x1=((-b + delta**1/2) / (2 * a))
print(f"该方程的根为{x1}且x2=x1={x1}")
总结:
1.导入数学包 直接使用开sqrt开平方根函数
2.我的delta ** 1/2 开平方根错误,应该为0.5 实际计算的是后者实际上等于(delta**1)/2),因为幂运算优先级别最高
3.delta == 0:表达式可以直接优化,-b/(2*a)
浙公网安备 33010602011771号