Мне нужно написать функцию Python, которая может решить любое квадратное уравнение в форме: ax2 + bx + c = 0, а также обработать особый случай, когда некоторые из коэффициентов равны нулю, мне нужно написать функцию с 3 необязательными аргументами ключевого слова, со значением по умолчанию 0. Таким образом, эту функцию можно использовать с любым порядком коэффициентов, если квадратичный член равен a, линейный член равен b, а константа равна c. Кроме того, можно опустить коэффициенты, если они равны 0. И я должен вернуть список на основе следующих условий: Из этих коэффициентов вычислить каждое действительное решение и вернуть их в виде списка, не длиннее 2. Вернуть None, если все коэффициенты равны нулю, потому что в этом случае у вас было бы бесконечное количество решений. Если решения нет или есть только сложные, то вернуть пустой список. Если есть реальный корень с кратностью 2, то вернуть один длинный список. Однако проблема в том, что я не знал, как установить значения словаря по умолчанию, когда я получаю пустой словарь в качестве входных данных. Заранее спасибо за вашу помощь!
Это мой код
import math
def quadratic_solve(**dictr):
List=[]
x1=dictr['a']
x2=dictr['b']
x3=dictr['c']
delta=x1*x1-4*x2*x3
if (x1==0 and x2==0 and x3==0):
return None
if (x1==0):
List.append(-x3/x2)
return List
if(dictr['b']*dictr['b']-4*dictr['a']*dictr['c']<0) :
return List
if(x2*x2-4*x1*x3>0) :
List.append((-x2+math.sqrt(delta))/2*x1)
List.append((-x2-math.sqrt(delta))/2*x1)
return List
1 ответ
Вы могли бы лучше использовать функцию Python, чтобы уменьшить объем кода (т.е. сосредоточиться на основных условиях):
def quadratic_solve(params):
a,b,c = [params.get(p,0) for p in "abc"] # get this out of the way early
if a==0: return [] if b==0 else [-c/b] # linear equation
b2_4ac = b*b-4*a*c # part under the square root
if b2_4ac < 0: return [] # complex result
p,n = (-b+b2_4ac**0.5)/2/a, (-b-b2_4ac**0.5)/2/a # + or - square root results
return [p] if p==n else [p,n] # one or two solutions
quadratic_solve({'a':2,'b':3}) # [0.0, -1.5]
**dictr
с dictr['a'], dictr['b']...
точно так же, как и параметры со значениями по умолчанию. Это просто стандартная распаковка параметров в Python, поэтому словарь не является ненужным усложнением.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.