2016-12-28 1 views
0

Ich lerne den Python mit LPTHW und ich versuche, eigenes Spiel als Übung 36 zu bauen. Ich möchte, dass der Benutzer eine spezifische Zeichenkette eingibt aus dem Set von 10 Disziplinen. Ich kann die Eingabe mit einer definierten Liste vergleichen, aber ich kann den Benutzer nicht auf 5 Elemente beschränken. Stattdessen kann ich den Benutzer auf nur fünf Eingaben beschränken, aber nicht beides.python - vergleiche Benutzereingabe mit Liste und füge an eine neue Liste an, die die Eintragsgegenstände begrenzt

Ich habe Liste der Disziplinen (ursprünglich Strings-Name

discipline_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

Dann habe ich eine leere Liste

your_disciplines = [] 

Hier ist der Code Benutzereingabe mit discipline_list zum Vergleichen und Benutzereingaben an einem neuen Anhang leere Liste (Code von anderer Antwort)

while True: 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    found_d = False 
    for i in discipline_list: 
     if d == i: 
      found_d = True 

    if found_d: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 

Ich kann das verwenden for-Schleife zur Begrenzung der Benutzereingaben, aber ich kann es nicht mit Vergleichen kombinieren. Alle meine Versuche liefen mehr als fünf Mal.

for d in range(0, 5): 

Jede Hilfe wird geschätzt.

Antwort

0

beide Bedingungen zu kombinieren, überprüfen Sie die Länge der your_disciplines als while Schleifenbedingung und nur beendet werden, wenn Sie simlify es 5.

while len(your_disciplines) < 5: 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    if d not in your_disciplines: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 
+0

Ihr Code haben sehr gut. Ich musste nur eine einfache Änderung vornehmen, um zu prüfen, ob der Benutzereintrag in der Hauptliste ist, und Bedingung hinzufügen, um zu prüfen, ob der Eintrag nicht bereits in der neuen Benutzerliste ist (so kann der Benutzer die korrekten Eingaben nicht wiederholen). Es funktioniert jetzt sehr gut, danke 'wenn d in disziplin_list und nicht d in your_disciplines:' 'your_disciplines.append (d)' –

0

Wenn Sie while Schleife verwenden möchten, können Sie versuchen:

num = input("Enter your disciplines number >> ") # This is not required if you want to fix num to 5 
j = 0 

while j < int(num): 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    found_d = False 
    for i in discipline_list: 
     if d == i: 
      found_d = True 

    if found_d: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 
    j += 1 

Einige Anmerkungen:

Statt:

for i in discipline_list: 
    if d == i: 
     found_d = True 

Sie tun können:

if d in discipline_list: 
    found_d = True 

Sie müssen auch found_d Variable nicht verwenden.

A könnte vereinfachten Code sein:

num = input("Enter your disciplines number >> ") 
i = 0 

while i < int(num): 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    if d in discipline_list: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 
    i += 1 
Verwandte Themen