You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现调用函数十次全为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:45:31