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

  • Nein irgendwie habe ich die auch nicht erhalten.

    Verstehe ich nicht da ja sonst auch andere Mails darüber ankommen!

    Schau mal in Deinen SPAM Ordner, vielleicht sind die da rein gelandet ;)

    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

  • [h1]Operatoren[/h1]

    Operatoren sind spezielle Symbole, die Rechenarten wie Addition und Multiplikation darstellen. Die Werte, die durch die Operatoren verknüpft werden, heißen Operanden
    Die meisten Operatoren für Zahlenwerte sind in Python ähnlich zu anderen Programmiersprachen.

    Hier eine Kurze Zusammenfassung zur Übersicht:


    OperatorBezeichnungBeispiel
    +, -Addition, Subtraktion10 -3
    *, /, %Multiplikation, Division, Rest27 % 7
    Ergebnis: 6
    +x, -xVorzeichen-3
    ~xBitweises Not~3 - 4
    Ergebnis: -8
    **Exponentiation10 ** 3
    Ergebnis: 1000
    or, and, notBoolsches Oder, Boolsches Und, Boolsches Nicht(a or b) and c
    in"Element von"1 in [3, 2, 1]
    <, <=, >, >=, !=, ==Die üblichen Vergleichsoperatoren2 <= 3
    |, &, ^Bitweises Oder, Bitweises Und, Bitweises XOR6 ^ 3
    <<, >>Shiftoperatoren6 << 3


    [h1]Die Vergleichsoperatoren:[/h1]

    Auf die Vegleichsoperatoren wollen wir näher eingehen:


    VergleichsoperatorBedeutung
    >=größer gleich
    <=kleiner gleich
    ==gleich
    !=ungleich


    Beispiele:

    Beispiel > ,<:

    Hier können wir gleich eine For Schleife mit if, else und elif benutzen
    und uns außerdem merken das eine Verkettung nur bei gleichen Dateityp möglich ist.
    Deswegen wird die gegeben Zahl die typ int ist mittels str(zahl) in der print Anweisung in einen String umgewandelt.

    Python
    Zahlen=[1,2,3,4,5,6,7,8,9,10]
    for zahl in Zahlen:
       if zahl > 5:
          print str(zahl)+' ist mehr als 5'
       elif zahl < 5:
          print str(zahl)+' ist weniger als 5'
       else:
          print str(zahl)+' ist gleich 5'

    >>>1 ist weniger als 5
    >>>2 ist weniger als 5
    >>>3 ist weniger als 5
    >>>4 ist weniger als 5
    >>>5 ist gleich 5
    >>>6 ist mehr als 5
    >>>7 ist mehr als 5
    >>>8 ist mehr als 5
    >>>9 ist mehr als 5
    >>>10 ist mehr als 5

    Beipiele ==:

    wir suchen die Zahl 6 in einer Liste:

    Python
    search=6
    Zahlen=[1,2,3,4,5,6,7,8,9,10]
    for zahl in Zahlen:
       if zahl == search:
         print str(zahl)+' gefunden.'
       else:
         pass


    >>>6 gefunden

    natürlich könnten wir das auch ohne das definieren der Variable Zahlen erreichen

    Python
    search=6
    
    
    for zahl in [1,2,3,4,5,6,7,8,9,10]:
       if zahl == search:
         print str(zahl)+' gefunden.'
       else:
         pass

    >>>6 gefunden


    Beispiel >=:

    Python
    search=6
    for zahl in [1,2,3,4,5,6,7,8,9,10]:
        if zahl >= search: 
           print zahl
        else:
           pass


    >>>6
    >>>7
    >>>8
    >>>9
    >>>10


    Beispiel <=:

    Code
    search=6
    for zahl in [1,2,3,4,5,6,7,8,9,10]:
        if zahl <= search: 
           print zahl
        else:
           pass

    >>>1
    >>>2
    >>>3
    >>>4
    >>>5
    >>>6

    Beispiel !=:

    Python
    search=6
    for zahl in [1,2,3,4,5,6,7,8,9,10]:
        if zahl != search: 
           print zahl
        else:
           pass


    >>>1
    >>>2
    >>>3
    >>>4
    >>>5
    >>>7
    >>>8
    >>>9
    >>>10

    Aufgaben:

    Aufgabe 1:

    Erstellt euch eine Funktion searchZahl(search) die auf die einfachste Art und Weise und mit geringsten Schreibaufwand die Zahlen von 1-25 hält und probiert die veschieden Möglichkeiten aus!
    Benutzt dabei euer Wissen aus den vorherigen Teilen.

    Aufgabe 2:

    Das ist eine Textsearch so wie ich Sie in Addons verwende um ohne Beachtung der Groß und Kleinschreibung sowie auch nur mit Teil-Suche ein optimales Ergebnis zu erreichen.
    Klärt selbständig was die noch nicht in den Teilen durchgesprochenen Begriffe machen .
    Erklärt Euch den Code Zeile für Zeile selbst.

    Macht daraus eine Funktion um sie in eventuellen Addons von Euch später ohne große Veränderungen nutzen zu können.

    Füllt else mit Leben!

    Python
    search=''
    for name in ['Hans','Hannelore','Hanes','Hanf']:
        if ((name.upper()).find(str.upper(search))>=0):
          print name
        else:
          pass


    [h1]Datei-Handling[/h1]

    Wir kennen bereits verschiedene Arten von Dateien, wie Musik-Dateien, Video-Dateien, Textdateien.
    Python uns eine einfache Möglichkeiten diese Dateien zu manipulieren.
    Im Allgemeinen teilen wir Dateien in zwei Kategorien ein, Textdatei und Binärdatei.
    Die Textdateien halten einfachen Text
    Die binären Dateien enthalten binäre Daten, die nur von Computer lesbar sind.


    Datei-öffnen

    Um eine Datei zu öffnen verwenden wir die open () Funktion.
    Sie erfordert zwei Argumente:

    1. den Path zur Datei oder nur den Dateinamen
    2 welcher Mode zum öffnen benutzt wird.

    Die verschiedenen Modes sind:


    Mode Bedeutung
    “r”öffnet ein File(Datei)read only, Du kannst Die Datei nur lesen nichts editieren oder löschen.
    "w”öffnet eine Datei zum schreiben.Das bedeutet wenn der File existiert löscht es den Inhalt und öffnet den File(Datei) zum schreiben.
    "a"Öffnet ein File(Datei) im Append(hinzufügen) Mode .Das bedeutet das man dem Inhalt des Files etwas hinzfügen kann wobei der hinzugefügte Inhalt am Ende des vorhandenen Inhalts angehangen wird.

    Ohne Angabe des Mode wird der default Mode ausgeführt (nur lesen).

    Wichtig eine mit open geöffnete Datei muß immer zum Abschluß mit close() geschlossen werden.
    Arbeiten an ständig offenen Dateien kostet mehr Speicher und führt mit der Zeit zu einer korrupten Datei.

    Wir erzeugen eine Leere Textdatei:

    Beispiel:


    Python
    f=open('beispiel.txt','w')
    f.close()

    Erzeugt eine Leere Textdatei im Verzeichnis der ausgeführten py Datei.

    Wir schreiben in eine Textdatei:


    Beispiel:

    Python
    f=open('beispiel.txt','w')
    f.write('Das ist ein Test.\n')
    f.write('Python ist schon cool.\n')
    f.close()


    Wir lesen eine Textdatei:

    Beispiel:

    Python
    f=open('beispiel.txt')
    inhalt=f.read()
    print inhalt
    f.close()

    Wir fügen etwas Inhalt hinzu.

    Beispiel:

    Python
    f=open('beispiel.txt','a')
    f.write('wir lernen leider nicht schnell genug.\n')
    f.write('Denn auch Jan hat nicht immer ausreichend Zeit.\n')
    f.close()


    [h1]Das with Statement[/h1]

    Mit Benutzung des with Statement wird der File automatisch geschlossen so das wir uns das
    close() sparen
    So sind wir sicher das der Speicher nicht vollgemüllt wird und es zu keiner korupten Datei führt.


    Beispiel:

    Python
    with open('beispiel.txt') as f:
       for line in f:
          print line,

    Aufgaben :

    1. Alle Beispiele ausführen.
    2. Die verschiedenen Modi mit Benutzung des with Statments ausführen.
    2. Was macht \n?
    3. Was würde \t tun?
    3. Was macht print ,?
    4. Was oder worin besteht der Unterschied zum einlesen der Datei mit read() gegenüber den einlesen der Datei in einer for Schleife?

  • Teil 6 oben.
    Tut mir leid das es etwas gedauert hat .
    Aber das Real -Live mit Arbeit und Familie ist ja auch noch da!


    In diesen Teil habe ich das erste mal direkt Aufgaben gestellt.
    Deren Lösung auch auf das Wissen aus anderen Teilen beruht.
    Versucht in ruhe alles auszuprobieren und die gestellten Aufgaben zu lösen.


    Gruß Jan

  • Code
    2. Was macht \n?

    \n bewirkt einen Zeilenvorschub


    Code
    3. Was würde \t tun?

    \t fügt einen Tabulator ein

    Code
    3. Was macht print ,?

    print , bewirkt daß der Zeilenvorschub, der nach jeder Printanweisung ausgeführt wird, diesmal nicht gemacht wird


    Code
    4. Was oder worin besteht der Unterschied zum einlesen der Datei mit
    read() gegenüber den einlesen der Datei in einer for Schleife?


    Mit read liest man alles auf einen Schlag ein und mit For-Schleife Zeile für Zeile.


    Wobei mir beim rumprobieren aufgefallen ist, daß Python wohl keinen Inkrement wie i++ versteht.

  • Den ersten Teil bis zum Datei-Handling habe ich durchgearbeitet.

    Aufgabe 2 habe ich hingekriegt:
    Die Funktion durchsucht alle Namen einer Liste nach einem bestimmten String (Groß und Kleinschreibung wird ignoriert) und gibt die entsprechenden Namen aus. Ich suche nach dem Buchstaben e in meinem Beispiel.

    def textsearch (pliste,psearch):
    for name in pliste:
    if ((name.upper()).find(str.upper(psearch))>=0):
    print 'Name mit Buchstabe '+psearch+': '+name
    else:
    print 'Name ohne Buchstabe '+psearch+': '+name

    from tools.myfunc import *
    liste=['Hans','Hannelore','Hanes','Hanf']
    textsearch (liste,'e')

    >>> Name ohne Buchstabe e: Hans
    >>> Name mit Buchstabe e: Hannelore
    >>> Name mit Buchstabe e: Hanes
    >>> Name ohne Buchstabe e: Hanf

    Die Aufgabenstellung von Aufgabe 1 wird mir leider nicht klar.
    Was meinst du mit einer Funktion die die die Zahlen 1-25 hält ???

    Den Teil mit dem Dateihandling schaue ich mir morgen abend an. Ich gehe jetzt ins Bett

  • Die Aufgabenstellung von Aufgabe 1 wird mir leider nicht klar.
    Was meinst du mit einer Funktion die die die Zahlen 1-25 hält ???

    Ja, doch nicht verständlich von mir ausgedrückt.
    Innerhalb der Funktion sollen auf einfachste Art und Weise mit dem geringsten Schreibaufwand die Zahlen 1-25 bereitgestellt werden und dann in der Funktion mit ihnen gearbeitet werden.

    So klarer zu verstehen?

    Gruß Jan

  • Ja, doch nicht verständlich von mir ausgedrückt.Innerhalb der Funktion sollen auf einfachste Art und Weise mit dem geringsten Schreibaufwand die Zahlen 1-25 bereitgestellt werden und dann in der Funktion mit ihnen gearbeitet werden.

    So klarer zu verstehen?

    Gruß Jan

    Ich denke schon. Klingt wohl komplizierter als gewollt.
    Die kürzeste Schreibweise für eine Iteration über 1-25 ist nach meiner Auffassung:
    >>> for zahl in range(1,26):

    Hab Übung 1 nun auch erledigt....

  • So habe den Teil auch durchgearbeitet. Nur noch verinnerlichen.

    @Bulvai bitte die Lösungen von dir in einen Spoiler legen. So können wir auch ein wenig überlegen ;)

    So kurz wie @Hagba20 hab ich es nicht, aber leicht verständlich war es das du ..

    Spoiler anzeigen


    .. "range " meinst.

    Python
    s=5
    z = range(1,26)
    for zahl in z:
        if zahl == s:
            print str(zahl)+ ' gefunden.'
        else:
            pass

    @skatulskijean habe meinen Text in der Aufgabe leicht abgeändert:

    Code
    f=open('beispiel.txt','w')
    f.write('wir lernen schnell genug.\n')
    f.write('Jan hat immer ausreichend Zeit fur uns.\n')
    f.close()
    
    
    with open('beispiel.txt') as f:
        for line in f:
            print line,
  • So Jungs habe im Moment keine Zeit den Teil 5 zu machen, wwerde mir das am WE verinnerlichen.

    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

Jetzt mitmachen!

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