Python18(补充):练习

案例一:

python 复制代码
#   1、计算输入的三个整数的平均数

# 错误一:
# x, y, z = int(input("请输入三个整数:"))
# ave = (x + y + z) / 3
# print(ave)
# 运行:
# 请输入三个整数:10
# 报错:TypeError: cannot unpack non-iterable int object
# 意思:不能把一个整数,拆分成 x、y、z 三个变量。

# 错误二:
# x, y, z = input("请输入三个整数:")
# x = int(x)
# y = int(y)
# z = int(z)
# ave = (x + y + z) / 3
# print(ave)
# 运行:
# 请输入三个整数:10
# 报错:ValueError: not enough values to unpack (expected 3, got 2)
# 10 → 会被拆成 '1' 和 '0'(只有 2 个字符)
# 但你要分给 x, y, z 3 个变量 → 不够分 → 报错!

# 方法一:
x = int(input("请输入第一个数:"))
y = int(input("请输入第二个数:"))
z = int(input("请输入第三个数:"))
ave = (x + y + z) / 3
print(ave)  # 20.0

# 方法二:
# 下面这行是固定写法,记住它!
x,y,z = map(int,input("请输入三个整数,用空格隔开:").split())
ave = (x+y+z)/3
print(ave)  # 60.0
# map(int, 列表)
# 作用:把里面所有字符串变成整数
# 请输入三个整数,用空格隔开:50 60 70     # 默认按空格、多个空格、Tab分割,非常方便
# int 是类型,意思是转成整数
# map(float, 列表) → 转小数
# map(bool, 列表) → 转布尔值
# map(str, 列表) → 全部转字符串

# 拓宽
x, y, z =map(bool, input("请输入三种是非情况:").split())
print(f"{x},{y},{z}")
"""
运行的情况是:
请输入三种是非情况:0  0  1
True,True,True

或者:
请输入三种是非情况:True  False  False 
True,True,True

或者:
请输入三种是非情况:T  T  F
True,True,True
"""
# 分析:
# 因为 bool() 这个函数,只要不是空字符串,全都会变成 True!
# 输入 0 → 字符串 "0" → bool("0") → True
# 输入 False → 字符串 "False" → True
# 输入 F → 字符串 "F" → True
# 只有空字符串 "" 才会变成 False

# 改写一:
# 输入:0 0 1 → 输出:False,False,True
x, y, z = map(int, input("请输入三种是非情况(0=假,1=真):").split())
x, y, z = bool(x), bool(y), bool(z)
print(f"{x},{y},{z}")
"""
请输入三种是非情况(0=假,1=真):0 0  1
False,False,True
"""

# 改写二:(输入 True/False 文字)
def str_to_bool(s):
    return s.lower() in ['true', '1', 't']

x, y, z = map(str_to_bool, input("请输入三种是非情况:").split())
print(f"{x},{y},{z}")

"""
请输入三种是非情况:T  0  False
True,False,False
"""

案例二:

python 复制代码
# 2、要求输入梯形的上底、下底、高,然后计算梯形的面积
# 用float支持小数输入,更贴合实际计算
up = float(input("请输入梯形的上底:"))
down = float(input("请输入梯形的下底:"))
height = float(input("请输入梯形的高:"))

# 梯形面积公式:(上底+下底)×高÷2
print(f"梯形的面积area={(up+down)*height/2}")  #我自己写的

area = (up + down) * height / 2
# 格式化输出,排版更清晰
print(f"梯形的面积为:{area:.2f}") # 外面的 f:开启「变量插入功能」;里面的 f:控制「数字保留几位小数」

案例三:

python 复制代码
# 3.要求输入圆的半径,然后计算圆的周长和面积(周长:2πr,面积:πr²)
# 初步写的:
r = float(input("请输入圆的半径:"))
π = 3.14
perimeter = 2*π*r
area = π*r*r
print(f"圆的周长:{perimeter};圆的面积:{area}")

# 修正得更好:
# 输入半径,计算圆周长和面积
r = float(input("请输入圆的半径:"))
PI = 3.14   # π 改成 PI,Python 规范常量全大写
circumference = 2 * PI * r  # perimeter → circumference(周长标准英文)
area = PI * r ** 2  # r*r 改成 r**2,Python 专用平方写法更专业
print(f"圆的周长:{circumference:.2f}")  # 保留 2 位小数  :.2f 自动四舍五入,结果干净好看
print(f"圆的面积:{area:.2f}")

# 进阶版(用系统精准 π 值,更准确)
import math
r = float(input("请输入圆的半径:"))
c = 2 * math.pi * r
s = math.pi * r **2
print(f"周长={c:.2f},面积={s:.2f}")

# 一句话总结差别
# 第一种:π=3.14 + 不四舍五入
# 第二种:π=3.14 + 四舍五入保留 2 位
# 第三种:π= 高精度(3.1415926...)+ 四舍五入保留 2 位
# 推荐以后应该用:进阶版(第三种)

案例四:

python 复制代码
# 4、身体质量指数BMI的计算(BMI = 体重(kg)/ 身高(m)²)
# BMI计算+体型判断
weight = float(input("请输入体重(kg):"))
height = float(input("请输入身高(m):"))
bmi = weight / height ** 2
print(f"BMI数值:{bmi:.2f}")

if bmi < 18.5:
    print("体型偏瘦")
elif 18.5 <= bmi < 24:
    print("体型标准")
elif 24 <= bmi < 28:
    print("体型偏胖")
else:
    print("体型肥胖")
相关推荐
weixin_416667961 小时前
银河麒麟V10看门狗试验-1
网络·chrome·python
古城小栈2 小时前
Pydantic 从入门到实践全讲解
python
happylifetree2 小时前
Python18:核心语法-数据存储与运算-运算符-算术运算符
python
打工仔折腾 AI2 小时前
从Attention到BERT:双向预训练语言模型到底解决了什么问题
人工智能·后端·python·深度学习·语言模型·bert
迅猛龙办公室2 小时前
实现第一个python程序(HelloWorld)
开发语言·python
拉格朗日(Lagrange)2 小时前
【第2 章】WorkBuddy 从入门到高手
开发语言·python
老歌老听老掉牙3 小时前
斜抛运动问题分析:给定最大高度与墙面位置的轨迹与时间求解
python·斜抛运动
言乐64 小时前
Python自动去除水印
开发语言·python·django·virtualenv·pygame
czq_26867194874 小时前
Python打卡第31天
开发语言·python