Seite 1 von 2

Schleife

Verfasst: Dienstag 3. Januar 2012, 19:53
von awacker
Hallo an alle:

Ich hoffe ihr hatte alle guten Rutsch ins neue Jahr, ich wünsche allen erfolgreichen 2012.

Ich habe insgesamt zwei Problemen mit den Schleifen.
Beim ersten Problem habe ich zwei if Bedienungen.
Dabei treffen beide bei einem Satz zu und es ist unmöglich diese zu verfeinern. Wie kann ich diese so programmieren wenn erste Schleife eintritt, dass diese beim zweiten mal nich wiedergegeben soll???

Code: Alles auswählen

 if b and d:
            print sentence + ' Yes yes'
          if c and s:
            print sentence + ' Yes'
Beim zweiten Problem habe ich auch zwei if Schleifen und eine else Schleife. Dabei wird die else Schleife immer wiedergegeben, wie kann ich das verhindern, weil ich davon ausgehe, dass diese nur ausgegeben wird, wenn beiden if Schleifen davor nicht nicht zutreffen

Code: Alles auswählen

   if p:
                print 'positive'
            if n:
                print 'negative'
            else:
                print 'unclear'
Danke für eure Hilfen

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 19:57
von Hyperion
awacker hat geschrieben: Beim zweiten Problem habe ich auch zwei if Schleifen und eine else Schleife.
Jedes Jahr aufs neue aber immer wieder schön: Es gibt keine if-Schleifen! :twisted:

Ansonsten musst Du das mal klarer beschreiben und ggf. ein lauffähigs Minimalbeispiel zeigen! Ich steige nicht durch, was Du eigentlich lösen willst; ganz einfach, weil da kein "Problem" steht. Du hast halt verschiedene Bedingungen und je nach dem, welche zutreffen verzweigst Du anders. So what?

Zudem solltest Du die Python-Code-Tags verwenden und vor allem achte auf die Einrückungen! Diese sind in Python ein zentrales Syntax-Element und dürfen nicht verfälscht werden.

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:01
von nomnom
if-Schleifen

Es gibt elif:

Code: Alles auswählen

>>> if True:
...     print 'ja'
... elif True:
...     print 'auch ja'
... 
ja

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:18
von awacker
hier ist noch mal ein ausführlicher Code.

Bei dem Tool geht es um erkennung von bestimmten Sätzen:

In diesem Teil des Tools werden die Bedienungen erstellt

Code: Alles auswählen

for sentence in sentences:        
             sent = nltk.pos_tag(word_tokenize(sentence))
             treee= ha.parse(sent)
             tree = hp.parse(sent)
             string = ''.join(str(i) for i in tree)
             stringe= ''.join(str(i) for i in treee)

             casal = re.compile('Causal Effect Cause')
             causal = re.compile('Causal Cause Effect')
             sign = re.compile('cause|affect|affected|enhance|higher|better|more|negatively|sooner|increase|perceived|Perceived|will|may')
             signe = re.compile('may be affected')
             d = signe.search(sentence)
             b = casal.match(stringe, 1, 22)
             c = causal.match(string, 1, 22)
             s = sign.search(sentence)
beide Bedingung treffen aber auf gleichen Satz zu, dabei will ich einfach, dass wenn erste Bedingung zutrifft, soll die zweite Bedingung nicht mehr zutreffen, sondern es soll dann der nächste Satz untersucht werden

Code: Alles auswählen

if b and d:
       print sentence + ' Yes yes'
if c and s:
       print sentence + ' Yes'

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:21
von awacker
nomnom hat geschrieben:if-Schleifen

Es gibt elif:

Code: Alles auswählen

>>> if True:
...     print 'ja'
... elif True:
...     print 'auch ja'
... 
ja
Leider hilft diese mir nicht weiter weil sie das Problem nich löst

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:38
von BlackJack
@awacker: Und warum hilft ``elif`` nicht weiter?

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:40
von pillmuncher
awacker hat geschrieben:
nomnom hat geschrieben:

Code: Alles auswählen

>>> if True:
...     print 'ja'
... elif True:
...     print 'auch ja'
... 
ja
Leider hilft diese mir nicht weiter weil sie das Problem nich löst
Doch, das löst dein Problem. Dass du es nicht erkennst, liegt daran, dass du nicht in der Dokumentation nachgelesen hast, was elif tut.

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:42
von Hyperion
awacker hat geschrieben: Leider hilft diese mir nicht weiter weil sie das Problem nich löst
Laut Deinen bisherigen Erklärungen ist `elif` die Lösung.

Wenn das nicht zutrifft, musst Du uns ein lauffähiges Minimalbeispiel liefern und präziser schildern, bei welchen Testdaten welches Ergebnis kommt und welches Du erwartet hättest.

Die Python-Code-Tags hast Du immer noch nicht gefunden?

Der Quellcode ist hinsichtlich der Namen ziemlich verworren... `tree` und `treee`? So etwas führt doch zwangsweise zu Fehlern...

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 20:45
von /me
awacker hat geschrieben:beide Bedienungen treffen aber auf gleichen Satz zu, dabei will ich einfach, dass wenn erste Bedienung zutrifft, soll die zweite Bedienung nicht mehr zutreffen, [...]
Ein paar Postings habe ich es mitgemacht, aber jetzt tut es langsam physisch weh. "Bedienung" ist das, was mit Schürze in einem Café herumläuft. Was du hier eigentlich meinst nennt sich "Bedingung".

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 22:40
von awacker
so das erste Problem könnte ich losen das zweite noch nicht

bei dem zweiten Problem versuche ich die Sätze zu unterscheiden ob diese, ob diese positive Aussage haben oder negative Aussage haben dafür habe ich folgende Stichwörter definiert

Code: Alles auswählen

positive = re.compile('cause|positively|affect|affected|enhance|higher|better|more|increase')
negative = re.compile ('negatively|sooner')
#unclear = re.compile ('perceived|Perceived')
p = positive.search(sentence)
n = negative.search(sentence)
#u = unclear.search(sentence)
früher waren bei mir auch stichwörter für neutrale Sätze definiert, leider habe ich festgestellt dass diese auch in positive oder negativen Aussagen vorkommen.

deswegen wollte ich dass mit else lösen, aber leider wird diese dann nach jedem Satz ausgegeben, verstehe nicht wieso...

Code: Alles auswählen

if p:
   print 'positive'
if n:
   print 'negative'
else:
   print 'unclear'

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 22:56
von webspider

Code: Alles auswählen

if p:
   print 'positive'
elif n:
   print 'negative'
else:
   print 'unclear'
Fixed.

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 23:18
von awacker
cool danke hat geklappt, verstehe zwar nicht wieso... aber trotzdem danke

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 23:20
von webspider
Lies die Dokumentation und schreib bitte deinen Code nicht so als wären massig Rechtschreibfehler drin.

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 23:22
von /me
awacker hat geschrieben:deswegen wollte ich dass mit else lösen, aber leider wird diese dann nach jedem Satz ausgegeben, verstehe nicht wieso...

Code: Alles auswählen

if p:
   print 'positive'
if n:
   print 'negative'
else:
   print 'unclear'
Dein Code passt nicht zu dem was du da beschreibst. Schauen wir doch mal was du da hast. Auf den ersten Blick sehen wir zwei unabhängige if-Statements. Das erste ist nach dem print 'positive' beendet und hat keinerlei Einfluss auf den folgenden Code. Übrig bleibt also Folgendes:

Code: Alles auswählen

if n:
    print 'negative'
else:
    print 'unclear'
Der else-Zweig wird in jeder Python-Implementierung (eigentlich sogar in jeder mir bekannten Programmiersprache) nur dann ausgeführt, wenn der if-Zweig nicht ausgeführt wird. Du sagst jetzt, dass das bei dir anders ist. Du bekommst also laut deiner Aussage die Ausgaben negative und unclear direkt hintereinander. Normalerweise sollte man da direkt einen Exorzisten holen der ein paar Liter Weihwasser direkt in den Rechner kippt, aber wir können ja noch mal versuchen dem Rätsel auf den Grund zu gehen.

Gib doch mal sowohl im if-Zweig wie auch im else-Zweig außer dem statischen Text zusätzlich noch den Wert von n aus. Mich interessiert ja nun wirklich brennend welcher Wert dafür sorgt, dass diese zwei Programmteile (die laut Definition keinesfalls beide durchlaufen werden können) beide durchlaufen werden.



