Python中的连续掷硬币计数

2024-10-01 22:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,遇到了一个我似乎无法调试的错误,无论我做了什么修改。我试图编写一个函数,允许用户指定掷硬币的次数和连续掷硬币的长度。程序应该计算条纹(正面或反面)发生的次数。运行当前程序时,返回正面和反面的值均为1:

import random

def flip():
    flipValue = random.randint(1,2)
    if flipValue == 1:
        side = "Heads"
    else:
        side = "Tails"
    return side

def nStreak():
    numFlips = int(input("Number of flips:"))
    lengthStreak = int(input("Length of streak:"))
    numRuns = 0
    heads = 0
    tails = 0
    numStreakHeads = 0
    numStreakTails = 0
    while numRuns != numFlips:
        side = flip()
        numRuns += 1
        if side == "Heads":
            heads += 1
            if heads == lengthStreak:
                numStreakHeads += 1
        if side == "Tails":
            tails += 1
            if tails == lengthStreak:
                numStreakTails += 1
    print("Number of heads streaks:", numStreakHeads)
    print("Number of tails streaks:", numStreakTails) 

Tags: of程序numberifdef硬币random次数
1条回答
网友
1楼 · 发布于 2024-10-01 22:34:33

首先,当你达到lendthStreak后,你不会重置你的计数器。所以,一旦heads等于lendthreak,那么以后每次都会大于lendthreak,所以你总是得到1的结果。你想在你遇到连胜之后重置这个值。你还需要重置你的计数器一旦你得到一个翻转的另一面(一旦你翻转头部,设置尾巴=0)。在

^{1}$

相关问题 更多 >

    热门问题