如何实现调用函数十次全为True才打印指定内容(Python)
问题解决:仅十次调用均返回True时打印结果
首先修正你提供的function_one中的参数不一致问题(定义用s但代码里用seq):
import itertools def function_one(seq): # 判断序列是否递增,是则返回True return all(x <= y for x, y in itertools.pairwise(seq))
你的现有代码存在两个核心问题:
- 每次循环只要单次调用返回True就打印,没有判断全部十次调用是否都为True
s = random.randint(0,10)生成的是单个整数,不是序列,传给function_one会触发报错(itertools.pairwise需要可迭代的序列)
正确实现方式
方法1:用状态变量追踪结果
import random import itertools def function_one(seq): return all(x <= y for x, y in itertools.pairwise(seq)) all_passed = True for _ in range(10): # 生成一个随机长度的递增序列作为测试用例(可根据需求替换成你的目标序列) seq_len = random.randint(3, 5) test_seq = [random.randint(0, 10) + i for i in range(seq_len)] if not function_one(test_seq): all_passed = False break # 只要有一次失败,直接终止循环,没必要继续 if all_passed: print("good job")
方法2:用all()函数简化逻辑
import random import itertools def function_one(seq): return all(x <= y for x, y in itertools.pairwise(seq)) # 一次性判断10次调用的结果是否全为True all_passed = all( function_one([random.randint(0,10)+i for i in range(random.randint(3,5))]) for _ in range(10) ) if all_passed: print("good job")
关键注意点
- 必须等所有调用完成(或中途发现失败提前终止)后,再统一判断是否打印,不能单次调用成功就打印
- 传给
function_one的参数必须是可迭代序列(比如列表、元组),不能是单个整数
内容的提问来源于stack exchange,提问作者anna
相关产品推荐
相关产品推荐

