| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| ef:loesungen_beispiele [2022/09/19 14:23] – [Aufgaben D] lehmannr | ef:loesungen_beispiele [2022/09/20 15:14] (aktuell) – lehmannr |
|---|
| |
| ==== Aufgaben D ==== | ==== Aufgaben D ==== |
| - Zunächst wird eine Funktion mit zwei Parametern definiert (''change_value(list1, list2)''). Beim Parameter ''list1'' wird das dritte Element ''list1[2]'' auf 5 gesetzt: dies geschieht an Ort. Bei ''list2'' wird hingegen ein neues Listenobjekt erzeugt und ''list2'' zeigt dann auf dieses neue Objekt. \\ Nun werden zwei Listen definiert ''l1'' und ''l2''. \\ Die Funktion ''change_value'' wird aufgerufen mit den beiden definierten Listen ''l1'' und ''l2'': da alle Variablen in Python Referenztypen sind, werden die Adressen (Referenzen), welche zu ''l1'' und ''l2'' zeigen, übergeben \\ ''list1'' zeigt nun auf dieselbe Adresse wie ''l1'' und ''list2'' auf dieselbe wie ''l2''. Da nun ''list1'' an Ort und Stelle geändert wird, verändert sich auch ''l1''. Da aber ''list2'' einem neuen Listenobjekt ''[6,10]'' zugewiesen wird, wird ''l2'' nicht verändert. \\ Am Schluss werden ''l1'' und ''l2'' ausgegeben: ''l1=[1,2,5,4]'' bzw. ''[l2=10,11,12]'' | - Zunächst wird eine Funktion mit zwei Parametern definiert (''change_value(list1, list2)''). Beim Parameter ''list1'' wird das dritte Element ''list1[2]'' auf 5 gesetzt: dies geschieht an Ort. Bei ''list2'' wird hingegen ein neues Listenobjekt erzeugt und ''list2'' zeigt dann auf dieses neue Objekt. \\ Nun werden zwei Listen definiert ''l1'' und ''l2''. \\ Die Funktion ''change_value'' wird aufgerufen mit den beiden definierten Listen ''l1'' und ''l2'': da alle Variablen in Python Referenztypen sind, werden die Adressen (Referenzen), welche zu ''l1'' und ''l2'' zeigen, übergeben \\ ''list1'' zeigt nun auf dieselbe Adresse wie ''l1'' und ''list2'' auf dieselbe wie ''l2''. Da nun ''list1'' an Ort und Stelle geändert wird, verändert sich auch ''l1''. Da aber ''list2'' einem neuen Listenobjekt ''[6,10]'' zugewiesen wird, wird ''l2'' nicht verändert. |
| | - Am Schluss werden ''l1'' und ''l2'' ausgegeben: ''l1=[1,2,5,4]'' bzw. ''[l2=10,11,12]'' |
| | |
| | ==== Aufgaben E ==== |
| | <sxh python> |
| | |
| | Materialien = [RED_SANDSTONE, GRASS, WOOL, DIAMOND_BLOCK, GOLD_BLOCK] |
| | |
| | for i in [0,1,2,3,4]: # besser: for i in range(5), i läuft von 0 bis 4 |
| | agent.set_item(Materialien[i], 1, i+1) |
| | |
| | for i in range(1,6): # hier läuft i von 1 bis 5 |
| | agent.set_slot(i) |
| | agent.place(BACK) |
| | agent.move(FORWARD,1) |
| | </sxh> |
| | |
| | ==== Aufgaben F ==== |
| | <sxh python> |
| | l1 = range(9) # => [0,1,2,3,4,5,6,7,8] |
| | l2 = range(0,20,3) # => [0,3,6,9,12,15,18] |
| | l3 = range(20,40,4) # => [20,24,28,32,36] |
| | |
| | player.say(l1) |
| | player.say(l2) |
| | player.say(l3) |
| | </sxh> |
| | |
| | ==== Aufgaben G ==== |
| | === Linie Duo mit dem Agenten === |
| | |
| | <sxh python> |
| | def linie_duo(n, mat1, mat2): |
| | agent.set_item(mat1, 1, 1) |
| | agent.set_item(mat2, 1, 2) |
| | for i in range(n): |
| | agent.set_slot(1) |
| | agent.move(FORWARD,1) |
| | agent.place(BACK) |
| | agent.set_slot(2) |
| | agent.move(FORWARD,1) |
| | agent.place(BACK) |
| | |
| | linie_duo(5, GOLD_BLOCK,GRASS) |
| | </sxh> |
| | |
| | === linie_duo ohne den Agenten === |
| | <sxh python> |
| | def linie_duo_neu(n, mat1, mat2): |
| | for i in range(3,n+4,2): |
| | blocks.place(mat1, pos(i,0,0)) |
| | blocks.place(mat2, pos(i+1,0,0)) |
| | |
| | linie_duo_neu(10, GOLD_BLOCK, DIAMOND_BLOCK) |
| | </sxh> |
| | === linie_duo mit modulo und einem einfachen range-Befehl === |
| | <sxh python> |
| | def linie_duo_neu2(n, mat1, mat2): |
| | for i in range(3,n+5,1): |
| | if (i%2==0): |
| | blocks.place(mat1, pos(i,0,0)) |
| | else: |
| | blocks.place(mat2, pos(i,0,0)) |
| | |
| | linie_duo_neu2(10,GOLD_BLOCK,CYAN_WOOL) |
| | </sxh> |