首页 > 解决方案 > python返回/打印列表中一行中最大数量的值

问题描述

我是初学者。

试图制作一个可以返回连续最高数字的函数,选择了列表中的值。

基本上我想模拟正面或反面游戏,并找出连续多少次,例如反面。

import random

def simulations(runs):
    sequence = []
    in_a_row = []
    tæller = 0
    for run in range(0, int(runs)):
        my_random = random.randint(0,1)
        sequence.append(my_random)

        if my_random == 0:
            in_a_row.append(my_random)
            tæller = tæller + 1            
            print()
        elif my_random == 1:
            tæller = 0
            in_a_row = []
            print()
        print(f'{tæller}')   
        print(sequence)

# runs = input('How many simulations do you want to run ? ')
runs = 10
simulations(runs)

我想我快到了。但是我想不通,当我运行这段代码时,我首先打印出被选中的实际值,然后查看到目前为止创建的列表。

例如,如果 my_random == 0 连续 3 次,它将在每次为 0 时打印,直到它选择 1。

我想要的是代码只打印在整个列表中选择 0 的最长序列

我知道我的代码是意大利面条,功能还没有完成,但我相信我自己可以做到。我只需要一些帮助来隔离从列表中连续选择给定值的次数。

标签: python-3.xlistreturn-value

解决方案


嗯,我想我终于能够自己创建一个解决方案。

很高兴我想我花了 5 个小时试图弄清楚。

这是我的解决方案。如果有人可以对我的解决方案发表评论,我仍然会很高兴,并且可能会展示另一种更简单的方法:-)

import random

def simulations(runs):
    sequence = []
    in_a_row = []
    found_zero = 0
    all_time_high = [0]
    for run in range(int(runs)):
        my_random = random.randint(0,1)
        sequence.append(my_random)

        if my_random == 0:
            in_a_row.append(my_random)
            found_zero = found_zero + 1            
            print(f'fundet 0 ja: {found_zero} Gange')
            all_time_high.append(found_zero)
        elif my_random == 1:
            found_zero = 0
            in_a_row = []
            print()

        print(sequence)
        print(f'Higest number of times in a row zero was found: {max(all_time_high)}')

# runs = input('How many simulations do you want to run ? ')
runs = 10
simulations(runs)

推荐阅读