首页 > 编程问答 >如何让 python 为我提供正确的函数解决方案并根据符号更改零的格式?

如何让 python 为我提供正确的函数解决方案并根据符号更改零的格式?

时间:2024-07-26 07:03:16浏览次数:13  
标签:python math code-formatting algebra

我正在尝试制作一个二次公式计算器。一切看起来都很好,但是,当我输入一些函数(例如 x^2-2x+1 和 x^2+2x+1)时,当它们有不同的解决方案时,它会给我相同的零。我遇到的另一个问题是,在代码的末尾,format_solution(root),我希望它能够根据符号改变格式。例如,如果零是 (x - 1),我不希望它输入 (x + -1) 而只是 (x - 1);我不知道该怎么做。

import math
import cmath

print('Follow this format: Ax^2 + Bx + C')

a = float(input('Enter A: '))
b = float(input('Enter B: '))
c = float(input('Enter C: '))

#Functions

def qfpositive(a, b, c):
  return(-abs(b)+cmath.sqrt(b**2-4*a*c))/2*a

def qfnegative(a, b, c):
  return(-abs(b)-cmath.sqrt(b**2-4*a*c))/2*a

def format_solution(root):
  if root.real == 0:

    return f'(x {root.real})'
      # Root is a real number
  if root.real > 0:
    return f'(x + {root.real})'
  elif root.real < 0:
    return f'(x {root.real})'
  elif root.imag > 0:
      # Root has a positive imaginary part
      return f'(x {root.real} + {root.imag}i)'
  else:
      # Root has a negative imaginary part
      return f'(x {root.real} - {abs(root.imag)}i)

x1 = qfpositive(a, b, c)
x2 = qfnegative(a, b, c)

print(format_solution(x1))
print(format_solution(x2))

我尝试输入以下代码

if root.real > 0:
    return f'(x + {root.real})'
  elif root.real < 0:
    return f'(x {root.real})'

