Seite 2 von 3

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 11:39
von nono191
@all: Ich kann kein \ schreiben bei Python und copy paste kann ich auch nicht machen. Weis jemand an was das liegen könnte?

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 12:06
von BlackJack
@nono191: Beides müsstest Du eigentlich näher beschreiben damit wir nicht raten müssen. Gewöhn Dir mal an nicht einfach so zusammenhanglose knappe Fragen zu schreiben sondern beschreibe ausführlicher was Du machen möchtest, was Du tatsächlich machst, also *Quelltext*, und was dann nicht funktioniert. Also entweder eine konkrete Fehlermeldung/Ausnahme, am besten 1:1 in den Beitrag kopieren, oder beschreib was passiert und was Du stattdessen erwartet hättest. Am besten auch warum Du etwas anderes erwartet hast als dann letztendlich passiert ist.

Bei dem \ würde ich jetzt mal raten das Du Dir die Dokumentation bezüglich Zeichenkettenliteralen mal durchlesen solltest und was dort ein \ bedeutet. Das wird im Tutorial in der Python-Dokumentation zum Beispiel erklärt.

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 18:01
von nono191
@BlackJack: Ich kopiere zum Beispiel einen Text aus der Dokumentation und will ihn mit -v eifügen dann steht aber das Programm still und ich muss es beenden...
Und wenn ich mit alt-shift-7 ein Backslash schreiben will schreibt es nichts.

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 18:07
von BlackJack
@nono191: Wo willst Du einfügen? Welches Programm steht still? Was ist ”es” hier?

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 18:12
von nono191
@BlackJack: Programm = IDLE = es

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 18:59
von nono191
@all: Was habe ich hier falsch gemacht?

Code: Alles auswählen

from collections import defaultdict as DefaultDict
import json

def remove(recipes):
        if recipes:
                category = get_category(
                        "Aus welcher Kategorie sollen Rezepte gelöscht werden? ",recipes
                )
                for recipe in recipes[category]:
                        print "\n{}\n***\n"
        else:
                print "Keine Rezepte vorhanden!\n"
        
        recipes[category].remove(raw_input("Welches Rezept willst du löschen?"))
def load():
    try:
        with open("recipes.txt", "w") as file_:
            recipes = DefaultDict(list, json.load(file_))
    except IOError:
        recipes = DefaultDict(list)
    return recipes

def save(recipes):
    with open ("recipes.txt", "w") as file_:
        json.dump(recipes, file_)

def get_category(prompt, recipes):
    categories = recipes.keys()
    for number, name in enumerate(categories):
        print "{:2d}: {}".format(number, name)
    category = raw_input(prompt)
    try:
        category = categories[int(category)]
    except (ValueError, IndexError):
        pass
    return category

def add(recipes):
    try:
        recipe = raw_input("Ihr Rezepttext(Ctrl-C beendet):")
    except KeyboardInterrupt:
        return
    category = get_category(
        "In welche Kategorie soll das Rezept hizugefügt werden? ",recipes
    )
    recipes[category].append(recipe)

def show(recipes):
    if recipes:
        category = get_category(
            "Aus welcher Kategorie sollen Rezepte gezeigt werden? ", recipes
        )
        for recipe in recipes[category]:
            print "\n{}\n***\n".format(recipe)
    else:
        print "Keine Rezepte vorhanden!\n"

def run():
    menu = [
        ("Neues Rezept", add),
        ("Zeige Rezepte", show)
        ("Lösche Rezept", remove)
    ]
    recipes = load()
    while True:
        print
        for item_number, item in enumerate(menu):
            print "{:2d}: {}".format(item_number, item[0])
        try:
            choice = int(raw_input("Ihre Wahl (Ctrl-C beendet): "))
        except (ValueError, IndexError):
            print "Bitte gültige Nummer eingeben...",
        except KeyboardInterrupt:
            break
        print
        menu[choice][2](recipes)
    save(recipes)

run()

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 19:01
von nono191
@all: Aha hab's gecheckt das "," fehlt.

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 19:05
von nono191
@all: Was mache ich jetzt falsch?

Code: Alles auswählen

from collections import defaultdict as DefaultDict
import json

def remove(recipes):
        if recipes:
                category = get_category(
                        "Aus welcher Kategorie sollen Rezepte gelöscht werden? ",recipes
                )
                for recipe in recipes[category]:
                        print "\n{}\n***\n"
        else:
                print "Keine Rezepte vorhanden!\n"

        recipes[category].remove(raw_input("Welches Rezept willst du löschen?"))
def load():
    try:
        with open("recipes.txt", "w") as file_:
            recipes = DefaultDict(list, json.load(file_))
    except IOError:
        recipes = DefaultDict(list)
    return recipes

