Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Python] Wat doe ik hier verkeerd?

Pagina: 1
Acties:

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 20-11 21:25
Uit een python tutorial, de beschrijving van de opdracht:
The target of this exercise is to create two lists called x_list and y_list, which contain 10 instances of the variables x and y, respectively. You are also required to create a list called "big_list", which contains the variables "x" and "y", 10 times each, by concatenating the two lists you have created.
De opdracht uit de tutorial die ik gewijzigd heb:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x = object()
y = object()

# change this code
x_list = [1,2,3,4,5,6,7,8,9,10]
y_list = [11,12,13,14,15,16,17,18,19,20]
big_list = x_list + y_list

print "x_list contains %d objects" % len(x_list)
print "y_list contains %d objects" % len(y_list)
print "big_list contains %d objects" % len(big_list)

# testing code
if x_list.count(x) == 10 and y_list.count(y) == 10:
    print "Almost there..."
if big_list.count(x) == 10 and big_list.count(y) == 10:
    print "Great!"


Ik krijg vervolgens dit:

code:
1
2
3
x_list contains 10 objects
y_list contains 10 objects
big_list contains 20 objects


Uit de code maak ik op dat het 10 moet zijn, en niet 20. Waarom zou dat 10 moeten zijn. Twiekers die hier het antwoord weten? :?

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je moet lijsten met 10 x-en en 10 y-en maken. Dit kan korter dan x_list = [x,x,x,x,x,x,x,x,x,x]. Probeer x en 10 samen te gebruiken. Samenvoegen tot big_list doe je al goed.

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 20-11 21:25
Daos, bedankt voor je reactie.

Ik heb gekeken hoe ik een array/list kon maken waar ik een code zocht om 1 t/m 10 kon creëren. Heb je hierover een suggestie?

En wat bedoel je met "Probeer x en 10 samen te gebruiken."?

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je moet geen lijst met cijfers a la [1,2,3,4 etc] maken, maar een lijst met 10 x-en. Je kan direct [x,x,x,x,x,x,x,x,x,x] gebruiken, maar je kan dit ook korter noteren:
Just as in strings, Python supports forming new lists with a repeating sequence using the multiplication operator:
code:
1
print [1,2,3] * 3
edit:
1 tot 10 genereren kan trouwens met range:
code:
1
2
x_list = range(1, 11)
print x_list


Dit heb je bij deze opdracht dus niet nodig.

[ Voor 18% gewijzigd door Daos op 25-06-2013 03:02 . Reden: Mijn leet google-skillz gebruikt ]


  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 20-11 21:25
Bedankt voor die tip over range.

En dat print met de *-operator had ik gewoon moeten zien, dom van mij.

Als ik het zo doe
code:
1
2
3
4
# change this code
x_list = [1,2]*5
y_list = [1,2]*5
big_list = x_list + y_list


Krijg ik nog altijd dit resultaat:
big_list contains 20 objects
terwijl het 10 zou moeten zijn.

Hij telt de x en y. Maar die zitten in de parameters van object, waarvan de auteur niet aangegeven heeft dat in die object parameters iets moest staan. Enig idee wat ik hier verkeerd doe?

Check je PM trouwens.

[ Voor 16% gewijzigd door Hatsieflatsie op 25-06-2013 03:15 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Die 20 is gewoon goed. Er staat:
a list called "big_list", which contains the variables "x" and "y", 10 times each
De volgende code werkt, maar kan dus korter genoteerd worden:
code:
1
2
3
x_list = [x,x,x,x,x,x,x,x,x,x]
y_list = [y,y,y,y,y,y,y,y,y,y]
big_list = x_list + y_list


offtopic:
/me Ik ga mijn bed maar eens opzoeken...

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 20-11 21:25
Volgens de tutorial zou de 20 voor big_list niet goed moeten zijn, ook al dacht ik van wel. Maar ik ga een tutorial niet tegenspreken. Hij geeft namelijk het volgende aan:
Python:
1
2
3
4
5
# testing code
if x_list.count(x) == 10 and y_list.count(y) == 10:
    print "Almost there..."
if big_list.count(x) == 10 and big_list.count(y) == 10:
    print "Great!"

Als die 10 niet verschijnt, dan krijg je geen "Great!" melding, en krijg ik geen pop-up dat ik de test goed uitgevoerd heb. Nog los van de vraag, waar hij de x meent te vinden.

offtopic:
/me Je meedenken waardeer ik zeer. Fijne nacht toegewenst. ;).

  • swtimmer
  • Registratie: Augustus 2006
  • Laatst online: 22-11 21:45

swtimmer

Ontrafelt het leven!

Tijdje geleden dat ik Python deed maar doet .count() niet tellen hoevaak X in biglist voorkomt?

Dus "x" komt 10 keer voor en ook "y" komt 10 keer voor maar de lengte van je lijst is 20.

/edit, x en y zijn dus gewoon objecten wat dus van alles kan zijn.

[ Voor 15% gewijzigd door swtimmer op 25-06-2013 03:41 ]


  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
je hebt gelijk. als je wilt tellen hoeveel objecten je in je lijst hebt, moet je len() gebruiken

Python:
1
2
3
x_list = [1,2,3,4,5,6,7,8,9]

print len(x_list)

  • c0burn
  • Registratie: April 2010
  • Laatst online: 22:33

c0burn

Feed your head

Je moet x_list en y_list niet vullen met getallen, maar met x en y

code:
1
2
3
x_list = [x]*10
y_list = [y]*10
big_list = x_list + y_list

Remember what the dormouse said


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je kan trouwens op Expected Output klikken en je ziet dan:
code:
1
2
3
4
5
x_list contains 10 objects
y_list contains 10 objects
big_list contains 20 objects
Almost there...
Great!


big_list heeft dus als je het goed doet 20 objecten.
Pagina: 1