Wir erstellen ein Addon (simples Tutorial von Anfang bis Ende)

  • so ich morgen auch wieder früh raus, aber morgen ist mein letzter und dann ist WE (für mich). So ich bin raus für heute!

    Gruß Andy

    Meine Systeme
    Win7 PC mit Kodi 15.2 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (Wohnzimer)
    Fire TV Stick mit Kodi 15.2 Isengard (Schlafzimmer)
    Ipad 3 IOS 9.0.2 mit Kodi 15.2 Isengard

  • Man kann auch mit den Namen eines Objektes innerhalb der Liste Suchen.
    Wobei anhand des Objektes der Index dieses Objektes ausgeworfen wird.
    Syntax:

    Listen Name.index(Objekt)

    Beispiel:
    Tiere=['Affe','Tiger','Kuh']
    Tiere.index("Tiger")


    Zählen mit len()


    oder man macht es unnützerweise so:


    wenn man so döspaddelig ist und den Index vergißt.


  • oder man macht es unnützerweise so:

    wenn man so döspaddelig ist und den Index vergißt.

    Das ist cool!!!


    Zu den Schleifen kommen wir auch im nächsten Thema.


    Grußwort Jan

  • Verstanden Rene'?

    Noch mehr Fragen zum Thema 4?


    Ok warte noch 1 Stunde auf Fragen zum Thema 4.

    Dann lade ich Thema 5 hoch.

    Sollten dann noch Fragen zum Thema 4 oder 3 kommen.

    Bitte in der Fragestellung mit angeben aus Welchen Thema (1,2,3,4)

    So das es für die Allgemeinheit leichter ist zu sortieren welche Frage nun wozu gehört.


    Gruß Jan

  • Danke Jan. Tja war wieder mal die "Kleinigkeiten" die es ausmachen ob etwas funktioniert oder nicht :rolleyes: .
    Soweit alles klar.

    Nur eine Grundsätzliche Frage:

    Warum soll ich mit einem 'Befehl' ein Objekt in einer Liste ersetzen. Da kann ich doch gleich einfach das Objekt umbenennen. Der Sinn erschließt sich mir hier nicht

    Man kann auch ein Objekt mit einen anderen Ersetzen:
    Syntax:
    Listen Name[index des Objektes das ersetzt werden soll]=Neues Objekt

    Beispiel:
    Tiere=['Affe','Tiger','Kuh']
    Tiere[0]='Vogel'

    Da kann ich doch einfach den 'affen' umbenennen auf 'vogel'

  • Hier im Editor kannst du das aber im Programm (Add-On) willst du wohl nicht immer den Editor nähmen damit es geht.
    Und noch was wen du eine Ausgabe möchtest dann brauchst du print
    Wen du den Text den du hier hast auf Pappire willst brauchst du ein Drucker

  • Warum soll ich mit einem 'Befehl' ein Objekt in einer Liste ersetzen. Da kann ich doch gleich einfach das Objekt umbenennen. Der Sinn erschließt sich mir hier nicht

    Später im Addon erstellst Du eine Liste vielleicht aus dem Zugriff auf eine Website und Du willst den einen Wert ändern.

    Natürlich kannst Du auch anstatt Vogel Bär schreiben aber in der Schule konntest Du ja auch nicht wenn die Aufgabe 5+6 war 5+8 rechnen denn dann war das Ergebnis falsch und viel anders ist das auch hier nicht.
    Ist auf der Arbeit ja auch nicht anders kannst ja in der Autowerkstatt wenn Du die Räder wechseln sollst nicht weil Du Lust hast den Motor ausbauen!!


    Gruß Jan

  • [h1]Der Datentyp Dictionary[/h1]

    Die zusammengesetzten Datentypen, die wir bisher behandelt haben Strings, Listen und Tupel verwenden Ganzahlen als Index um Teile des Dateitypen anzusprechen.

    Wir erinnern uns bitte!

    Beispiel Dateityp string:

    'Hans' String
    0123 index

    Das ist bei einen Dictionary nicht der Fall.
    Ein Dictionary besteht aus Paaren die einen Schlüssel(Key) und ein dazugehöriges Wert halten.
    Das bedeutet zu jeden in einem Dictionary enthaltenden Schlüssel(key) gehört immer ein Wert.

    Ein Möglichkeit, ein Dictionary zu erzeugen, ist mit einem leeren Dictionary zu beginnen und dann Elemente hinzuzufügen.
    Syntax leeres Dictionary:

    Dictonary Name = {}

    Beispiel:
    ger2eng = {} erzeugt ein Dictionary mit den Namen ger2eng

    Diesem Leeren Dictionary müssen wir nun Paare hinzufügen die aus einem Schlüssel und einem dazugehörigen Wert bestehen.

    Syntax hinzufügen von Elementen zu einem leeren Dictionary:
    Dictonary Name[Schlüssel] = Wert

    Beispiel:


    ger2eng = {}erstellt ein leeres Dictionary mit denn Namen ger2eng
    ger2eng['eins'] = 'one'fügt den Dictionary ger2eng ein Element mit den Schlüssel(key) eins und dem dazugehörigen Wert one zu.
    ger2eng['zwei'] = 'two'fügt den Dictionary ger2eng ein Element mit den Schlüssel (key) zwei und dem dazugehörigen Wert two zu.
    ger2eng['drei'] = 'three'fügt den Dictionary ger2eng ein Element mit den Schlüssel (key) drei und dem dazugehörigen Wert three zu.
    print ger2enggibt den aktuellen Wert des Dictionarys aus

    >>>{'eins': 'one', 'zwei': 'two','drei': 'three'}


    Wir können ein Dictonary aber auch erstellen in dem wir im gleich die Schlüssel(key)-Wert Paare hinzufügen:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print ger2eng
    >>>{'zwei': 'two', 'eins': 'one', 'drei': 'three'}

    Wie wir sehen gibt die Ausgabe mit Print nicht die korrekte Reihenfolge wieder.
    Zum Glück gibt es keinen Grund, sich um diese Reihenfolge überhaupt zu Kümmern denn
    wir müssen ja nicht auf einen Ganzahl Index zugreifen um einzelne Element anzusprechen
    statt dessen benutzen wir die Schlüssel um die entsprechenden Werte zu ermitteln:

    Beispiel:

    print ger2eng['zwei']
    >>>'two'

    [h1]Dictionary Operationen[/h1]

    Die del Anweisung entfernt ein Schlüssel-Wert Paar aus dem Dictionary:

    Syntax:
    del Dictionary Name[Schlüssel]

    Beispiel:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    del ger2eng['eins']
    print ger2eng
    >>>{'drei': 'three', 'zwei': 'two'}

    Wir können auch einen neuen Wert für einen Schlüssel setzen:

    Syntax
    Dictionary Name[Schlüssel] = Neuer Wert

    Beispiel:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    ger2eng['drei']='keine Ahnung'
    print ger2eng
    >>>{'drei': 'keine Ahnung', 'eins': 'one', 'zwei': 'two'}

    Die len Funktion die wir ja schon kennen funktioniert auch mit dem Typ Dictionary; sie gibt die Anzahl der Schlüssel-Wert Paare zurück:

    Syntax:
    len(Dictionary Name)

    Beispiel:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print len(ger2eng)
    >>>3

    [h1]Dictionary Methoden[/h1]

    Eine Methode ist ähnlich einer Funktion sie übernimmt Parameter und gibt einen Wert zurück aber die Syntax ist anders. Die keys Methode übernimmt z. B. ein Dictionary und gibt eine Liste von Schlüsseln zurück, die im Dictionary vorkommen.
    Aber anstatt der Syntax für Funktionen keys(ger2eng) verwenden wir die Methoden-Syntax ger2eng.keys().

    Die keys Methode:

    Sie gibt eine Liste der Keys (Schlüssel) des Dictionary aus

    syntax:
    Dictionary Name.keys()

    Beispiel:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print ger2eng.keys()
    >>>['drei', 'eins', 'zwei']

    Die values Methode:

    Sie gibt eine Liste der Werte des Dictionarys aus:

    Syntax:
    Dictionary Name.values()

    Beispiel:
    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print ger2eng.values()
    >>>['three', 'one', 'two']

    Die item Methode:

    Die items Methode gibt beide zurück, und zwar in der Form eine Liste von Tupeln ,eines für jedes Schlüssel-Wert Paar:

    Syntax:
    Dictionary Name.items()

    Beispiel:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print ger2eng.items()
    >>>[('drei', 'three'), ('eins', 'one'), ('zwei', 'two')

    Die has_key Methode:

    Mit der has key Methode kann man prüfen ob ein Key(Schlüssel) in einem Dictionary vorhanden ist:

    Ist das Key(Schlüssel) im dem Dictionary vorhanden wird True ausgegeben ist das Key(Schlüssel) nicht im Dictionary vorhanden wird False ausgegeben.

    Syntax:
    Dictionary Name.has_key(Schlüssel)

    Beispiele:

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print ger2eng.has_key('eins')
    >>>True

    ger2eng = {'eins': 'one', 'zwei': 'two', 'drei': 'three'}
    print ger2eng.has_key('Apfel')
    >>>False

    [h1]Schleifen[/h1]

    Schleifen, werden benötigt, um einen Codeblock, den man auch als Schleifenkörper bezeichnet,
    wiederholt auszuführen.
    In Python gibt es zwei Schleifentypen: die while-Schleife und die for-Schleife.

    [h1]Die while-Schleife:[/h1]

    While bedeutet so lange um das etwas zu verdeutlichen sehen wir und mal ein
    Beispiel einer while Schleife an.
    Das im Prinzip folgende Syntax hat:

    while Bedingung:
    Anweisung

    Beispiel:


    Python
    frucht='Ananas'            
    index=0                     
    while index < len(frucht):  
        letter = frucht[index]   
        print letter             
        index = index + 1


    Ergebnis print:
    >>>A
    >>>n
    >>>a
    >>>n
    >>>a
    >>>s

    Erklärung:

    frucht='Ananas'erstellt eine Variable frucht mit den string Ananas als Wert
    index=0erstellt eine variable index mit dem Wert 0 (die als zähler benutzt wird)
    while index < len(frucht):so lange der index kleiner ist als die länge des strings frucht
    letter = frucht[index]ist letter = fruit[index]
    print lettergebe letter aus
    index = index + 1erhöht den Zähler um 1 und gibt ihn zu while

    Einen Index zu verwenden um einen Satz von Werten zu durchlaufen ist so gebräuchlich, dass Python dafür eine alternative, einfachere Syntax bereitstellt die for Schleife:

    [h1]Die for Schleife:[/h1]

    iteration = beschreibt allgemein einen Prozess mehrfachen Wiederholens gleicher oder ähnlicher Handlungen zur Annäherung an eine Lösung oder ein bestimmtes Ziel.


    In Python dient die for-Schleife zur Iteration über ein Sequenz von Objekten

    Syntax:

    for Variable in Sequenz:
    Anweisung1
    Anweisung2
    ...
    Anweisungn
    else:
    Else-Anweisung1
    Else-Anweisung2
    ...
    Else-Anweisungm


    Beispiel :

    Python
    frucht='Ananas'
    for letter in frucht:
        print letter


    >>>A
    >>>n
    >>>a
    >>>n
    >>>a
    >>>s

    Zu dem else Zweig in der For Schleife sowie etwas ausführlich zur For Schleife kommen wir beim nächsten mal wenn wir auf die Vergleichsoperatoren eingegangen sind.

  • Hallo @skatulskijean

    müssen da immer Leerzeichen dazwischen, wie z.B. ger2eng['drei']_ =_'three'
    Das Leerzeichen habe ich jezt als Unterstrich geschrieben. Das ist mir nicht immer deutlich, ob Leerzeichen oder nicht.

    Gruß Andy

    Meine Systeme
    Win7 PC mit Kodi 15.2 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (Wohnzimer)
    Fire TV Stick mit Kodi 15.2 Isengard (Schlafzimmer)
    Ipad 3 IOS 9.0.2 mit Kodi 15.2 Isengard

  • Hallo @skatulskijean
    müssen da immer Leerzeichen dazwischen, wie z.B. ger2eng['drei']_ =_'three'
    Das Leerzeichen habe ich jezt als Unterstrich geschrieben. Das ist mir nicht immer deutlich, ob Leerzeichen oder nicht.

    Die Frage hat sich gerade erledigt. Ja es müssen die Lerrzeich gesetzt werden. ich habe den falschen Klammertyp verwendet.
    ger2eng ={}

    mit den [] Typ habe ich immer ne Fehlermeldung bekommen. Jetzt bekomme ich auch das Egebnis heraus, was Jan beschrieben hat.

    Gruß Andy

    Meine Systeme
    Win7 PC mit Kodi 15.2 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (PC Zimmer)
    Apple TV1 Betriebssystem OpenELEC, Kodi 15.1 Isengard (Wohnzimer)
    Fire TV Stick mit Kodi 15.2 Isengard (Schlafzimmer)
    Ipad 3 IOS 9.0.2 mit Kodi 15.2 Isengard

  • Ja es müssen die Lerrzeich gesetzt werden.

    Nein, musst Du nicht. Es geht auch ger2eng={}. Mach' Dir mal den Unterschied zwischen einem {} (Dictionary) und einem [] (Aufzählung/Array) klar.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!