Python 抛硬币
我刚开始学习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()
。