Gör en funktion som tar en lista av bråk och delar in nämnaren och täljaren i en tupel av listor
Jag kommer inte på hur jag borde lösa detta...
Write a function getNumbers(listOfFractions), that gets a list of fractions as an argument.
The function parses the numerators and deminominators into their own lists, and returns both lists in a tuple.
For example, if called with agument list [1/2, 3/4], the function would return a tuple that contains lists ([1,3], [2,4]).
Jag har försökt lösa det med
def getNumbers(listOfFractions):
i = 0
while i in range[0,len(listOfFractions),1):
list = tuple(list(listOfFractions[i].split('\')))
Innehåller listan med rationella tal strängar? Det vill säga,
['1/2','3/4', ...]?
frac = []
for i in range(random.randint(10,15)):
f = Fraction(random.randint(1,5), random.randint(2,8))
frac.append(f)
print "List of fractions:", frac
num,den = getNumbers(frac)
print "Numerators:", num
print "Denominators:", den
det där är baskoden varefter vi skall lägga in vårt. Allt vad jag vet tyvärr.
här är Fraction en funktion som gör vad?
skapar den strängar?
import random
from fractions import Fraction
oj detta blev bort från toppen...
tror den skapar integer type objects?
Edit: Okej, ska kika på den funktionen. Ah, okej. Då funkar inte mitt förslag nedan.
Angående din kod:
"while i in range[0,len(listOfFractions),1):"
du kan använda "for i in listOfFractions:" istället, och då itererar man över varje element i listan. Och du använder "[" istället för "(" vid range-funktionen.
"list = tuple(list(listOfFractions[i].split('\')))"
här "skriver du över" list i varje iteration? och du ska splitta på '/', inte '\'?
Här är ett förslag som gör jobbet i alla fall.
def getNumbers(listOfFractions):
out = []
for i in listOfFractions:
numerator, denominator = int(i[0]), int(i[-1])
out.append([numerator, denominator])
return tuple(out)
den ger en sådanhäran felkod
numerator, denominator = int(i[0]), int(i[-1])
TypeError: 'Fraction' object does not support indexing
Le oeuf du canard skrev :den ger en sådanhäran felkod
numerator, denominator = int(i[0]), int(i[-1])
TypeError: 'Fraction' object does not support indexing
Ja,
byt ut till:
numerator, denominator = i.numerator, i.denominator
Fraction-objektet har de attributen.
num,den = getNumbers(frac)
ValueError: too many values to unpack
nu får jag denna istället
Ah, jag missuppfattade.
def getNumbers(listOfFractions):
nums = []
dens = []
for i in listOfFractions:
numerator, denominator = i.numerator, i.denominator
nums.append(numerator)
dens.append(denominator)
return tuple([nums,dens])
Aah super najs!
Le oeuf du canard skrev :Aah super najs!
Eller, kortare:
def getNumbers(listOfFractions):
nums = [i.numerator for i in listOfFractions]
dens = [i.denominator for i in listOfFractions]
return tuple([nums, dens])