在循环中用if else语句迭代两个列表(python)

问题描述 投票:1回答:1

我有两个list(oil_price和price,两者长度相同),想让它在两个循环中迭代,并通过if-else语句。代码只去做第一行。有谁能帮忙吗?

for x in oil_price:
        for y in price:
            if float(x) <= 60:
                cost = y * qty
                if cost > funds:
                    return funds, stocks
                else:
                    cash_balance = float(funds - cost)
                    stocks += qty
                    return cash_balance, stocks

            elif float(x) > 60:
                sale = qty * y
                if qty > stocks:
                    return funds, stocks
                else:
                    cash_balance = float(funds + sale)
                    stocks_owned = stocks - qty
                    return cash_balance, stocks_owned
python python-3.x
1个回答
3
投票

对Błotosmętek的回答进行补充(使用一个 return 语句在循环的第一次迭代后退出函数),你可以使用一个列表(2D-listarray,如果你愿意)来存储中间结果,然后使用 continue 转到循环的下一步。这样,您就可以计算出所有的 oil_priceprice.

所以,它可以看起来像这样。

results = []

for x in oil_price:
    for y in price:
        if float(x) <= 60:
            cost = y * qty
            if cost > funds:
                results.append([funds, stocks])
                continue
            else:
                cash_balance = float(funds - cost)
                stocks += qty
                results.append([cash_balance, stocks])
                continue
        elif float(x) > 60:
            sale = qty * y
            if qty > stocks:
                results.append([funds, stocks])
                continue
            else:
                cash_balance = float(funds + sale)
                stocks_owned = stocks - qty
                results.append([cash_balance, stocks_owned])
                continue

我相信这看起来会更漂亮,但还是可以的。

© www.soinside.com 2019 - 2024. All rights reserved.