python f-string格式化输出

f-string方式出自PEP 498(Literal String Interpolation,字面字符串插值),从Python3.6版本引入。其特点是在字符串前加 f 标识,字符串中间则用花括号{}包裹其它字符串变量。

这种方式在可读性上秒杀format()方式,处理长字符串的拼接时,速度与join()方法相当。

尽管如此,这种方式与其它某些编程语言相比,还是欠优雅,因为它引入了一个 f 标识。而其它某些程序语言可以更简练,比如shell:

f-string格式化输出比较清晰,下面运用列表实战演练来熟悉f-string格式化的使用方式.

案例 1:统计班级数学成绩(变量+列表实战)

 需求:已知全班 10 个学生的数学成绩,计算“人数、总成绩、平均分、最高分、最低分”,并找出“80 分以上的学生人数”。
# 1. 定义成绩列表(存10个学生的成绩)
match_scores = [85, 92, 78, 95, 60, 88, 76, 90, 82, 70]

# 2. 计算基础指标(用变量存结果)

student_count = len(match_scores)
total_score = sum(match_scores)
avg_score = total_score / student_count
max_score = max(match_scores)
min_score = min(match_scores)

# 3. 筛选80分以上的成绩,统计人数
order_score = [i for i in match_scores if i >= 80]
order_count = len(order_score)

# 4. 打印最终结果(用f-string格式化输出,更清晰)
print("======班级数学成绩统计===")
print(f"学生人数: {student_count}人")
print(f"班级{student_count}个学生总成绩: {total_score}分")
print(f"平均分:{avg_score:.1f}分")
print(f"最高分:{max_score}分 最低分:{min_score}分")
#print(f"80分以上的人数: {order_count}人,占比 ({order_count/match_scores*100:.1f}%)")
print(f"80分以上人数:{order_count}人 (占比{order_count/student_count*100:.1f}%)")

####################################################
======班级数学成绩统计===
学生人数: 10人
班级10个学生总成绩: 816分
平均分:81.6分
最高分:95分 最低分:60分
80分以上人数:6人 (占比60.0%)

案例 2:整理商品名格式(字符串+列表实战)

    需求:超市商品名格式杂乱(比如有多余空格、大小写不统一),需要统一成“品牌-商品类型”的格式(比如“蒙牛 纯牛奶”→“蒙牛-纯牛奶”,“Apple 苹果”→“Apple-苹果”)。

# 1. 定义杂乱的商品名列表
messy_products = ["蒙牛 纯牛奶 "," 伊利 酸奶","Apple 苹果"," 华为 手机 ","小米 平板"]

# 2. 整理格式:去掉多余空格 + 用“-”替换中间的空格
# 字符串操作:strip()去前后空格,replace(" ", "-")替换中间空格

# 存整理后的商品名
clean_products = []
for product in messy_products:
    # 步骤1:去前后多余空格
    product_stripped = product.strip()
    # 步骤2:把中间的空格换成“-”
    product_clean = product_stripped.replace(" ","-")
    # 步骤3:加入新列表
    clean_products.append(product_clean)

# 3. 打印整理前后的对比
print("===== 商品名格式整理 =====")
print(f"总共有 {len(messy_products)种商品.}") for i in range(len(messy_products)): print(f"整理前:{messy_products[i]} → 整理后:{clean_products[i]}") ############################################### ===== 商品名格式整理 ===== 整理前:蒙牛 纯牛奶 → 整理后:蒙牛-纯牛奶 整理前: 伊利 酸奶 → 整理后:伊利-酸奶 整理前:Apple 苹果 → 整理后:Apple-苹果 整理前: 华为 手机 → 整理后:华为-手机 整理前:小米 平板 → 整理后:小米-平板

案例 3:筛选高销量商品(字典+列表+循环实战)

    需求:已知 5 个商品的“名称、销量、单价”,筛选出“销量≥100 件”的高销量商品,并计算这些商品的总营收。

# 1.定义商品列表(每个元素是字典)
products = [
    {"name": "苹果", "sales": 120, "price": 8.9},
    {"name": "香蕉", "sales": 90, "price": 5.8},
    {"name": "橙子", "sales": 180, "price": 6.2},
    {"name": "葡萄", "sales": 80, "price": 12.5},
    {"name": "草莓", "sales": 150, "price": 15.8}
]

# 2.筛选高销量商品(销量≥100)

high_sales_products = []
# 高销量商品的总营收
total_high_revenue = 0

for i in products:
    if i["sales"] >= 100:
        # 计算单个高销量商品的营收
        product_revenue = i["sales"] * i["price"]
        #print(product_revenue)
        # 给商品字典加一个“营收”键,方便后续查看
        i["revenue"] = product_revenue
        # 加入高销量列表
        high_sales_products.append(i)
        # 累加总营收
        total_high_revenue += product_revenue

# 3. 打印结果
print("===== 高销量商品筛选结果 =====")
print(f"高销量商品(≥100件):{len(high_sales_products)}个")
for p in high_sales_products:
    print(f"商品:{p['name']},销量:{p['sales']}件,营收:{p['revenue']:.1f}元")
print(f"高销量商品总营收:{total_high_revenue:.1f}元")

############################################
===== 高销量商品筛选结果 =====
高销量商品(≥100件):3个
商品:苹果,销量:120件,营收:1068.0元
商品:橙子,销量:180件,营收:1116.0元
商品:草莓,销量:150件,营收:2370.0元
高销量商品总营收:4554.0元

 

 

posted @ 2026-01-16 11:00  梦徒  阅读(2)  评论(0)    收藏  举报