2015-10-09 2 views
-2

Я хочу написать монетную флип или программу «Heads or Tails», но когда я ее запускаю, она получает только головы или хвосты каждый раз. Я не понимаю, почему, это логическая ошибка, поэтому мне трудно найти ее.Heads or Tails/Coin-flip program

import random 

flips = 1 

coin = random.randint(1,2) 

heads = 0 
tails= 0 

while flips <= 100: 
    if coin == 1: 
     print("Heads") 
     heads += 1 
     flips +=1 
    elif coin == 2: 
     print("tails") 
     tails += 1 
     flips +=1 

print("You got", heads, "heads and", tails,"tails!") 


input("Exit") 
+1

Вы никогда не называете 'random.randint' еще раз, поэтому, конечно, вы никогда не получите новое случайное значение. Ваш цикл while неверен, поскольку вы делаете 'while flips == 100', а не' while flips <= 100'. – Ffisegydd

+0

Вы переворачиваете монету, а затем неоднократно спрашиваете, были ли это головы или хвосты. Вам нужно продолжать переворачивать эту монету. – TigerhawkT3

+1

Представьте, что вы делали это в реальной жизни. Ваш текущий «алгоритм» заключается в том, что вы один раз переворачиваете монету, оставляете ее на столе и продолжаете оглядываться назад. Зачем удивляться, что он не изменился ?! – jonrsharpe

ответ

0

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

import random 

flips = 1 
heads = 0 
tails= 0 

while flips<=100: 
    coin = random.randint(1,2) 
    if coin == 1: 
     print("Heads") 
     heads += 1 
     flips +=1 
    elif coin == 2: 
     print("tails") 
     tails += 1 
     flips +=1 

print("You got " + str(heads) + " heads and " + str(tails) + " tails!") 
raw_input("Exit") 

редактирует я сделал:

  1. положить монеты переменной в цикле, так что новое случайное значение присваивается при каждом вызове.
+0

Не только вы нарушили код, вы не объяснили, что вы изменили, и почему – jonrsharpe

+0

Если вы собираетесь попробовать FGITW для быстрого и легкого воспроизведения, попробуйте, по крайней мере, убедиться, что ваш код работает , Кроме того, какое-то объяснение действительно необходимо, иначе вы вообще не помогаете OP, вы просто делаете это по вашим собственным причинам поиска. – Ffisegydd

+0

Я его отредактировал .... Спасибо за предложение. –

0
import random 

flips = 0 
heads = 0 
tails = 0 
while flips < 100: 
    if random.randint(1,2) == 1: 
     print("heads") 
     heads += 1 
    else: 
     print("tails") 
     tails += 1 
    flips += 1 

print("you got ", heads," heads, and ", tails," tails!") 
input ("exit") 

Изменение: начинается с 0 и только повышение счетчика, когда флип был сделан (также, флип сделано на каждую итерацию, как дела содержатся достаточно) также, им не заливка перемешай отдельную переменную, но сравнивая ее немедленно.

мой выход был:

you got 54 heads, and 46 tails! 
exit 

без листинга Seperate переворачивает

Примечание; это был первый раз, когда я писал питон. Если есть место для оптимализации, дайте мне знать!

0

Python удаляет много написания кода, что вы должны делать на других языках. Эта программа состоит всего из трех строк. Используя метод random(), вы можете сделать это очень просто.

Вот мой код.

import random 
coin_flip = ['heads','tails'] 
print random.choice(coin_flip) 
Смежные вопросы