2017-11-02 1 views
0

Hallo Ich versuche einen Code zu machen (zu stoppen wenn ich zwei P habe) aber es macht mich: TypeError: 'NoneType' Objekt ist nicht untergruppierbar Danke für deine Hilfe ! Mein Code:Liste drucken, wenn ich zwei P hintereinander habe

import random as rd 
def experience(): 
    L=[] 
    L.append(rd.choice(['P','F'])) 
    L.append(rd.choice(['P','F'])) 
    a=0 
    b=1 
    while L[a]!=L[b]!='P': 
     a=b 
     b=b+1 
     L.append(rd.choice(['P','F'])) 
    return L 
+0

Auf welcher Linie wird der Fehler ausgelöst? Können Sie den vollständigen Fehler posten? Und ist "L [a]! = L [b]! = 'P'" gültig? – alex

+0

Works for me ... – APorter1031

+0

Also, was meinst du mit * Ich versuche einen Code zu machen (zu stoppen wenn ich zwei P habe) *? Wie zwei 'P's in einer Reihe? Sie füllen die Liste nur mit zwei Werten auf. Warum die zweite 'while' Aussage? Alles, was Sie in diesem Szenario tun müssen, ist den ersten und zweiten Index von "L" zu überprüfen, da nur zwei Werte drin sind. – alex

Antwort

1

ich nicht bekommen, die Ausnahme, die Sie erwähnen, aber sind Sie sicher, dass Ihre Ausgangsbedingung ist richtig?

Wäre nicht "während nicht (L [a] == L [b] == 'P'):" richtiger sein, wenn Sie beenden möchten, wenn Sie zwei 'P' hintereinander haben?

Oder vielleicht sogar "während nicht (L [a] == 'P' und L [b] == 'P'):" um es lesbarer zu machen, da zwei "==" in der gleichen Aussage kann leicht missverstanden werden.

Hier ist eine kürzere Umsetzung durch die Art und Weise, gibt es wirklich keine Notwendigkeit, den Überblick über Indizes zu halten:

def experience(): 
    L = [rd.choice(['P', 'F'])] 
    while True: 
     L.append(rd.choice(['P', 'F'])) 
     if L[-1] == L[-2] == 'P': 
      return L 
Verwandte Themen