如何从指定格式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
相关产品推荐
相关产品推荐

