weixin_39017744 2019-09-29 02:11 采纳率: 83.3%
浏览 724
已采纳

请问如何做python的循环随机取数组直到得出指定数字?

举个例子:
随机数字范围:0~100
每组数字量:6(s1,s2,s3,s4,s5,s6)
第二轮开始随机数字范围:新s1和新s2取值为旧s1和s2之间,新s3和新s4取值为旧s3和s4之间,新s5和新s6取值为旧s5和s6之间。
跳出循环条件:任意数字=37
如因s1=s2!=37&s3=s4!=37&s5=s6!=37使数组进入无意义无限循环,则重新取0~100六个数字并开始如上述第二轮随机的随机取值。

如果题目哪里没看懂请告诉我,答案以代码形式发送。谢谢!

  • 写回答

5条回答 默认 最新

  • 积跬步以至千里。 2019-09-29 11:25
    关注
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import random
    
    def random_test():
        # 初始化一个列表,随机0-100的6个数字
        rst_list = [random.randint(0,100) for i in range(0, 6)]
        print(rst_list)
        while 1:
            # 新建临时数据,用来存储rst_list按规则处理后的数据
            temp = []
            for k,v in enumerate(rst_list):
                if k%2==0:
                    temp.append(random.randint(min([rst_list[k],rst_list[k+1]]),max([rst_list[k],rst_list[k+1]])))
                else:
                    temp.append(random.randint(min(rst_list[k-1], rst_list[k]),max(rst_list[k-1], rst_list[k])))
            # 将结果temp列表,写入结果列表 rst_list
            rst_list = temp
            print(rst_list)
            # 判断37在结果列表中,则返回结果列表 rst_list
            if 37 in rst_list:
                print('rst_list:',rst_list)
                return rst_list
            else:
                # 37没在列表中,则按要求判断死循环情况(需求里的 s1=s2!=37&s3=s4!=37&s5=s6!=37 )
                # 如果进入死循环,则重新初始化结果列表 rst_list
                if rst_list[0]==rst_list[1] and rst_list[2]==rst_list[3] and rst_list[4]==rst_list[5]:
                    rst_list = [random.randint(0, 100) for i in range(0, 6)]
    
    def main():
        random_test()
    
    
    if __name__ == '__main__':
        main()
    
    

    根据需求描述,按照最简单和容易理解的方式,逐步实现需求。注释和打印较多,实际代码篇幅并不多

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器