

既出でしたら申し訳ありません。

質問：IDLEの実行結果を表示する方法を教えていただけませんか。  
環境：python2.7.10(Mac OS high Sierra 10.13.2)  
やりたいこと：

以下のソースコードをIDLEから実行して出力結果を確認したい

[code]

    #! /usr/bin/env python
    # coding: utf-8
    
    import urllib.request
    from xml.etree.ElementTree import ElementTree
    
    def main(url):
        xmlfile = urllib.request.urlopen(url)
        tree = ElementTree(file=xmlfile)
        root = tree.getroot()
        for node in root.getchildren():
            if node.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}Items":
                for subnode in node.getchildren():
                    if subnode.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}TotalResults":
                        print(subnode.text)
                    elif subnode.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}Item":
                        for item in subnode:
                            if item.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}ASIN":
                                print(item.text)
    
    if __name__ == "__main__":
        amazon_api_url = "http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&Operation=ItemSearch&"
        AWSAccessKeyId = "XXXXXXXXXXXXXXXXXX"
        Keywords = "Python"
        url = amazon_api_url + "AWSAccessKeyId=" + AWSAccessKeyId + "&SearchIndex=Books&Keywords=" + Keywords
        main(url)
    
[/code]

やったこと：  
①ターミナルでIDLEと入力

②IDLEが起動するため、ファイルを開くを選択

③amazon.py(上のソースコード)を選択  
（アクセスキーIDは伏せております）

④Run→Runmoduleを選択

上記を行うと、IDLEでRestartと表示された後に結果が何も表示されずに帰って  
きてしまいます。

翔泳社の「１０日で覚えるPython入門教室」を参考にしていますが、期待結果と  
異なっております。

なんらかの初歩的な設定ミスかと思いますが、もし同じようなはまった方がいたら  
ご教示願います。


CC BY-SA 3.0
2018-01-23T13:15:16.053
41156
2018-01-24T03:37:35.403
2018-01-23T17:48:45.867
24284
27119
question
python
pythonのプログラム実行結果がIDLEで表示されません


if文で条件が成立した場合にしか表示されない(print文が実行されない）プログラムになっていますから、何が起きているのか判らないのだ思います。

if文の前に、条件判定するデータをprintするようにすると、どこで問題が発生しているかを推測できると思います。たとえば以下の例のようにmainを書き換えて実行してみてください。

[code]

    def main(url):
    xmlfile = urllib.request.urlopen(url)
    tree = ElementTree(file=xmlfile)
    root = tree.getroot()
    for node in root.getchildren():
        print node
        if node.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}Items":
            for subnode in node.getchildren():
                print subnode
                if subnode.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}TotalResults":
                    print(subnode.text)
                elif subnode.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}Item":
                    for item in subnode:
                        print item
                        if item.tag == "{http://webservices.amazon.com/AWSECommerceService/2005-10-05}ASIN":
                            print(item.text)
    
[/code]


CC BY-SA 3.0
2018-01-24T03:37:35.403
41171
2018-01-24T03:37:35.403
217
41156
answer