Variable mit input in Liste einfügen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

Hey,ich bin ziemlich neu in der Programmierwrlt und lerne gerade schleifen (in python).
Meine Frage wäre: Kann ich eine input variable einer Liste hinzufügen?

Bsp Code:

Code: Alles auswählen

L=[name=whats your name?,...]
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Die Antwort auf deine Frage ist: Ja.

Weißt du, wie man die Eingabe an einen Namen bindet? Also wie man das Ergebnis von input einer Variable zuweist?
Und weißt du, wie du einen Wert einer Liste hinzufügst?

Ich finde es immer etwas seltsam, wenn man Fantasycode als Beispielcode bezeichnet. Und der hilft in diesem Fall ja auch nicht weiter.

Namen schreibt man in Python klein_mit_unterstrich. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und die Namen von Klassen (PascalCase).
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

sparrow hat geschrieben: Samstag 4. Februar 2023, 21:31 Die Antwort auf deine Frage ist: Ja.

Weißt du, wie man die Eingabe an einen Namen bindet? Also wie man das Ergebnis von input einer Variable zuweist?
Und weißt du, wie du einen Wert einer Liste hinzufügst?

Ich finde es immer etwas seltsam, wenn man Fantasycode als Beispielcode bezeichnet. Und der hilft in diesem Fall ja auch nicht weiter.

Namen schreibt man in Python klein_mit_unterstrich. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und die Namen von Klassen (PascalCase).
Ich habe das Problem erstmal anders gelöst. Meine Frage wäre jetzt: wie kann ich der Liste first_name vor jeden (bestehenden und neuen) einen unveränderbaren string hinzufügen? Also zB: 1 == Anton wobei die 1 == immer da steht und auch beim bearbeiten nicht verändert werden kann.

Das ist der bis jetzt geschrieben Code:

Code: Alles auswählen

end = " "
first_name = []

people = [
]
first_name_index = 0
anton_index = 0
lea_index = 1
josef_index = 2

second_name_index = 1
age_index = 2
counter = 0


option = " "
while option != 4:

    print("     ***OPTIONS***\n 1 == Show Contacts/Edit Contacts \n 2 == Add Contacts \n 3 == close")
    option = input("please choose an option:\n")
    if int(option) == 1:
        if len(first_name) == 0:
            input("No Contacts at this moment. Click anything to get back")
        else:
            print(first_name)
            show_contact = int(input("Which Contact Informations do you want to look like?\n"))
            contact_index = show_contact - 1
            print(people[contact_index])
            edit = int(input("Do you want to edit the contact informations?\nPress 1 for yes 2 for no\n"))
            if edit == 1:
                while 1 < 2:
                    what = [
                        ["1 == First Name"],
                        ["2 == Last Name"],
                        ["3 == Age"],
                        ["4 == Phone nbr"],
                        ["5 == Adress"]
                    ]
                    print(what)

                    edit_what = int(input("Which Informations do you want to edit?\n"))
                    what_index = edit_what - 1
                    people[contact_index][what_index] = input("please type in the new information - Details")
                    print(people[contact_index])
                    end = input("Do yo want to change more Details?\nPress 1/Y or 2/N")
                    if int(end) == 1:
                        continue
                    else:
                        break

            elif edit == 2:
                continue
            else:
                print("I dont understand, please try again!")
    elif int(option) == 2:
        new_first_name = input("Please type in the new first Name\n")
        new_last_name = input("Please type in the new last Name\n")
        new_age = input("How old is the Person?\n")
        new_phone_nbr = input("Please type in the new Phone nbr\n")
        new_adress = input("New Adress- Details")
        people.append(["First Name: "+new_first_name, "Last Name: " + new_last_name, "Age: " + new_age,
                       "Phone: " + new_phone_nbr, "Adress : " + new_adress])
        first_name.append(new_first_name)
        print(people)
        input("New Contact sucessfully addet to your Contact list. \n"
              "Press any button to get back...")
    elif int(option) == 3:
        end = input("Are you sure you want to leave?\nPress 1/Y 2/n\n")
        if int(end) == 1:
            break
        elif int(end) == 2:
            continue
        else:
            input("Dont understand, please Try again... -Press enter-")
    else:
        input("Dont understand, please Try again... -Press enter-")







Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Wired1.0.: Du willst IMHO mit zu wenig Grundlagenwissen deutlich zu viel erreichen. So ein menügetriebenes Programm ist viel zu komplex und umfangreich ohne das man Funktionen kennt und schreiben kann. Zusammengesetzte Daten wie alles was so zu einer Person gehört um ein Adress- oder Telefonbuch oder etwas in der Richtung erfordert einen Verbunddatentyp, also mindestens Tupel, besser `collections.namedtuple`, noch besser wahrscheinlich eine Klasse.

Arbeite am besten erst einmal ein Grundlagentutorial durch. In der Python-Dokumentation gibt es beispielsweise eines das aktuell ist, und von Python-Programmierern stammt.

Dann mach Dir Gedanken wie die Datenstruktur aussehen soll, und dann Teil das Programm sinnvoll auf Funktionen auf. Das Hauptprogramm steht auch in einer Funktion, die üblicherweise `main()` heisst. Es ist sinnvoll das Programm mindestens mal in Funktionen für die Hauptmenüpunkte aufzuteilen.