Ehrlich gesagt vermute ich allerdings eher, dass du ein massives Wissensdefizit bei deinen Programmierkenntnissen hast.

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 23:27
von webspider
Ehrlich gesagt glaube ich eher, dass er sich nicht konkret genug auszudrücken weiß.

Mich interessiert hingegen besonders brennend wofür der Code gedacht ist. Automatisierte Analyse von Werbematerial?

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 23:29
von awacker
Deswegen lerne ich, um diesen zu decken

aber danke für die Erklärung

Re: Schleife

Verfasst: Dienstag 3. Januar 2012, 23:46
von nomnom
webspider hat geschrieben:Mich interessiert hingegen besonders brennend wofür der Code gedacht ist. Automatisierte Analyse von Werbematerial?
AFAIK ist das eine Aufgabe bei SPOJ.

Re: Schleife

Verfasst: Mittwoch 4. Januar 2012, 00:00
von /me
awacker hat geschrieben:Deswegen lerne ich, um diesen zu decken
Genau das tust du ja eben nicht. Es gab schon sehr früh den Hinweis auf elif. Von dir kam dazu nur: "Leider hilft diese mir nicht weiter weil sie das Problem nich löst".

Du lernst nicht. Lernen ist Wissen, nicht Glauben. Begreife, dass die Dokumentation nicht dafür da ist, dass wir sie dir hier vorlesen. Lies selber. Probiere aus. Verwende lieber print als "poor man's debugger" statt einfach nur zu raten. Verstehe. Sammle deine Gedanken. Konzentriere dich - denn wenn du weiter so programmierst wie du schreibst, dann wird das nichts. Respektiere PEP-8. Verinnerliche "The Zen of Python".


Solltest du jetzt auf dir unbekannte Dinge gestoßen sein, dann kannst du den ersten Schritt auf dem Weg zum Selberlernen direkt machen. Es gibt da eine Firma namens Google die seit 1998 Suchdienste im Web anbietet. Vielleicht lassen die dich ja diese Dienste nutzen. Solltest du Google nicht kennen dann google einfach mal danach.

Re: Schleife

Verfasst: Mittwoch 4. Januar 2012, 00:22
von awacker
/me hat geschrieben:
awacker hat geschrieben:Deswegen lerne ich, um diesen zu decken
Genau das tust du ja eben nicht. Es gab schon sehr früh den Hinweis auf elif. Von dir kam dazu nur: "Leider hilft diese mir nicht weiter weil sie das Problem nich löst".

Du lernst nicht. Lernen ist Wissen, nicht Glauben. Begreife, dass die Dokumentation nicht dafür da ist, dass wir sie dir hier vorlesen. Lies selber. Probiere aus. Verwende lieber print als "poor man's debugger" statt einfach nur zu raten. Verstehe. Sammle deine Gedanken. Konzentriere dich - denn wenn du weiter so programmierst wie du schreibst, dann wird das nichts. Respektiere PEP-8. Verinnerliche "The Zen of Python".


Solltest du jetzt auf dir unbekannte Dinge gestoßen sein, dann kannst du den ersten Schritt auf dem Weg zum Selberlernen direkt machen. Es gibt da eine Firma namens Google die seit 1998 Suchdienste im Web anbietet. Vielleicht lassen die dich ja diese Dienste nutzen. Solltest du Google nicht kennen dann google einfach mal danach.

So genug von dir gehört, ich lebe nicht nur mit Python, wenn du nicht helfen willst brauchst du nicht zu helfen und überhaupt du wolltest mir deutsch bei bringen lerne erstmal drei sprachen dann kann ich mit dir weiter reden...

Re: Schleife

Verfasst: Mittwoch 4. Januar 2012, 00:26
von awacker
nomnom hat geschrieben:
webspider hat geschrieben:Mich interessiert hingegen besonders brennend wofür der Code gedacht ist. Automatisierte Analyse von Werbematerial?
AFAIK ist das eine Aufgabe bei SPOJ.
Ich schreibe zur Zeit ein Konzept über Kausale Zusammenhänge, diese sollen aus dem Text hervorgehoben werden und analysiert. Das Programm soll die Ursache sowie Wirkung erkennen und dazu bewerten ob es eine positive oder negative Aussage ist. Wenn du weitere Interesse hast, kann ich dir gerne mehr darüber erzählen