2

機能していないように見える関数内にネストされたループがあります。

「ブロードキャスト」ディクショナリのキーと値の両方が存在し (空ではない)、stdout に出力されます。

ループ (2 番目のループ) でブロードキャストの値であると思われるものを出力しようとすると、空になります。

print(broadcast.values())  

以下の最初のチャンクは私のコードであり、それに続くのは stdout に出力されるものです: ( ... 出力が続く場所に表示されます)

def broadcast_display(results):
    broadcast = results['broadcast']
    thumbnails = results['thumbnails']
    html = []
    html.append('\n<h2 style="text-align:center;">Broadcast / Receive</h2>')
    message = ""
    print('broadcasts keys')
    print(broadcast.keys())
    print('broadcasts values')
    print(broadcast.values())
    for type, lists in broadcast.items():
        print('looping through broadcasts values')
        print(lists)                                                                               
        for list in lists:
            #Does not reach this loop                                                               
            print('TEST 3: does not print')
            #code goes on
            html.append('\n<hr>')
            html.append('\n<h2>{0}</h2>'.format(KelpPlugin.SCRIPT_TITLES[blocktype])) #heading                          
            html.append('\n<table border = "1">')
            for sprite, script in blocklist:
                if KelpPlugin.script_start_type(script) == KelpPlugin.HAT_WHEN_I_RECEIVE:
                    # check if the message is the same as the last one                                                  
                    # if it is, print this script next to the last                                                      
                    # otherwise, print it below the last                                                                
                    if message != script[0].args[0].lower():
                        html.append('\n  </tr>')
                        html.append('\n  <tr>')
                    message = script[0].args[0].lower()
                    script_images = KelpPlugin.to_scratch_blocks(sprite, script)
                    html.append('\n<td>')
                    html.append('\n<p>        {0}</p>'.format(sprite))
                    html.append('\n    <p><img src="{0}" height="100" width="100"></p>'.format(thumbnails[sprite]))
                    html.append('\n<pre class="blocks">')
                    html.append('\n<p>{0}</p>'.format(script_images))
                    html.append('\n</pre>')
                    html.append('\n</td>')
                elif KelpPlugin.script_start_type != KelpPlugin.NO_HAT:
                    if message == "":
                        html.append('\n  </tr>')
                    html.append('\n  <tr>')
                    script_images = KelpPlugin.to_scratch_blocks(sprite, script)
                    html.append('\n<p>{0}</p>'.format(sprite))
                    html.append('\n    <p><img src="{0}" height="100" width="100></p>'.format(thumbnails[sprite]))
                    html.append('\n<pre class="blocks">')
                    html.append('\n<p>{0}</p>'.format(script_images))
                    html.append('\n</pre>')
                    html.append('\n  </tr>')
            html.append('\n</table>')
            return ''.join(html)

broadcasts keys
[0, 2, 3]
broadcasts values
[[], [[(u'LosAngeles', kurt.Script([
    kurt.Block('whenClicked'), ...
looping through broadcasts values
[]  

結果ディクショナリは次のようになります。

{0: [], 2: [[(u'San Juan Batista', kurt.Script([
kurt.Block('whenClicked'),
kurt.Block('broadcast:', u'SJB')], pos=(69, 59.0))), (u'Missionary', kurt.Script([
kurt.Block('whenIReceive', u'SJB'), ... 3: []}

また、StackOverflowで質問するのはこれが初めてなので、簡単にお願いします:)

4

1 に答える 1