Python использование массива дважды приводит к неверному возвращаемому значению - PullRequest
0 голосов
/ 29 мая 2020

Хорошо, поэтому я работаю над проектом, где есть веб-сайт, который может подсчитать, сколько прибыли вы можете получить от каждого элемента из видеоигры!

В дальнейшем я столкнулся с несколькими проблемами но мне удалось решить некоторые из них, как мне, так и получить помощь здесь, в StackOverflow. Я не могу понять, в чем я сейчас занимаюсь.

Я пытаюсь получить «общую стоимость» продуктов, что и делаю следующим образом (код: 1):

total = []
for x in range(len(buy)):
    total.append(amount[x] * sell[x])

Я получаю «количество» из этого кода прямо здесь (код: 2):

amount = []
for x in range(len(buy)):
   amount.append(userInput / sell[x])

Теперь проблема в том, что всякий раз, когда я пытаюсь получить общую стоимость, это почти просто up копирует все, что ввел пользователь, и я предполагаю, что это происходит из-за -

amount.append(userInput / sell[x])

. Когда я пытаюсь получить эту «сумму» из другого для l oop, это вызывает вопросы? Я могу ошибаться здесь, поэтому мне нужна твоя помощь! :)

Вот полный код страницы:

@app.route('/bflipper', methods=['POST', 'GET'])
def bFlipper():
    product_name = []
    f = requests.get(
        'https://api.hypixel.net/skyblock/bazaar?key=73ac0a44-4c41-4933-a9ee-b4095be2b6d2').json()
    for x in productNames:
        product_name.append(f["products"][x]["product_id"])
    if request.method == 'POST':
        userInput = request.form['coins']
        userInput = int(userInput)
        sell = [product['sell_summary'][0]['pricePerUnit']
                for product in f['products'].values() if product['sell_summary']]

        buy = [product['buy_summary'][0]['pricePerUnit']
               for product in f['products'].values() if product['buy_summary']]

        amount = []
        for x in range(len(buy)):
            totAmount = userInput / sell[x]
            amount.append(totAmount)

        total = []
        for x in range(len(buy)):
            total.append(amount[x] * sell[x])

        return render_template("flipper.html", userInput=userInput, product_name=product_name, amount=amount, total=total, sell=sell, buy=buy)
    else:
        return render_template("flipper.html", product_name=product_name)

Вот как это выглядит на странице:

picture

Я написал в '123321' как 'userInput', и вы можете увидеть в 'общей стоимости', что он в значительной степени скопировал то, что я вложил, поэтому где-то в 'code: 1 & code: 2' это вызывает проблемы!

Спасибо! - Саймон

1 Ответ

1 голос
/ 29 мая 2020

total заканчивается копиями userInput, потому что это именно то, на что вы его запрограммировали. Пройдемся по этому: что в каждом индексе amount[x]? Ну, вы установили его равным userInput / sell[x]. Итак, что будет каждый из total[x]? total[x] == amount[x] * sell[x] == (userInput / sell[x]) * sell[x] == userInput (грубо говоря, на вашем снимке экрана видна некоторая неточность с плавающей запятой). Итак, все записи в total оказываются копиями userInput, как вы заметили.

В заключение, я не уверен, что «использование массива дважды» обязательно является проблемой здесь. Я не знаю, что должен делать ваш код, но именно поэтому он делает то, что есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...