можно ли напечатать все в целом вместо того, чтобы печатать процент каждого действия - PullRequest
1 голос
/ 10 июня 2019

Я пытался закодировать симулятор coinToss, который был довольно легок для новичка, но затем я попытался внедрить систему процентного расчета, которая вычисляет, сколько процентов от общего числа бросков было головой или хвостом. Тогда я заметил, что застрял и, возможно, мне нужна помощь.

Я попытался разорвать цикл for и исключить все из переменной x для печати

import random


heads = "Heads"
tails = "Tails"
flips = int(input("How many flips do you want to toss?: "))
print("................................")
cointoss = [(heads), (tails)]


for flips in range(flips):
    toss = random.choice(cointoss)
    print(toss)
    X = toss.count(heads)
    Y = toss.count(tails)
    Z = 100/(int(X)+int(Y))
    print('Percent of X: '+str(X*Z)+'%')
    print('Percent of Y: '+str(Y*Z)+'%')

это результат



How many flips do you want to toss?: 4
................................
Heads
Percent of X: 100.0%
Percent of Y: 0.0%
Heads
Percent of X: 100.0%
Percent of Y: 0.0%
Heads
Percent of X: 100.0%
Percent of Y: 0.0%
Tails
Percent of X: 0.0%
Percent of Y: 100.0%

Я хочу, чтобы код отображал общий процент от всего цикла вместо 100% для голов или хвостов в зависимости от результата.

Ответы [ 3 ]

2 голосов
/ 10 июня 2019

Попробуйте это;

import random

Headcount=0
Tailcount=0
heads = "Heads"
tails = "Tails"
flips = int(input("How many flips do you want to toss?: "))
print("................................")
cointoss = [(heads), (tails)]


for flips in range(flips):
    toss = random.choice(cointoss)
    If toss == heads:
        Headcount+=1
    else:
        Tailcount+=1
    print(toss)
    X = Headcount
    Y = Tailcout
    print('Percent of X: '+str((X/X+Y)*100)+'%')
    print('Percent of Y: '+str((Y/Y+X)*100)+'%')
1 голос
/ 10 июня 2019

Прежде всего, вы не рассчитываете процент правильно, так как вы не ведете счет текущего числа вращений в процессе. Что вы можете сделать, это использовать текущий индекс вращения, чтобы вычислить процент, в котором:

centOfHeads = currentNumberOfHeads / currentNumberOfFlips * 100

centOfTails = currentNumberOfTails / currentNumberOfFlips * 100

import random

heads = "Heads"
tails = "Tails"
numHeads = 0
numTails = 0
flips = int(input("How many flips do you want to toss?: "))
print("................................")
cointoss = [heads, tails]


for flip in range(flips):
    toss = random.choice(cointoss)

    if toss == heads:
        numHeads += 1
    else:
        numTails += 1

    print("Flip #" + str(flip + 1) + ": " + toss)

    percentHeads = numHeads / (flip + 1) * 100
    percentTails = numTails / (flip + 1) * 100

    print('Percent of Heads: ' + str(percentHeads) + '%')
    print('Percent of Tails: ' + str(percentTails) + '%')
1 голос
/ 10 июня 2019

Вам понадобятся дополнительные переменные, которые будут подсчитывать общее количество голов и хвостов на данный момент, а также подсчитывать текущее количество сделанных кувырков. Теперь у вас нет информации об общем количестве видимых голов / хвостов, только результат текущего броска, поэтому вы не можете точно рассчитать процент.

Я бы предложил добавить переменные вне цикла для общего количества голов и общего количества хвостов. Всякий раз, когда вы делаете сальто, вы увеличиваете соответствующий счетчик, а затем можете рассчитать процент общих голов / хвостов на основе этих счетчиков.

...