Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
informatik:algorithmisch:aufgabe:pythonobjects [2024/07/16 13:21] – angelegt technik | informatik:algorithmisch:aufgabe:pythonobjects [2024/07/17 07:33] (aktuell) – [Aufgabe 7] technik | ||
---|---|---|---|
Zeile 331: | Zeile 331: | ||
</ | </ | ||
++++ | ++++ | ||
+ | |||
+ | ==== Aufgabe 8 ==== | ||
+ | Solarmodule sind in aller Munde. Diese bestehen aus einzelnen Solarzellen. Diese haben einen Spannung von ca. 0,6 Volt. Damit eine Solarzelle also 6V liefert, müssen 10 Solarzellen zu einem Modul zusammengeschaltet werden. Wir nehmen vereinfachend an, dass eine einzelne Solarzelle immer 1A an Strom liefert. Damit liefert eine einzelne Zelle P = U * I = 0,6V * 1A = 0,6 Watt. Ein Solarmodul hat immer eine Seriennummer. | ||
+ | |||
+ | - Schreibe eine Klasse " | ||
+ | - Man soll nur Solarmodule mit 120, 210 und 390 Watt erzeugen und an ihrer Seriennummer unterscheiden können. Es sind also nur bestimmte Anzahlen an Solarzellen pro Solarmodul zulässig. Seriennummer, | ||
+ | - einzelne Solarzellen in einem Modul können verschattet sein. Früher brach dann die Leistung des gesamten Moduls komplett ein. Ein findiger Ingenieur hat eine technische Lösung dafür entwickelt. Damit er die auch umsetzen kann, muss man herausfinden können, wie viele Solarzellen in einem Modul gerade verschattet sind. Bei Verschattung bricht die Spannung einer Solarzelle auf unter 0,3V ein. Erweitere die Klasse " | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | === Tipps === | ||
+ | Du musst dir für ein Solarmodul immer sehr viele Solarzellen erzeugen. Am besten geht das mit einem Array von Solarzellen, | ||
+ | </ | ||
+ | |||
+ | ++++ Klicke hier für einen Lösungsansatz | | ||
+ | <file python solars.py> | ||
+ | import random | ||
+ | |||
+ | class solarmodule: | ||
+ | def __init__(self, | ||
+ | # Wenn die Wattwerte stimmen - Objekt bauen | ||
+ | if (watts == 120) or (watts == 210) or (watts == 390): | ||
+ | self.watts = float(watts) | ||
+ | self.cells = self.buildCellArray() | ||
+ | # Sonst mit Fehlermeldung abbrechen | ||
+ | else: | ||
+ | | ||
+ | | ||
+ | self.serial = serial | ||
+ | |||
+ | # Modul mit Zellen füllen | ||
+ | def buildCellArray(self): | ||
+ | # Anzahl der Zellen aus der Wattzahl errechnen | ||
+ | cellCount = self.watts/ | ||
+ | # Array für Zellen erzeugen | ||
+ | cells = [] | ||
+ | # Array mit Zellobjekten füllen | ||
+ | for i in range(int(cellCount)): | ||
+ | cells.append(solarcell(i, | ||
+ | return cells | ||
+ | |||
+ | # Zufällige Zelle unter 0.6 Volt setzen | ||
+ | # Count gibt die Anzahl der zu veränderenden Zellen an | ||
+ | def shadowCells(self, | ||
+ | for j in range(count): | ||
+ | # Wende auf eine zufällige Zelle die Methode " | ||
+ | # Das ist eine üble Zeile, daher nochmal langsam: | ||
+ | # self : Schlüsselwort, | ||
+ | # returnRandomElement(self.cells) : Aufruf der Methode, Übergabe des Zellarrays. Die Methode returnRandomElement() nimmt gibt eine zufällige Zelle zurück | ||
+ | # setCurrent(0.2) | ||
+ | # Also kurz : "Setze die aktuelle Spannung einer beliebigen Zelle auf 0.2V." | ||
+ | self.returnRandomElement(self.cells).setCurrent(0.2) | ||
+ | |||
+ | # Anzahl der momentan verschatteten Zellen zurückgeben | ||
+ | def returnShadowedCells(self): | ||
+ | count = 0 | ||
+ | for h in range(len(self.cells)-1): | ||
+ | if self.cells[h].actualCurrent < 0.6: | ||
+ | count += 1 | ||
+ | return count | ||
+ | |||
+ | # Hilfsmethode: | ||
+ | def returnRandomElement(self, | ||
+ | zufallszahl = random.randint(0, | ||
+ | return array[zufallszahl] | ||
+ | | ||
+ | class solarcell: | ||
+ | def __init__(self, | ||
+ | | ||
+ | | ||
+ | | ||
+ | # Methode zum Setzen der Zellspannung (current) | ||
+ | def setCurrent(self, | ||
+ | self.actualCurrent = current | ||
+ | |||
+ | # Some Testing | ||
+ | |||
+ | # Modul erzeugen | ||
+ | module01 = solarmodule(1, | ||
+ | |||
+ | # Modul mit zufälliger Anzahl verschatteter Zellen ausstatten | ||
+ | module01.shadowCells(random.randint(0, | ||
+ | |||
+ | # Anzahl der verschatteten Zellen ausgeben | ||
+ | print(f' | ||
+ | </ | ||
+ | ++++ |