Informationen wie "First Name:" und so weiter gehören nicht in die Datenstruktur. Eventuell löst das vielleicht schon eines Deiner Probleme das später wieder irgendwie auseinanderpflücken zu wollen um nur den tatsächlich relevanten Teil zu verändern.

Zusammengehörende Daten für je eine Person in einer Liste speichern kann man machen, aber das wird sehr schnell unübersichtlich weil man dann mit magischen Indexwerten hantieren muss, oder man definiert Konstanten dafür, aber das bleibt trotzdem etwas unübersichtlich. Listen sind dazu da viele gleichartige Dinge zu speichern. Wenn die Bedeutung des Wertes vom Index abhängig ist, dann sind Listen die falsche Wahl. Da nimmt man Tupel, solange die Anzahl der Elemente übersichtlich bleibt, also so 2 bis 3 Elemente, und man eigentlich so gut wie immer auf alle Elemente zugreift. Ansonsten `collections.namedtuple` oder eine Klasse.

Mit ``break`` würde ich sparsam umgehen und ``continue`` komplett vermeiden. Das ist an einigen Stellen im gezeigten Code auch überflüssig, weil ohne ``continue`` dort genau das gleiche passiert.

Verwende keine kryptischen Abkürzungen in Namen. Nicht `phone_nbr` wenn eigentlich `phone_number` gemeint ist. Das ist nicht einmal eine gebräuchliche Abkürzung, die sollte auch im Ausgabetext nicht vorkommen.

Warum ``while 1 < 2:`` statt ``while True:``?

Das `what` eine verschachtelte Liste mit jeweils genau einem Element in den inneren Listen ist, macht keinen Sinn. Eigentlich macht nicht mal die äussere Liste Sinn.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Wired1.0.
User
Beiträge: 31
Registriert: Montag 23. Januar 2023, 20:25

__blackjack__ hat geschrieben: Dienstag 7. Februar 2023, 16:18 @Wired1.0.: Du willst IMHO mit zu wenig Grundlagenwissen deutlich zu viel erreichen. So ein menügetriebenes Programm ist viel zu komplex und umfangreich ohne das man Funktionen kennt und schreiben kann. Zusammengesetzte Daten wie alles was so zu einer Person gehört um ein Adress- oder Telefonbuch oder etwas in der Richtung erfordert einen Verbunddatentyp, also mindestens Tupel, besser `collections.namedtuple`, noch besser wahrscheinlich eine Klasse.

Arbeite am besten erst einmal ein Grundlagentutorial durch. In der Python-Dokumentation gibt es beispielsweise eines das aktuell ist, und von Python-Programmierern stammt.

Dann mach Dir Gedanken wie die Datenstruktur aussehen soll, und dann Teil das Programm sinnvoll auf Funktionen auf. Das Hauptprogramm steht auch in einer Funktion, die üblicherweise `main()` heisst. Es ist sinnvoll das Programm mindestens mal in Funktionen für die Hauptmenüpunkte aufzuteilen.

Informationen wie "First Name:" und so weiter gehören nicht in die Datenstruktur. Eventuell löst das vielleicht schon eines Deiner Probleme das später wieder irgendwie auseinanderpflücken zu wollen um nur den tatsächlich relevanten Teil zu verändern.

Zusammengehörende Daten für je eine Person in einer Liste speichern kann man machen, aber das wird sehr schnell unübersichtlich weil man dann mit magischen Indexwerten hantieren muss, oder man definiert Konstanten dafür, aber das bleibt trotzdem etwas unübersichtlich. Listen sind dazu da viele gleichartige Dinge zu speichern. Wenn die Bedeutung des Wertes vom Index abhängig ist, dann sind Listen die falsche Wahl. Da nimmt man Tupel, solange die Anzahl der Elemente übersichtlich bleibt, also so 2 bis 3 Elemente, und man eigentlich so gut wie immer auf alle Elemente zugreift. Ansonsten `collections.namedtuple` oder eine Klasse.

Mit ``break`` würde ich sparsam umgehen und ``continue`` komplett vermeiden. Das ist an einigen Stellen im gezeigten Code auch überflüssig, weil ohne ``continue`` dort genau das gleiche passiert.

Verwende keine kryptischen Abkürzungen in Namen. Nicht `phone_nbr` wenn eigentlich `phone_number` gemeint ist. Das ist nicht einmal eine gebräuchliche Abkürzung, die sollte auch im Ausgabetext nicht vorkommen.

Warum ``while 1 < 2:`` statt ``while True:``?

Das `what` eine verschachtelte Liste mit jeweils genau einem Element in den inneren Listen ist, macht keinen Sinn. Eigentlich macht nicht mal die äussere Liste Sinn.

Das soll kein fertiges Programm werden. Es dient nur zur Übung da ich gerade mit dem Thema Listen angefangen habe und mir kurzerhand diese Übung dazu ausgedacht habe. (Ich handhaben das im Moment so, dass ich 2 Hauptprogramm- Übungen habe welche ich mit dem stetig wachsendem Wissen erweitere und umbaue - natürlich mache ich auch kleinere Übungen zu Themen)
Bis jetzt habe ich nur schleifen und halt jetzt Listen behandelt. Funktionen (also def) habe ich leider noch nicht behandelt, kommt aber nach den Listen.
Das Tutorial werde ich mir mal anschauen, danke für den Tipp.
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Wired1.0.: Nur für Schleife und Listen ist das halt alles ein bisschen zu viel, damit lassen sich sinnvoll nur kleinere Probleme lösen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten