我正在尝试编写一个代码,该代码将偏差硬币的概率范围在0和1之间,作为用户的输入并测试一些硬币,其中p是fl的概率导致结果头部。这是我到目前为止所拥有的:
import random
i = 0
for i in range(3):
i = i + 1
#I want to call biasedflip function here
p = input("Enter probability:")
def biasedflip():
if random.random() < p:
print("Heads")
else:
print("Tails")
答案 0 :(得分:1)
(“这是基于最新版python的答案,所以请确保您使用的是3.5.x,否则某些符号可能无法正常工作”)
首先,您的函数“biasedflip”需要在名称后面和冒号前面使用括号以获得正确的表示法 所以它应该是:
def biasedflip():
其次是为了更容易更改使用1-100范围的概率,以便您可以避免使用小数来更容易地遵循 所以当他们输入(p)它应该是1-100并且将决定你的失败值,如果它等于或高于它显示Tails 您可以使用以下方式生成:
random.randint(1,100)
^ 这会生成一个随机整数,使用1-100的包含范围而不是random.random(),它不会起作用。
编辑随机语句后,您只需将if语句更改为:
if random.randint(1,100) < Probability:
print("Heads")
else:
print("Tails")
运行程序时,您还应该将翻转次数设置为输入,这样您就可以多次测试而不是编辑代码,因此添加一个名为NumberOfTrials的新变量:
NumberOfTrials = int(input("How many times do you wish to flip the coin? "))
^ 这会将其输入转换为整数,因此可以在范围函数
中使用使用概率输入python将标准输入作为字符串,因此您需要将输入转换为可以使用的整数:
Probability = int(input("Enter a probability for heads between 1 and 100"))
^这会将输入直接转换为整数并将其分配给概率,我已将变量名称从“p”更改为“概率”,因此使用已明确定义
在程序顶部的这个阶段,它应该如下所示:
import random
i = 0
Probability = int(input("Enter a probability for heads between 1 and 100: "))
NumberOfTrials = int(input("How many times do you wish to flip the coin? "))
def biasedflip():
if random.randint(1,100) < Probability:
print("Heads")
else:
print("Tails")
接下来,我们将添加另外两个新变量,以便您可以分别存储Heads和Tails的总计,以便以后参考:
TotalHeads = 0
TotalTails = 0
^这些从0开始,将在函数之前定义,因此每次调用它们时都不会重置它们,只有每次重置程序时
最后一步是添加一个循环,然后显示头尾的总数。这可以使用while循环和(i)的计数变量来完成,你已经在之前定义并设置为0.这将是这样的:
while i < NumberOfTrials:
biasedflip()
i += 1
^添加此循环后,我们需要修改我们的函数,以便在函数内部增加TotalHeads和TotalTails变量,而不是使函数内部和外部复杂化和编辑。这只需要在Print(“Heads”)语句下添加 TotalHeads + = 1 ,在Print(“Tails”)语句下添加 TotalTails + = 1 。一个重要的注意事项是因为我们已经设置了变量以外的函数,我们必须有2个全局语句来调用函数中的变量以允许编辑,这些语句看起来像 global TotalHeads 和 global TotalTails ,应该是该函数的第一个命令。
我们还需要在最后添加一个最终的打印命令,只显示总数,这样我们的最终结果应如下所示:
import random
TotalHeads = 0
TotalTails = 0
i = 0
Probability = int(input("Enter a probability for heads between 1 and 100: "))
NumberOfTrials = int(input("How many times do you wish to flip the coin? "))
def biasedflip():
global TotalTails
global TotalHeads
if random.randint(1,100) < Probability:
print("Heads")
TotalHeads += 1
else:
print("Tails")
TotalTails += 1
while i < NumberOfTrials:
biasedflip()
i += 1
print("After {0} flips there was {1} Head(s) and {2} Tail(s)".format(NumberOfTrials,TotalHeads,TotalTails))
^您可以在最终命令中看到我使用 .format ,这意味着您可以使用占位符{0}值来填充NumberOfTrials等变量,这样您就可以通过程序编辑句子和打印时看起来更整洁
对于调用函数,通用格式为 FunctionName(),但在定义时应为 def FunctionName():