Qlichan
@Qlichan

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

辞書を要素としたリストの各要素の取得

解決したいこと

Progate Python道場レッスンⅠ~Ⅲ⑨の問題を解いています。
辞書を要素としたリストの各要素を繰り返し処理(for文)で取得したいのですが、
以下のようなエラーが出てしまいます。
解決方法を教えて下さい。

発生している問題・エラー

TypeError: 'int' object is not iterable

該当するソースコード

def cancel_order(orders, cancel_order_id):
    for order in orders:
        print(order)

orders = [
    {
        'order_id': 1,
        'user_id': 1,
        'items': [1, 4],
        'status': 'shipped'
    },
    {
        'order_id': 2,
        'user_id': 2,
        'items': [2, 4],
        'status': 'shipped'
    },
    {
        'order_id': 3,
        'user_id': 1,
        'items': [2, 3],
        'status': 'processing'
    },
    {
        'order_id': 4,
        'user_id': 3,
        'items': [1, 5, 6],
        'status': 'processing'
    }
]
cancel_order_id = 3
# 関数の呼び出し
result = cancel_order(cancel_order_id, orders)
print('入力1:キャンセルにできるステータスの場合')
print(result)

print('-----------------------------')

# 利用するデータ
cancel_order_id = 1
# 関数の呼び出し
result = cancel_order(cancel_order_id, orders)
print('入力2:キャンセルにできないステータスの場合')
print(result)

print('-----------------------------')

# 利用するデータ
cancel_order_id = 10
# 関数の呼び出し
result = cancel_order(cancel_order_id, orders)
print('入力3:注文IDが該当しない場合')
print(result)
0

2Answer

TypeError: 'int' object is not iterableが出ている箇所は、上のコードではないと思われます。
cancel_order関数のコードも(他もあればすべて)貼り付けてください。

1Like

Comments

  1. @Qlichan

    Questioner

    ありがとうございます。
    cancel_order関数のコードは以下の通りです。
    これ以外の他のコードは書いていません。
    よろしくお願いします。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    def cancel_order(orders, cancel_order_id):
    for order in orders:
    print(order)
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

  2. cancel_order関数のコードは以下の通りです。

    失礼しました。コードの先頭にありましたね。

    cancel_order関数の引数は、def cancel_order(orders, cancel_order_id):ですが、
    呼び出す側の引数は、result = cancel_order(cancel_order_id, orders)と、
    orderscancel_order_idの並びが逆になっていることが原因と思います。
    一致するように修正してみてください。

  3. @Qlichan

    Questioner

    ありがとうございます。
    修正してみたところ、エラーが出てこなくなりました。
    回答いただきありがとうございまいした。

Your answer might help someone💌