Python 抛硬币

15 投票
14 回答
122716 浏览
提问于 2025-04-17 15:55

我刚开始学习Python,现在需要做一个游戏,模拟抛硬币的过程。这个游戏会问用户想要抛硬币多少次。根据用户的回答,程序会随机选择一个数字,要么是0,要么是1(然后决定哪个代表“正面”,哪个代表“反面”),并且要根据用户指定的次数进行选择。接着,程序会统计“正面”和“反面”出现的次数,并把以下信息展示给用户:一个包含模拟抛硬币结果的列表,以及“正面”和“反面”出现次数的总结。例如,如果用户输入5次,抛硬币的结果可能是 [‘正面’, ‘反面’, ‘反面’, ‘正面’, ‘正面’]。程序应该打印出类似这样的内容:“ [‘正面’, ‘反面’, ‘反面’, ‘正面’, ‘正面’]

这是我目前写的代码,但完全没有效果...

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")))

14 个回答

5

这可能更符合Python的风格,不过并不是每个人都喜欢用列表推导式。

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
8

你快到了:

1) 你需要调用这个函数:

coinToss()

2) 你需要设置一个循环,让 random.randint() 一直被调用。

16

你需要用一个 循环 来完成这个。建议使用 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")))

我建议你看看 关于 for 循环的内容

另外,你可以把 number 作为一个 参数传给这个函数

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()

撰写回答