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