def save(recipes):
    with open ("recipes.txt", "w") as file_:
        json.dump(recipes, file_)

def get_category(prompt, recipes):
    categories = recipes.keys()
    for number, name in enumerate(categories):
        print "{:2d}: {}".format(number, name)
    category = raw_input(prompt)
    try:
        category = categories[int(category)]
    except (ValueError, IndexError):
        pass
    return category

def add(recipes):
    try:
        recipe = raw_input("Ihr Rezepttext(Ctrl-C beendet):")
    except KeyboardInterrupt:
        return
    category = get_category(
        "In welche Kategorie soll das Rezept hizugefügt werden? ",recipes
    )
    recipes[category].append(recipe)

def show(recipes):
    if recipes:
        category = get_category(
            "Aus welcher Kategorie sollen Rezepte gezeigt werden? ", recipes
        )
        for recipe in recipes[category]:
            print "\n{}\n***\n".format(recipe)
    else:
        print "Keine Rezepte vorhanden!\n"

def run():
    menu = [
        ("Neues Rezept", add),
        ("Zeige Rezepte", show),
        ("Lösche Rezept", remove)
    ]
    recipes = load()
    while True:
        print
        for item_number, item in enumerate(menu):
            print "{:2d}: {}".format(item_number, item[0])
        try:
            choice = int(raw_input("Ihre Wahl (Ctrl-C beendet): "))
        except (ValueError, IndexError):
            print "Bitte gültige Nummer eingeben...",
        except KeyboardInterrupt:
            break
        print
        menu[choice][2](recipes)
    save(recipes)

run()

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 19:15
von Sirius3
@nono191: die Fehlermeldung hilft Dir, den Fehler zu finden und die solltest Du auch immer mitposten, damit wir hier nicht raten müssen, was jetzt falsch ist.

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 19:17
von nono191
@Sirius3:
0: Neues Rezept
1: Zeige Rezepte
2: Lösche Rezept
Ihre Wahl (Ctrl-C beendet): 2


Traceback (most recent call last):
File "/Python/easygui/Viel Glück.py", line 80, in <module>
run()
File "/Python/easygui/Viel Glück.py", line 77, in run
menu[choice][2](recipes)
IndexError: tuple index out of range
>>>

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 19:33
von Sirius3
@nono191: Der Fehler sagt, dass das Tuple menu[choice] weniger als drei Einträge hat, wie Du selbst schnell bei an der Definition sehen kannst.

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 19:59
von mutetella
@nono191

Code: Alles auswählen

>>> (1, 2, 3, 4, 5)[0]
1
>>> (1, 2, 3, 4, 5)[4]
5
>>> (1, 2, 3, 4, 5)[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
mutetella

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 20:10
von nono191
@all: Also was genau muss ich ändern?

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 20:14
von BlackJack
@nono191: Den Quelltext. Deine Einstellung. Deine Art zu Fragen. Deinen Wissenstand über Python-Grundlagen.

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 20:15
von mutetella
@nono191
Wie Sirius3 schon sagte: Du versuchst auf ein Tupleelement zuzugreifen, das es nicht gibt. Den Teil musst Du ändern. Überleg' doch mal, was

Code: Alles auswählen

    menu = [
        ('Neues Rezept', add),
        ('Zeige Rezepte', show),
        ('Lösche Rezept', remove)
    ]
bedeutet und was

Code: Alles auswählen

        menu[choice][2](recipes)
macht.

mutetella

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 20:27
von nono191
@BlackJack. Bin 11 und nutze Python seit 2 Monaten. Sry...

Re: Kochbuch

Verfasst: Mittwoch 7. Oktober 2015, 20:30
von BlackJack
@nono191: Ich glaube das sagtest Du schon mal, ist aber IMHO nicht wirklich eine Erklärung warum Du nicht die Grundlagen lernst und gute, beantwortbare Fragen stellst, die auch zeigen dass Du Dich selber ein bisschen anstrengst über das raten von Code hinaus.

Re: Kochbuch

Verfasst: Donnerstag 8. Oktober 2015, 07:39
von nono191
@all: Ok, dann lass ich euch in Ruhe. Bye.

Re: Kochbuch

Verfasst: Donnerstag 8. Oktober 2015, 07:42
von nono191
@all. Gestern hatte eben mein Gotti Geburtstag... Und ich wollte fertig werden. Hab's ihr versprochen.

Re: Kochbuch

Verfasst: Donnerstag 8. Oktober 2015, 08:37
von Sirius3
@nono191: Du brauchst uns nicht in Ruhe zu lassen, sondern sollst etwas Eigeninitiative zeigen.