Seite 1 von 1

adressbuch

Verfasst: Samstag 13. Juni 2009, 18:29
von Obelix09
Hallo ihr lieben.
Ich schreibe grade ein kleines Adressbuch in Python und bin dabei auf ein großes Problem gestoßen. Ich bekomme es nicht hin Variablen umzuschreiben ,wehrend das Programm grade läuft. ): In den fall ist es die Variable eingabe die mir Probleme macht.

Code: Alles auswählen

#ADRESSBUCH 0.01A#
#AUTOR: OBELIX09##
#DATUM: 13.06.09#[/color]

name    = ("christian")
eingabe = ("")

print ("wilkommen bei obelix09 adressbuch.")
print ("bitte gib die gesuchte person ein")
[color=red]#raw_input (eingabe) dort ist der fehler glaube ich#[/color]

if eingabe == name:
 import christian
elif eingabe == ("idiot"):
    print ("arxxxxxx")
else:
    print  ("Person konnte nicht im Adressbuch gefunden werden.")
[/code]

Verfasst: Samstag 13. Juni 2009, 19:01
von cofi
In Python schreibst du jedenfalls nicht (und auch nicht im richtigen Unterforum).

Die Klammern brauchst du nur bei Tupeln und Funktionsaufrufen, nicht bei allem anderen, schon gar nicht bei Vergleichen und Zuweisungen

Ich hoffe du arbeitest in Python 3, denn sonst solltest du auch dort die Klammern weglassen - aber das ``raw_input`` verheisst etwas anderes.

Dein Code kann so auch gar nicht funktionieren, denn (raw_)input gibt die Eingabe zurück und nimmt ein Prompt als Argument, dh du brauchst ``eingabe = raw_input("Name der Person?")``

Übrigens: Code kann man hier in Codetags schreiben und so die Einrückungen retten: [code=py][/code]

P.S. Für dein Adressbuch solltest du dir Klassen und Dictionaries anschaun.

Verfasst: Samstag 13. Juni 2009, 19:36
von jonas

Code: Alles auswählen


def check_input (correct, userinput):
    if userinput == correct:
         return True
    else:
         return False

if __name__ == "__main__":

    name = 'Christian'
    print '~Wilkommen im obelix09 Adressbuch~'
    eingabe = raw_input('Bitte geben sie die gesuchte Person ein: ')
    if check_input(name, eingabe) == True:
        print 'Im Adressbuch gefunden.'
    else:
        print 'Nicht im Adressbuch gefunden.'

Auch sehr zu empfehlen Python-Tutorial und
PEP 8 Styleguide, such einfach bei google.
Lg, Jonas

Verfasst: Samstag 13. Juni 2009, 19:39
von derdon
Das geht auch so:

Code: Alles auswählen

def check_input (correct, userinput):
    return userinput == correct
Das gleiche gilt für Zeile 14.

Verfasst: Samstag 13. Juni 2009, 19:40
von jonas
Okäse, danke :D

EDIT:
So dürfts auch gehen...

Code: Alles auswählen

def check_input (correct, userinput):
    return (True if correct == userinput else False)

Verfasst: Samstag 13. Juni 2009, 19:54
von cofi
Und wo ist der Vorteil des ganzen? Ich sehe da nur den Funktionsoverhead :roll:

Im Übrigen kommt auch hier die richtige Datenstruktur (Dictionary) zur Hilfe:

Code: Alles auswählen

addresses = {}
entry = raw_input("Name?")
if entry not in addressess:
    print "Hamm wa nit"
else:
    print addresses[entry]
Oder auch:

Code: Alles auswählen

addresses = {}
entry = raw_input("Name?")
try:
    print addresses[entry]
except KeyError:
    print "Hamm wa nit"
Edit: Der Ansatz mit den gültigen Eingaben, zumindest in der Implementation, führt zu sich wiederholendem Spaghettei-Code. Und nein "Mies" * "Mies" ergibt nicht gut, sondern "Extrem Mies".

Verfasst: Samstag 13. Juni 2009, 19:58
von derdon

Code: Alles auswählen

addresses = {}
entry = raw_input("Name?")
print addresses.get(entry, 'Hamm wa nit')

Verfasst: Sonntag 14. Juni 2009, 02:07
von Obelix09
Ok danke Leute :D

Verfasst: Sonntag 14. Juni 2009, 10:33
von Leonidas
derdon hat geschrieben:Das geht auch so:

Code: Alles auswählen

def check_input (correct, userinput):
    return userinput == correct
Das gleiche gilt für Zeile 14.
Wenn man schon für Gleichheit eine Funktion definiert, dann kann man auch gleich den Operator nutzen:

Code: Alles auswählen

from operator import eq
check_input = eq