Как я могу сделать два (), чтобы игнорировать те же случаи, что и один ()? - PullRequest
0 голосов
/ 19 февраля 2020

Как сделать так, чтобы программа пропускала те результаты, где «она не проходит». one() игнорирует некоторые случаи. two() забывает игнорировать их. Он не должен перебирать случаи «NO PASS».

import random
def percentage(a, b):
    return 100 * (float(a) / float(b))
def one(a, b, c):
    if percentage(a, b) <= 40:
        print("%d PASS" % c)
    elif 40 < percentage(a, b) <= 80:
        print("%d PASS" % c)
    else: # ONE() IGNORES THESE CASES. 
        pass 
def two(a, c): # HOW CAN I MAKE THIS FUNCTION TO IGNORE THE SAME CASES AS ONE()
    if a%2 == 0:
        print("%d EVEN" % c)
    elif a%2 != 0:
        print("%d ODD" % c)

randomlist = []
for i in range(0,5):
    n = random.randint(1,500)
    randomlist.append(n)

test1 = random.randrange(1, 500)
test2 = random.randrange(1, 500)

for c, a in enumerate(randomlist): 
    one(test1, test2, c+1)
for c, a in enumerate(randomlist):
    two(a, c+1)

1 Ответ

0 голосов
/ 19 февраля 2020

Похоже, вы хотите использовать первую функцию в качестве фильтра и передавать значения списка только второй функции, если они проходят фильтр. Для этого вам нужно вернуть что-то из первой функции. Вот один из способов сделать это:

import random
def percentage(a, b):
    return 100 * (float(a) / float(b))

def one(a, b, c):
    if percentage(a, b) <= 40:
        print("%d PASS" % c)
        return True
    elif 40 < percentage(a, b) <= 80:
        print("%d PASS" % c)
        return True
    else:
        return False

def two(a, c):
    if a%2 == 0:
        print("%d EVEN" % c)
    elif a%2 != 0:
        print("%d ODD" % c)

randomlist = []
for i in range(0,5):
    n = random.randint(1,500)
    randomlist.append(n)

test1 = random.randrange(1, 500)
test2 = random.randrange(1, 500)

randomlist_filtered = []
for c, a in enumerate(randomlist): 
    passed = one(test1, test2, c+1)
    if passed:
        randomlist_filtered.append(a)
for c, a in enumerate(randomlist_filtered):
    two(a, c+1)

Вывод случайного прогона:

1 PASS
2 PASS
3 PASS
4 PASS
5 PASS
1 ODD
2 ODD
3 EVEN
4 ODD
5 EVEN

Обратите внимание, что индексы предметов отличаются во втором l oop. Если вы хотите сохранить индексы, вы можете запустить обе функции в пределах одного l oop или сохранить записи вместе с соответствующими индексами в отфильтрованном списке. Я не исправил это, потому что, если честно, я не знаю, зачем вам вообще нужны индексы (которые генерируются enumerate)

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