我正在制作基本的硬币挡板,由于某种原因,它总是在翻转heads
。
import random
def flip():
flip = random.randint(1,100)
if flip >= 48 & flip < 98:
print('heads')
elif flip <= 48:
print('tails')
else:
print('Whoa it landed on its side')
flip()
请帮助
答案 0 :(得分:1)
在python中,&
是按位运算符,请改用and
。
import random
def flip():
flip = random.randint(1,100)
if flip >= 48 and flip < 98:
print('heads')
elif flip <= 48:
print('tails')
else:
print('Whoa it landed on its side')
for _ in range(200):
flip()
答案 1 :(得分:0)
您可以简化很多代码。
让我们从简单的版本开始:
import random
def flip():
"""Simulate the flip of a coin"""
coin_flip = random.randint(1,100)
# print('>> coin_flip = %s' % coin_flip) # uncomment if you want debug
print('Heads') if coin_flip % 2 == 0 else print('Tails')
结果基于另一种考虑50%概率的方式:奇数和偶数。更容易管理。 coin_flip % 2
将随机数除以2,然后返回其余数。如果== 0,则数字为偶数。否则很奇怪。
此处使用的if只是扩展版本的精简版
if coin_flip % 2 == 0:
print('Heads')
else:
print('Tails')
让我们介绍一下side effect
。我们可以使用参数进行介绍。
import random
def flip(side_effect=0):
"""Simulate the flip of a coin
:type side_effect: int
:param side_effect: The percentage for the side effect.
E.g. `1` means 1% of probability to get the coin landed on its side
"""
coin_flip = random.randint(1,100)
# print('>> coin_flip = %s' % coin_flip) # just for debug
if coin_flip <= side_effect:
print('Whoa it landed on its side')
return # end the program
print('Heads') if coin_flip % 2 == 0 else print('Tails')
此版本的函数添加了side_effect
参数,您可以根据需要更改名称。默认值为0表示未启用,但是您可以尝试使用flip(side_effect=100)
运行该函数,这意味着所有翻转都将落在其一侧。
玩得开心