kostenloser Webspace werbefrei: lima-city


Einfache, doppelte, dreifache Elemente einer Liste ausgeben

lima-cityForumProgrammiersprachenPython

  1. Autor dieses Themas

    t*************s

    Ich lerne grade Python (dh.: Kurs an der Uni). Und da haben wir jede Woche Aufgaben auf, so auch heute. Leider habe ich nichtmal den blasseste Ansatz wie ich bei der Aufgabe vorgehen soll, könnte mir da vielleicht wer an Denkanstoß geben? Ich will keine komplette Lösung, immerhin will ich die Klausur am Ende ja bestehen und dazu muss ich es verstehen und nicht einfach abschreiben ;)

    Nun denn, Aufgabe ist wie folgt:

    "Schreibe ein Programm, das aus einem beliebigen String
    1. alle Wörter ausgibt, die GENAU EINMAL vorkommen.
    2. alle Wörter ausgibt, die GENAU ZWEIMAL vorkommen.
    3. alle Wörter ausgibt, die GENAU DREIMAL vorkommen.
    4. alle proper substrings ausgibt."

    Das soll dann wohl in etwa so aussehen:

    Gib String ein: <input>

    Diese Wörter kommen genau einmal vor:
    x
    x
    x

    Diese Wörter kommen genau zweimal vor:
    x
    x
    x

    Diese Wörter kommen genau dreimal vor:
    x
    x
    x

    proper substrings:
    x
    x
    x



    Was wir bisher gelernt haben sind Variablen, if then else, while, for, Listen, Strings, Floats, Ints. Wir sollen auch nur mit diesen Sachen arbeiten, andernfalls gibts keine Punkte für die Aufgabe.

    Was ich bis jetzt hab ist

    string=input("Gib einen String ein: ")
    
    liste=string.split()


    Der Dozent meinte, es wäre immer schlauer mit Listen zu arbeiten anstelle von Strings, von daher das "string.split()".
    Zuerst hab ich gedacht irgendwie mit while zu arbeiten und die doppelten Vorkommen in eine zweite Liste zu schreiben, aber so weit komm ich erst gar nicht, da ich nicht weiß, wie ich sage, dass ich ein doppeltes Vorkommen suche uû

    i=0
    
    while i < len(liste):
    [tab]if liste[i]== ?:



    Kann mir da wer helfen? :-D

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Was darfst du denn alles benutzen? Spontan würde ich sagen, nimm einfach den collections.Counter container:
    http://docs.python.org/py3k/library/collections.html

    import collections
    text = "Mein Text mit ganz viel Text und ganz viel Inhalt"
    counter = collections.Counter( text.split( " " ) )
    #und dann mit ner Schleife die Werte ausgeben, die entsprechend häufig vorkommen


    Beitrag zuletzt geändert: 3.11.2011 21:02:01 von bladehunter
  4. Autor dieses Themas

    t*************s

    Benutzen sollt ich wenn möglich nur die oben genannten Sachen..uû

    Was wir bisher gelernt haben sind Variablen, if then else, while, for, Listen, Strings, Floats, Ints. Wir sollen auch nur mit diesen Sachen arbeiten, andernfalls gibts keine Punkte für die Aufgabe.


    Mein Problem ist ja, das ich gerade nicht weiß, wie ich sage, dass ich möchte, dass die liste nach einfachen, doppelten und dreifachen Elementen unterteilt werden soll.

    Kann ich aus einer Liste sozusagen drei neue machen? Das Python sozusagen jedes Element anguckt "hat ich noch nciht" = liste_einfach, "hat ich schon einmal" = liste_zweifach, "hat ich schon dreimal" = liste_dreifach

    Dann könnt ich ja am ende jede liste einfach mit

    for e in <liste>
    [tab]print e

    die jeweiligen Elemente ausgeben.



    Wie gesagt, ich bin in Python, und Programmieren selbst ein totaler Anfänger..


    Beitrag zuletzt geändert: 4.11.2011 17:43:29 von through-my-eyes
  5. Als Tipp zum erzeugen neuer Listen:

    Es gibt eine append() Methode, ich würde der Lesbarkeit wegen am Anfang die Listen leer erzeugen
    kommt_einmal_vor = []
    kommt_zweimal_vor = []
    kommt_dreimal_vor = []
    Dann kannst du deine Prüfung machen und bspw. mit
    kommt_einmal_vor.append(wort)
    an die erste Liste anhängen, die anderen funktionieren analog.

    Aber es ist eigentlich ein grundlegendes Designkriterium von Python Scripten das man Listen vermeiden sollte...

    Beitrag zuletzt geändert: 4.11.2011 22:02:16 von fatfox
  6. Autor dieses Themas

    t*************s

    das kann ja gut sein, dass Listen vermieden werden sollten, aber da wir ja noch am Anfang sind und Python grade erst lernen, und Listen das Thema der letzten Sitzung waren, ist es doch durchaus verständlich, wenn wir mit Listen arbeiten sollen um sie besser kennen zu lernen :wink:

    Leider hab ich bis jetzt immer noch mein Kernproblem nicht lösen können =(
    Wie überprüfe ich ob in einem String Wörter doppelt vorkommen?


    Achja, udn bevor ich undankbares Ding es vergess, vielen Danl für die bisherigen Antworten :biggrin:


    EDIT: Ich habs :smile: Zumindest zum Teil. hab mich ein wenig durch die Dokumentation gelesen und list.count entdeckt :angel: So sieht mein Code bis jetzt aus:

    string="Wer oh wer reitet da so spaet durch nacht und wind oh jeh oh jeh es ist ein Vater und er hat heute sowohl sein hund als auch sein dartboard vergessen"
    liste=string.split(" ")
    
    
    einfach=[ ]
    zweifach=[ ]
    dreifach=[ ]
    
    
    i=0
    while i < len(liste):
        if liste.count(liste[i])==1:
            einfach.append(liste[i])
        i+=1
    
    i=0
    while i < len(liste):        
        if liste.count(liste[i])==2:
            zweifach.append(liste[i])
        i+=1
    
    i=0
    while i < len(liste):                        
        if liste.count(liste[i])==3:
            dreifach.append(liste[i])
        i+=1
    
    
    print("Kommt genau einmal vor:")
    for e in set(einfach):
        print(e)
    
    print("Kommt genau zweimal vor:")
    for e in set(zweifach):
        print(e)
    
    print("Kommt genau dreimal vor:")
    for e in set(dreifach):
        print(e)


    Das funktioniert wunderbar!

    Was mir jetzt noch fehlt sind die proper substrings zu erkennen und auszugeben. Hab ich das richtig verstanden, dass ein proper substring ein Teil eines Strings ist, der aber nicht identisch mit dem String selbst ist? Wenn ja frage ich mich, warum bei dem Musterstring hier (Wer oh wer reitet da so spaet durch nacht und wind oh jeh oh jeh es ist ein Vater und er hat heute sowohl sein hund als auch sein dartboard vergessen // vom Dozenten zum Testen des Progs) nur "oh", "da", " und", "so", "er", "ein" und "es" proper substrings sein sollen (so stehts zumindest in der Aufgaben-Datei). Müssten das nicht viel mehr sein? :confused:

    Beitrag zuletzt geändert: 6.11.2011 19:02:00 von through-my-eyes
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!