Probleme mit Fraction

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Immortalmemo
User
Beiträge: 13
Registriert: Mittwoch 22. Oktober 2014, 00:02
Wohnort: Berlin

Guten Abend,

ich bin gerade dabei die LR-Zerlegung in Python zu implementieren.
Da ich hier auch mit Brüchen rumhantieren muss, wollte ich die Fraction-Klasse benutzen.
Ich kriege aber immer einen Fehler und zwar:
ValuError: Invalid literal for Fraction: ' '

Code: Alles auswählen

from fractions import *
from sys import stdin
for line in stdin:
                  A=line.split(",")
                  n=len(A)

.....Hier hab ich L bereits als Einheitsmatrix implementiert der Größe nxn

def LR_fact(A):
                  R=A
                  for i in range(n-1):
                         for j in range(i+1,n):
                                 L[j][i]=Fraction(R[j][i])/Fraction(R[i][i])
                                 for k in range(i,n):
                                         R[j][k]=R[j][k]-L[j][k]*R[i][k]
                  return L,R
LR=LR_fact(A)
print(LR)

Als Eingabe erhalte ich z.B. A= 1 2 3, 4 5 6, 3 6 7

Ich glaube ich habe noch nicht verstanden wie ich Fraction verwende. Kann mir jemand sagen was ich da falsch mache?
Liegts vlt daran, dass die Elemente der Matrix bei mir characters sind?

Vielen Dank im Voraus
BlackJack

@Immortalmemo: Die Fehlermeldung selbst ist doch eigentlich recht eindeutig, die kommt so zustande:

Code: Alles auswählen

In [2]: Fraction(' ')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-7fbfce8387f1> in <module>()
----> 1 Fraction('')

/usr/lib/python2.7/fractions.pyc in __new__(cls, numerator, denominator)
    123                 if m is None:
    124                     raise ValueError('Invalid literal for Fraction: %r' %
--> 125                                      numerator)
    126                 numerator = int(m.group('num') or '0')
    127                 denom = m.group('denom')

ValueError: Invalid literal for Fraction: ' '
Schau Dir einfach mal an was `A` enthält und was bei den Indexzugriffen heraus kommt, beziehungsweise warum das eine Zeichenkette ist die ein Leerzeichen enthält. Das sollte eigentlich offensichtlich sein.
Antworten