You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取Lab5_Data.txt完成指定计算输出的问题求助

解决方案

核心优化点

  • 所有处理逻辑放在同一个文件遍历循环中执行:文件对象是迭代器,第一次遍历完指针就移动到文件末尾,你之前写的三个独立for循环只有第一个能读到数据,后两个无数据可处理
  • 把5项计算需求拆为独立的小工具函数,每个函数只负责单一功能,主循环只处理行读取和结果输出,不会出现冗余庞大的循环代码
  • 每行数据拆分后复用变量,保证同一条行数据的5项结果连续输出

完整可运行代码

import math

# 工具函数:判断字符串是否包含元音字母
def has_vowel(input_str):
    vowels = {'a', 'e', 'i', 'o', 'u'}
    return any(c.lower() in vowels for c in input_str)

# 工具函数:计算球体体积
def calc_sphere_volume(radius):
    return 4 / 3 * math.pi * (radius ** 3)

# 工具函数:判断三个边长能否构成三角形
def can_form_triangle(a, b, c):
    return a + b > c and a + c > b and b + c > a

# 工具函数:计算三个数的平均值
def calc_avg(a, b, c):
    return (a + b + c) / 3

# 主逻辑
if __name__ == '__main__':
    with open('Lab5_Data.txt', 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line:
                continue
            # 拆分单行数据为字母部分和数字部分
            parts = line.split()
            letter_seq = parts[0]
            nums = list(map(int, parts[1:]))
            radius, a, b, c = nums[0], nums[1], nums[2], nums[3]
            
            # 输出5项结果
            print(f"The string in lowercase is {letter_seq.lower()}")
            if has_vowel(letter_seq):
                print(f"{letter_seq} contains vowels")
            else:
                print(f"{letter_seq} does not contain any vowels")
            volume = calc_sphere_volume(radius)
            print(f"The volume of the sphere with radius {radius} is {volume}")
            if can_form_triangle(a, b, c):
                print(f"{a}, {b}, {c} can make a triangle")
            else:
                print(f"{a}, {b}, {c} cannot make a triangle.")
            avg_val = calc_avg(a, b, c)
            print(f"The average of {parts[1]}, {parts[2]}, {parts[3]} is {avg_val}")

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:06:10