这样,如果零的格式是正数,则输出(x + #)。如果零的格式是负数,它将给出 (x - #) 而不是 (x + -#)。


问题在于的正负二次方程式求解器函数中使用了 abs(b) . 虽然在二次方程式中加或减 b 的符号无关紧要,但这会导致两个函数中的计算结果相同,进而产生相同的根。

为了解决此问题,请直接使用 b ,而不要使用 abs(b)

对于格式问题,可以检查根的符号,并根据需要包含 + - 号。

以下是更正后的代码:

import math
import cmath

print('请遵循以下格式:Ax^2 + Bx + C')

a = float(input('输入 A:'))
b = float(input('输入 B:'))
c = float(input('输入 C:'))

# 函数

def qfpositive(a, b, c):
  return (-b + cmath.sqrt(b**2 - 4*a*c)) / (2*a)

def qfnegative(a, b, c):
  return (-b - cmath.sqrt(b**2 - 4*a*c)) / (2*a)

def format_solution(root):
  if root.imag == 0:
    # 根是实数
    if root.real > 0:
      return f'(x + {root.real:.2f})'
    elif root.real < 0:
      return f'(x - {abs(root.real):.2f})'
    else:
      return '(x)'
  else:
    # 根有虚部
    if root.imag > 0:
      return f'(x + {root.real:.2f} + {root.imag:.2f}i)'
    else:
      return f'(x + {root.real:.2f} - {abs(root.imag):.2f}i)'

x1 = qfpositive(a, b, c)
x2 = qfnegative(a, b, c)

print(format_solution(x1))
print(format_solution(x2))

这些更改实现了以下内容:

  1. 更正了正负二次方程式求解器函数: 它现在正确地使用 b 而不是 abs(b) 来计算不同的根。
  2. 改进了格式化: format_solution 函数现在检查根的符号,并在必要时添加 + - 号,以避免出现 (x + -1) 之类的输出。它还会在根有虚部时正确格式化输出。
  3. 添加了格式说明符: :.2f 被添加到 f 字符串中以将浮点数的输出限制为两位小数,从而使输出更清晰。

有了这些更正,的二次方程式求解器现在可以正常工作,并为正数和负数根提供正确格式的解。

标签:python,math,code-formatting,algebra
From: 78795683

相关文章

  • PYTHON 代码执行错误 - 冻结 importlib._bootstrap>(1165)_find_and_load()?
    在MACOS10.15(CATALINA)上执行此PYTHON代码时出现以下错误。我正在使用IDLEShell编写PYTHON3.11。Python3.11.4(v3.11.4:d2340ef257,Jun 62023,19:15:51)[Clang13.0.0(clang-1300.0.29.30)]ondarwinType"help","copyright","credits"o......
  • 如何修复我的 python flet 音频可视化工具在终端中不出现错误的情况下无法工作
    标题:音频播放,但频谱可视化未在FletAudioVisualizer中显示我正在使用Flet框架开发音频可视化器。声音播放正确,但频谱可视化未显示。这是我的代码:importfletasftimportnumpyasnpfrompydubimportAudioSegmentfrompydub.utilsimportmake_chunksimportm......
  • 使用隐式 __init__ 方法向 python 数据类添加显式 dunder 方法
    我在python中创建了一个数据类,选择使用隐式定义的__init__方法。然后,我尝试显式重写比较dunder方法之一(__eq__)。因为没有明确的__init__方法,所以'this'参数不存在,所以python抛出了一个NameError。为了做到这一点,即使自动生成的很好,我是否也必......
  • 84 我正在使用 Python 开发 selenium 自动化项目。我收到错误 .NoSuchElementExceptio
    场景是这样的,我将打开一个网页,在使用selenium单击该网页后,它会要求位置访问权限,屏幕上会出现一堆按钮,我正在尝试定位其中一个按钮,但即使正确给出了Xpath地址,我得到.NoSuchElementException:错误能够单击目标按钮你正在使用Selenium在Python中开发自动化项目,并遇到......
  • 在Python 3中删除两个指定字符串之间的字符串
    我正在从事一个NLP项目,该项目要求我从一段文本中删除计算机代码。代码包含在标签<pre><code>和</code></pre>之间。现在我可以做一个简单的正则表达式匹配,但我想概括这个函数,以便它可以删除任何两个指定字符串之间的文本,即使它们是嵌套的。例如,如果我有一个......
  • Azure Open AI - Python 和 Java API 之间 gpt4o 的结果截然不同
    我使用Java和PythonAPI对AzureOpenAI进行相同的调用,但收到截然不同的结果:相同的系统提示相同的用户提示适用于Java和Python的azureai包的相同(最新)版本尽管输入的用户和系统提示完全相同,但响应却非常不同-python提示是“正确的”并......
  • leetcode 输出错误? (Python)
    我的VSCode/本地终端给出了[1,4,1,5,1,6]的正确输出,但不知何故leetcode给了我完全不同的输出。我在这里错过了什么吗?这怎么可能?顺便说一下,这是wigglesort2将我的本地代码复制粘贴到leetcode中给出了不同的输出数组很难在没有看到你的代码的情况下......
  • 当 python 窗口的一部分不在屏幕上时,如何让它自己被记录?
    在Windows10中,大多数应用程序窗口都可以使用OBS等程序进行记录。当窗口被拖动以致其部分内容在显示屏上不可见时,通常OBS仍会接收窗口的内容,即使它在屏幕上不可见。但是,在编写python应用程序时,这似乎不以相同的方式工作。我尝试了几种不同的类似GUI的模块......
  • 使用 aws cdk 设置用户池客户端属性以具有读/写访问权限 - Python
    我试图根据属性给予一些自定义属性特定的读/写访问权限。我收到此错误。资源处理程序返回消息:“无效写入创建客户端时指定的属性(服务:CognitoIdentityProvider,状态代码:400,请求ID:<request_id>)”(RequestToken:<request_token>,HandlerErrorCode:InvalidRequest)任何人都可以为......
  • 试图找出此页面的逻辑:存储了大约 ++ 100 个结果 - 并使用 Python 和 BS4 进行了解析
    试图找出此页面背后的逻辑:我们已将一些结果存储在以下数据库中:https://www.raiffeisen.ch/rch/de/ueber-uns/raiffeisen-gruppe/Organization/raiffeisenbanken/deutsche-schweiz.html#accordionitem_18104049731620873397从a到z大约:120个结果或更多:......