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

如何从指定格式txt文件中读取变量值实现二次方程求解

二次方程求解程序的TXT系数读取实现

你需要补全的核心逻辑是解析已打开的文本文件内容,逐行提取浮点型系数传入求根函数即可,对应文件格式要求如下:

文本文件包含多行逗号分隔的文本,每行存储三个浮点数,第一个数为二次项系数A的值,第二个数为一次项系数B的值,第三个数为常数项C的值。

实现说明

  • 原有代码中file = file + ".txt"存在多余前置缩进,会触发语法错误,需要调整缩进和上一行输入语句对齐
  • 逐行读取文件时建议跳过空行,避免文件末尾空行、排版空行导致解析报错
  • 按逗号分割每行内容后,需要把字符串格式的数值转成浮点数,才能代入数学公式计算
  • 推荐使用with上下文管理器打开文件,读取结束后会自动关闭文件,不需要手动调用close()方法
  • 按照Python编码规范,import math导入语句建议放在代码最开头,避免导入顺序导致的运行问题

修改后的完整可运行代码如下,支持TXT内存储多组系数、逐行计算结果:

import math

print("\nWelcome to the Blockhouse Bay College Quadratic Equation Program")
file_name = input("\nPlease input text file name: ")
file_path = file_name + ".txt"

# 二次方程求根函数
def equationroots(a, b, c):
    # 计算判别式
    dis = b * b - 4 * a * c
    sqrt_val = math.sqrt(abs(dis))

    # 根据判别式值分类输出根
    if dis > 0:
        print("There are two distinct roots ")
        print((-b + sqrt_val)/(2 * a))
        print((-b - sqrt_val)/(2 * a))
    elif dis == 0:
        print("There is one real root")
        print(-b / (2 * a))
    # 判别式小于0时输出复根
    else:
        print("Complex Roots")
        print(- b / (2 * a), " + i", sqrt_val)
        print(- b / (2 * a), " - i", sqrt_val)

# 读取文件逐行解析系数
with open(file_path, "r") as text_file:
    for line in text_file:
        # 去除行首尾空白字符,跳过空行
        line = line.strip()
        if not line:
            continue
        # 按逗号分割,转成浮点数赋值
        a, b, c = map(float, line.split(","))
        print(f"\nCalculating result for coefficients a={a}, b={b}, c={c}:")
        # 校验二次项系数是否为0
        if a == 0:
            print("Cannot be a quadratic equation if a is zero")
        else:
            equationroots(a, b, c)
  • 你后续需要补充的文件不存在异常捕获逻辑,直接在open语句外层添加try-except块即可,不会影响核心的系数读取和计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:12:25