random.randint函数不工作

2024-05-16 16:36:08 发布

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

这个游戏的要点是掷硬币100次,记录正面或反面。在100次翻转结束时,程序应该打印出它前后翻转的次数。程序只在我运行时打印头,我觉得它是通过执行第一个elif子句而不是random.randint函数来完成的。

有人能帮忙完成这个计划吗??

import random

print ('Coin flip game')
start = input('Press enter to flip the coin')
coin_flip = random.randint(1, 2)
heads = int(1)
tails = int(2)
heads = int(heads)
tails - int(tails)
count = 0
while coin_flip:
    count += 1
    if count == 100:
        break

    elif coin_flip == 1:
        print ('Heads')

    elif coin_flip == 2:
        print ('Tails')

Tags: 程序游戏count记录硬币randomintcoin
3条回答

试试这样的:

import random

print("Welcome to the coin flipper!")

start = input('Press enter to flip the coin')
count = 0
while True:
    coin_flip = random.randint(1,2)
    count+=1

    if count >100:
        break

    if coin_flip == 1:
        print('Heads')

    elif coin_flip == 2:
        print("Tails")

这样,循环的每次迭代次数都会改变

你也不需要分配那些你以后都不用的变量 你应该在循环中使用while True:

你的问题是:

while coin_flip: # coin_flip is set to 1 or 2
    ...

因为coin_flip被设置为1或2,所以循环将是无限的,重要的是coin_flip不会改变(您不会更新它)。

为了解决这个问题,您应该通过在循环中给它分配一个随机数来更新您的coin_flip

while True:
    count += 1
    coin_flip = random.randint(1, 2) # you need to "flip" coin inside the loop
    if count == 100:
        break

    elif coin_flip == 1:
        print ('Heads')

    elif coin_flip == 2:
        print ('Tails')

要计算磁头数,可以使用headstails变量来跟踪:

heads = 0
tails = 0
while True:
    count += 1
    coin_flip = random.randint(1, 2) # you need to "flip" coin inside the loop
    if count == 100:
        break

    elif coin_flip == 1:
        print ('Heads')
        heads += 1

    elif coin_flip == 2:
        print ('Tails')
        tails += 1

print "Number of heads: %s, Number of tails: %s" % (heads, tails)

你想怎么印还不清楚。你可以:

>>> import random
>>> print [['H', 'T'][random.randint(0, 1)] for _ in range(100)]
['T', 'T', 'T', 'H', 'T', 'T', 'H', 'H', 'H', 'H', 'T', 'H', 'T', 'H', 'T', 'H', 'H',
 'H', 'H', 'H', 'T', 'T', 'H', 'T', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T', 'T',
 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H',
 'H', 'H', 'T', 'H', 'T', 'H', 'T', 'H', 'H', 'H', 'T', 'T', 'T', 'H', 'H', 'H', 'T',
 'H', 'H', 'T', 'T', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T', 'T', 'T', 'H', 'T', 'T',
 'H', 'H', 'H', 'H', 'T', 'H', 'H', 'H', 'T', 'T', 'T', 'H', 'H', 'H', 'T',]

或:

>>> heads = sum(random.randint(0, 1) for _ in range(100))
>>> print "heads =", heads, ' tails =', 100 - heads
heads = 46  tails = 54

相关问题 更多 >