2013-02-14 3 views
1

Я ОЧЕНЬ новичок в Python, и мне нужно создать игру, которая имитирует переворачивание монетки и попросит пользователя ввести количество раз, когда должна быть брошена монета. На основе этого ответа программа должна выбрать случайное число, которое равно 0 или 1 (и решить, что представляет «голова» и которое представляет «хвосты») за указанное количество раз. Подсчитайте количество «голов» и количество произведенных «хвостов» и сообщите пользователю следующую информацию: список, состоящий из симулированных монетных бросков, а также краткое изложение количества головок и количества произведенных хвостов. Например, если пользователь вводит 5, моделирование монеты может привести к [«головам», «хвостам», «хвостам», «головам», «головам»). Программа должна печатать что-то вроде следующего: «[« головы »,« хвосты »,« хвосты »,« голова »,« голова »)Pinton Coin Toss

Это то, что у меня есть до сих пор, и оно не работает на все ...

import random 

def coinToss(): 
    number = input("Number of times to flip coin: ") 
    recordList = [] 
    heads = 0 
    tails = 0 
    flip = random.randint(0, 1) 
    if (flip == 0): 
     print("Heads") 
     recordList.append("Heads") 
    else: 
     print("Tails") 
     recordList.append("Tails") 
    print(str(recordList)) 
    print(str(recordList.count("Heads")) + str(recordList.count("Tails"))) 
+0

Есть лучшие варианты в [случайный] (http://docs.python.org/2/library/random.html), но я полагаю, вы должны решить эту проблему ** длинную руку ** так говорить. – sotapme

+0

Можете ли вы дать дополнительную информацию? «он вообще не работает» не очень описателен. В чем конкретно проблема? –

+0

Программа просто печатает либо «Хвосты», либо «Головы» и 0 или 1 – YeahScience

ответ

4

Вы почти там:

1) Вы должны вызвать функцию:

coinToss() 

2) Вам необходимо настроить цикл для вызова random.randint() неоднократно.

5

Для этого вам понадобится loop. Я предлагаю for цикл:

import random 
def coinToss(): 
    number = input("Number of times to flip coin: ") 
    recordList = [] 
    heads = 0 
    tails = 0 
    for amount in range(number): 
     flip = random.randint(0, 1) 
     if (flip == 0): 
       print("Heads") 
       recordList.append("Heads") 
     else: 
       print("Tails") 
       recordList.append("Tails") 
    print(str(recordList)) 
    print(str(recordList.count("Heads")) + str(recordList.count("Tails"))) 

Я предлагаю вам прочитать this on for loops.

Кроме того, вы можете передать number как parameter to the function:

import random 
def coinToss(number): 
    recordList, heads, tails = [], 0, 0 # multiple assignment 
    for i in range(number): # do this 'number' amount of times 
     flip = random.randint(0, 1) 
     if (flip == 0): 
       print("Heads") 
       recordList.append("Heads") 
     else: 
       print("Tails") 
       recordList.append("Tails") 
    print(str(recordList)) 
    print(str(recordList.count("Heads")) + str(recordList.count("Tails"))) 

Затем вам нужно вызвать функцию в конце: coinToss().

2

Я бы с чем-то вдоль линий:

from random import randint 
num = input('Number of times to flip coin: ') 
flips = [randint(0,1) for r in range(num)] 
results = [] 
for object in flips: 
     if object == 0: 
      results.append('Heads') 
     elif object == 1: 
      results.append('Tails') 
print results 
2

Это, возможно, более вещего, хотя и не все нравится списковые.

import random 

def tossCoin(numFlips):  
    flips= ['Heads' if x==1 else 'Tails' for x in [random.randint(0,1) for x in range(numflips)]] 
    heads=sum([x=='Heads' for x in flips]) 
    tails=numFlips-heads