2012-01-20 17 views
-2

私のコードに問題があります。 私はリストnot_foundに追加することができません。何らかの理由で2回ループします。 誰かが私を正しい方向に向けることができますか?マッチはmy_trackで機能しますが、一致しない場合はマッチしません。ループ&マッチで正しいリストに追加することができません

# coding: utf-8 
#!/usr/bin/env python 
import spotimeta 
import sys 
import time 

my_tracks = raw_input("Please enter a sentence: ").title().split() 
playlist = [] 
real_playlist = [] 
not_found = [] 

def check_track(track_name, my_track, track_href): 
    if track_name == my_track: 
     playlist.append(track_href) 
     return 1 

# make sure the user does not input a single word as input 
if (len(my_tracks) > 1): 
    path = my_tracks[1] 
else: 
    sys.exit("Invalid input, please enter a sentence.") 


# let's search 
for my_track in my_tracks: 
    match = 0 
    print "Searching for '%s'\n" % (my_track), 
    data = spotimeta.search_track(my_track) 
    for result in data['result']: 
     if not match == 1: 
      try: 
       match = check_track(result["name"],my_track,result["href"]) 
      except Exception, e: 
       error = "not available" 
      else: 
       if data['total_results'] > 0: 
        not_found.append(my_track) 
+3

ハッシュバン( '#!')は、最初の行にない場合は役に立たない。 – cha0site

+2

問題を具体的に説明してください。予想されるアウトプット/ビヘイビアは?代わりにあなたが得ている出力/行動は何ですか?また、問題を再現する必要のないすべてを残して、コード例を減らしてみてください。 –

+0

入力:ソング名ソング名ソング名 出力:一致する曲にURLを指定します –

答えて

0

デバッグを試みる必要があります。スクリプトを実行するとき、それは、デバッガでset_trace行で停止します

import pdb 
pdb.set_trace() 

:デバッグの最も簡単な方法の一つは、行を追加しています。 詳細については、http://docs.python.org/library/pdb.htmlをご覧ください。私の理解から

0

はあなたのような何かをしようとしている:

for my_track in my_tracks: 
    print "Searching for '%s'\n" % (my_track), 
    data = spotimeta.search_track(my_track) 
    for result in data['result']: 
     if result['name'] == my_track: 
      playlist.append(result['href']) 
     elif data['total_results'] > 0: 
      not_found.append(my_track) 

をウィルあなたのために、この多かれ少なかれ仕事?
ご理解ください。

0

すぐにバットをオフにして、私は2つのことに気付いています。

まず、data['total_results']が少し遅れていることを確認しています。合計結果の値が0より大きい場合(待機、何?)、すぐにリストに追加し、データを解析せずに移動したいとします。私は、spotimeta.search_track()からの呼び出しの後、これが望ましくないデータであるかどうかを確認します(その後、それをリストに追加します)。

第2に、あなたのforループの意図について混乱しています。 アイテムが1つしか見つからない場合は、inステートメント(my_track in result)を使用できます。

関連する問題