2016-10-22 8 views
-1

私はより広範なアルゴリズムを書いていますが、私はこの問題が働いていないと考えています。ここ リスト問題Python

コードの煩雑スニペット

..

difcheck = [] 
count = 1 
questionsneeded = 4 
required_dif = ["Easy", "Hard", "Medium", "Easy"] 
required_topics = ["Graphs", "Math", "Geometry", "Fun"] 
availablelist = [("Graphs", "Easy"), ("Fun", "aasd"), ("Geometry", "Medium"), ("Math", "Easy")] 
z = 0 
answerlist = [] 

while z < questionsneeded: 
    difs = required_dif 
    topics = required_topics 
    for x in range(len(availablelist)): 
     if availablelist[x][0] in required_topics and availablelist[x][1] in required_dif : 
     difcheck.append(availablelist[x]) 
      try: 
       required_dif.remove(availablelist[x][0]) 
       required_topics.remove(availablelist[x][1]) 
      except ValueError as exception: 
       continue  
    availablelist.append(availablelist[0])   
    answerlist.append(len(difcheck)) 
    del availablelist[0] 
    print("availablelist ") 
    print(availablelist) 
    print("difcheck ") 
    print(difcheck) 
    z = z + 1 
    del availablelist[0] 
    del difcheck[:] 

コードはavailablelistにおけるタプルを介して検索し、required_topicsのすべての要素とrequired_difタプル要素1内のすべての要素とタプル要素0とを比較します。

両方が両方のリストにある場合、タプルはdifcheckに追加されます。

これは、z = questionsneededになるまでこれを繰り返します。利用可能なリストのタプルは毎回シャッフルされるべきです(SHOULD)。

私が欲しいの出力がrequired_topicsの要素またはrequired_difはavailablelistでタプルにない場合には

availablelist 
[("Graphs", "Easy"), ("Fun", "aasd"), ("Geometry", "Medium"), ("Math", "Easy")] 
difcheck 
[("Graphs", "Easy"), ("Fun", "aasd"), ("Geometry", "Medium"), ("Math", "Easy")] 
availablelist 
[("Fun", "aasd"), ("Geometry", "Medium"), ("Math", "Easy"), ("Graphs", "Easy")] 
difcheck 
[("Fun", "aasd"), ("Geometry", "Medium"), ("Math", "Easy"), ("Graphs", "Easy")] 
availablelist 
[("Geometry", "Medium"), ("Math", "Easy"), ("Graphs", "Easy"), ("Fun", "aasd")] 
difcheck 
[("Geometry", "Medium"), ("Math", "Easy"), ("Graphs", "Easy"), ("Fun", "aasd")] 
availablelist 
[("Math", "Easy"), ("Graphs", "Easy"), ("Fun", "aasd"), ("Geometry", "Medium")] 
difcheck 
[("Math", "Easy"), ("Graphs", "Easy"), ("Fun", "aasd"), ("Geometry", "Medium")] 

である私が手出力が

availablelist 
[('Fun', 'aasd'), ('Geometry', 'Medium'), ('Math', 'Easy'), ('Graphs', 'Easy')] 
difcheck 
[('Graphs', 'Easy'), ('Geometry', 'Medium'), ('Math', 'Easy')] 
availablelist 
[('Math', 'Easy'), ('Graphs', 'Easy'), ('Geometry', 'Medium')] 
difcheck 
[('Geometry', 'Medium'), ('Math', 'Easy'), ('Graphs', 'Easy')] 
availablelist 
[('Geometry', 'Medium'), ('Graphs', 'Easy')] 
difcheck 
[('Graphs', 'Easy'), ('Geometry', 'Medium')] 
availablelist 
[('Graphs', 'Easy')] 
difcheck 
[('Graphs', 'Easy')] 

あり、それはないだろうdifcheckに追加されました。この場合、すべてが追加されるように完璧なマッチがあります。

問題はおそらく非常に明白ですが、私はすべてぼやけてしまい、それを見ることができません。

+0

変数を表示し、プログラムで何が起こっているのかを(ステップバイステップで)見たり、デバッガの使い方を知るために 'print()'を使用してください。 – furas

+2

また、ここで示されているwhileループの字下げは正しくありません – Sundeep

+1

要素を削除すると間違ったインデックスがあります。あなたは 'required_dif'リストから' topic'を削除し、 'required_topics'からは' dif'を削除しようとします。例外を伴って 'print()'を使ってください。エラーが出る可能性があり、なぜプログラムが期待通りに動作しないのかわかりません。 – furas

答えて

1

この部分は後方

required_dif.remove(availablelist[x][0]) 
required_topics.remove(availablelist[x][1]) 

に見える私はそれが

required_dif.remove(availablelist[x][1]) 
required_topics.remove(availablelist[x][0]) 

あなたはを通して各サイクルに1つの追記と2件の削除を持っているので、また、あなたのリストが小さくなって続ける理由があるべきだと思いますリスト。

+0

ありがとう!助けを感謝します – Docskii

+0

彼は具体的には0は話題にはdifと1、話し合いは変わると思いますか? NM、私は今参照してください。 – kabanus

+0

値を見るので、間違ったリストを参照しています。 –