Есть ли способ подсчитать, сколько выводов true / false в булевой функции с помощью цикла for? - PullRequest
0 голосов
/ 09 апреля 2019

Я делаю курсовую работу по ценам на полеты с использованием Python. Моя булева функция возвращает, нужно ли покупать билет сейчас или ждать дольше, чтобы купить, где True указывает на покупку сейчас, а False на ожидание дольше:

def should_I_buy(data, input_price, input_day):
    """Returns whether one should buy flight ticket now or wait longer to buy"""
    for day, price in data:
        if day < input_day:
            if price < input_price:
                return False
    return True

Я также хочу найти способ подсчитать, сколько истинных и ложных значений в цикле, когда я вставляю случайные input_price и input_day.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вы можете использовать sum для подсчета всех значений True в for, (True=1, False=0):

def should_I_buy(data, input_price, input_day):
    """Returns whether one should buy flight ticket now or wait longer to buy"""
    return sum(day >= input_day or price >= input_price for day, price in data)

тест и вывод:

data = [(14, 77.51), (13, 14.99), (12, 56.09), (11, 14.99), (10, 14.99), (9, 14.99), (8, 39.00), (7, 114.23),
        (6, 37.73), (5, 56.09), (4, 14.99), (3, 22.43), (2, 22.43), (1, 31.61), (0, 168.29)]

print(should_I_buy(data, 50.00, 8))   # output 10
print(should_I_buy(data, 18.00, 3))   # output 15

Надеждаэто поможет вам, и прокомментируйте, если у вас есть дополнительные вопросы.:)

0 голосов
/ 09 апреля 2019

Ну, вы должны использовать переменную, которая увеличивается на каждой итерации:

def should_I_buy(data, input_price, input_day):
    """Returns whether one should buy flight ticket now or wait longer to buy"""
    number_of_false = 0
    for day, price in data:
        if day < input_day:
            if price < input_price:
                number_of_false+=1
    return number_of_false,len(data)-number_of_false

NB

Обратите внимание, что я понятия не имею, что вы делаете, поэтому мой ответ основан на быстром взгляде на ваш код.

Если это не так, как ожидалось, пожалуйста, прокомментируйте, и мы можем пройти через то, что вы хотите получить.

...