Ich hatte fast genau dieses Problem zu lösen und hatte eine Funktion, um die positive Wurzel zu finden und einen Valueerror zu erhöhen, wenn es keine gab:
def find_positive_root(a):
for b in a:
if type(b) == complex or b<0:
continue
return b
raise ValueError('No positive root in {}'.format(a))
Den Vorteil eine spezielle Funktion für das Schreiben ist, dass Sie kann es prüfen:
In [6]: find_positive_root([-4.3, 2.3j, 3, (-4+8j)])
Out[6]: 3
In [7]: find_positive_root([1., -4j, -2.3, 4j])
Out[7]: 1.0
In [8]: find_positive_root([-1., -4j, -2.3, 4j])
...:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-138-a4ed7675f551> in <module>()
----> 1 find_positive_root([-1., -4j, -2.3, 4j])
<ipython-input-132-9cd37f48e3bb> in find_positive_root(a)
4 continue
5 return b
----> 6 raise ValueError('No positive root in {}'.format(a))
ValueError: No positive root in [-1.0, (-0-4j), -2.3, 4j]
Ihre Funktion (i), was es zurückgibt ... und was ist b? –
Warum setzen Sie 'a' in if-Anweisung - es ist eine Liste. Sie müssen "b" überprüfen, wie es ist Listenelement – j2ko
Ist es ein positives 'int' wie' 3', oder ein positives 'float' wie' 3.0', oder sogar ein positiver Komplex ohne imaginären Teil wie '3 + 0j '? –