如何使two()忽略与one()相同的情况



如何让程序跳过那些"它不通过"的结果。one()忽略了某些情况。two()忘记忽略它们。它不应该重复"不通过"的情况。

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)

看起来您希望使用第一个函数作为过滤器,并且如果列表值通过了过滤器,则只将列表值传递给第二个函数。为此,您需要从第一个函数返回一些内容。这里有一种方法:

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

请注意,在第二个循环中,项目的索引是不同的。如果要保留索引,可以在同一个循环中运行这两个函数,或者在筛选列表中保留条目及其各自的索引。我没有修复它,因为老实说,我不知道你为什么想要索引(由enumerate生成(

相关内容

最新更新