python, repite random.randint?

Soy nuevo en python y me gustaría saber cómo hacer que el código repita el random.randint parte 100 veces.

#head's or tail's

print("you filp a coin it lands on...")

import random

heads = 0
tails = 0


head_tail =random.randint(1, 2,)

if head_tail == 1:
    print("\nThe coin landed on heads")
else:
    print("\nThe coin landed on tails")

if head_tail == 1:
    heads += 1
else:
   tails += 1

flip = 0
while True :
    flip +=1
    if flip > 100:
        break



print("""\nThe coin has been fliped 100 times
it landed on heads""", heads, """times and tails""", tails,
"""times""")

input("Press the enter key to exit")

preguntado el 22 de mayo de 12 a las 18:05

5 Respuestas

Podrías hacerlo todo en una línea con una lista de comprensión:

flips = [random.randint(1, 2) for i in range(100)]

Y cuenta el número de caras/cruces así:

heads = flips.count(1)
tails = flips.count(2)

O mejor aún:

num_flips = 100
flips = [random.randint(0, 1) for _ in xrange(num_flips)]
heads = sum(flips)
tails = num_flips - heads

Respondido el 07 de enero de 14 a las 22:01

En primer lugar, lo reemplazaría while bucle con:

for flip in xrange(100):
  ...

En segundo lugar, para realizar 100 ensayos aleatorios, mueva el randint() llamada, así como todo lo demás que desee realizar 100 veces, dentro del cuerpo del ciclo:

for flip in xrange(100):
  head_tail = random.randint(1, 2)
  ...

Finalmente, así es como I haría todo el asunto:

heads = sum(random.randint(0, 1) for flip in xrange(100))
tails = 100 - heads

contestado el 22 de mayo de 12 a las 18:05

Usarías range(100), ya que está en Python3.x, que crea una lista del 0 al 99 (100 elementos). Se verá algo como esto:

print("you flip a coin it lands on...")

import random

heads = 0
tails = 0


for i in xrange(100):
    head_tail = random.randint((1, 2))

    if head_tail == 1:
        print("\nThe coin landed on heads")
    else:
        print("\nThe coin landed on tails")

    if head_tail == 1:
        heads += 1
    else:
        tails += 1    


print("""\nThe coin has been fliped 100 times
it landed on heads""", heads, """times and tails""", tails,
"""times""")

input("Press the enter key to exit")

contestado el 22 de mayo de 12 a las 18:05

for flip in range(100):
    head_tail = random.randint(1, 2)

    if head_tail == 1:
        print("\nThe coin landed on heads")
    else:
        print("\nThe coin landed on tails")

    if head_tail == 1:
        heads += 1
    else:
        tails += 1

contestado el 22 de mayo de 12 a las 18:05

Soy nuevo en Python y, en general, en programación, pero creé mi propio código base en la práctica de programación de 1 día. El ejercicio de codificación de lanzamiento de monedas es uno de los primeros del libro que estudio ahora. Traté de encontrar una solución en Internet y encontré este tema.

Estaba consciente de usar cualquier código de este tema porque algunas funciones utilizadas en respuestas anteriores no me eran familiares.

Para cualquier persona en una situación similar: siéntase libre de usar mi código.

import random

attempts_no = 0
heads = 0
tails = 0

input("Tap any key to flip the coin 100 times")


while attempts_no != 100:
 number = random.randint(1, 2)
 attempts_no +=1
 print(number)
 if number == 1:
    heads +=1
 elif number ==2:
    tails +=1

print("The coin landed on heads", heads, "times")
print("The coin landed on heads", tails, "times")

Respondido 14 Abr '15, 12:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.