【问题标题】:How to Print out the longest streak of heads from a coin toss如何从抛硬币中打印出最长的正面连续
【发布时间】:2022-10-30 04:52:57
【问题描述】:

我正在尝试编写一个程序来计算随机 100 次抛硬币中最长的正面连续,能够打印出抛掷结果,但我不知道如何初始化最长连续的计数并继续它,我是新手编程和python

import random
total_heads = 0
count = 0

while count < 100:

    coin = random.randint(1, 2)
    if coin == 1:
        print("H")
        total_heads += 1
        count += 1``
    elif coin == 2:
        print("T")

【问题讨论】:

    标签: python if-statement random while-loop printing


    【解决方案1】:

    这应该可以解决问题:

    import random 
    total_heads = 0 
    count = 0
    longest_streak = 0
    current_streak = 0
    
    while count < 1000:
    
        coin = random.randint(1, 2)
        if coin == 1:
            print("H")
            total_heads += 1
            current_streak += 1
            count += 1
        else:
            print("T")
            current_streak = 0
        if current_streak > longest_streak:
          longest_streak = current_streak
    print(longest_streak)
    print(total_heads)
    

    【讨论】:

      【解决方案2】:
      from random import randint as r
      
      heads_streaks = [0]
      for i in range(100):
       coin = r(0, 1)
       if not coin:
        print("H")
        heads_streaks[-1] += 1
       else:
        print("T")
        heads_streaks.append(0)
      print("longest streak is: {}".format(sorted(heads_streaks, reverse=True)[0]))
      

      【讨论】:

      • 我收到“'reversed' is an invalid keyword argument for sort()”错误
      • 我已经对其进行了编辑,它应该说反向而不是反向,这就是问题所在。我测试了它并且它有效。感谢您的反馈!
      【解决方案3】:

      冒着太多魔法的风险,这些是我会使用的工具:

      把这些放在一起,我得到:

      import random
      import itertools
      
      # perform 100 coin tosses and print them out
      tosses = random.choices('HT', k=100)
      print('tosses: ', *tosses)
      
      # turn these into streaks of the same side
      streaks = [''.join(streak) for _, streak in itertools.groupby(tosses)]
      print('streaks: ', *streaks)
      
      # get the longest streak of heads
      lsh = max(len(s) for s in streaks if s[0] == 'H')
      print('longest streak of heads: ', lsh)
      

      一次运行,其中输出:

      tosses: H T H T T T H H T T H H H H T H T T T T H T T H H H H H T T H H H H H H T T T T H T H H T H T T H H H H H H H T T T H T H H T T T H H T T H H T H T H H T H H H T T H T T H T H T H H T T T T T T H T H
      streaks: H T H TTT HH TT HHHH T H TTTT H TT HHHHH TT HHHHHH TTTT H T HH T H TT HHHHHHH TTT H T HH TTT HH TT HH T H T HH T HHH TT H TT H T H T HH TTTTTT H T H
      longest streak of heads: 7
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 2017-07-02
        • 2023-03-06
        相关资源
        最近更新 更多