1. ホーム
  2. python

[解決済み] python3 TypeError: 'function' object is not iterable.

2022-01-31 16:25:35

質問

ソースコードにどのような変更が必要ですか?

    def Update():
        print('\n')
        print("アップデート")
        cmd = os.system('xterm -e apt-get update')
        print("アップデート完了")

    def AptUpdate():
        print('\n')
        print("システムを更新しますか{Y/N}")
        print("Yまたはy")
        print("Nまたはn")
        code = input("コマンド > ")
        if code == 'y' または code == 'Y':
            for i in Update():
                return 更新
            elif code == 'n' または code == 'N': 
                リターン 
            それ以外の場合 
                print("Warning!")

    AptUpdate()

    例外が発生します。

    トレースバック (最も最近の呼び出し):
      ファイル "pybash.py", 行 110, in 
        AptUpdate()
      ファイル "pybash.py", 行 102, in AptUpdate
        for i in Update:
    TypeError: 'function' オブジェクトはイテレート可能ではありません。


解決方法は?

トレースバックエラーが指摘しているのは、for文の誤用です。

for i in Updt():

for Python's for statement iterates over any sequence (a list or a string), in order they appear in the sequence." (source: python 3.3 documentation, section 4: More control structures) Python 3におけるfor文は以下の通りです。 Python 3

関数はリストでも文字列でもないので、formatは使えません。

for [variable] in [function]():

修正すべき点については、この2つの機能が個々に何を達成することになっているかによります。