有偏见的硬币翻转的Python打印语句?最后2行是什么意思?

时间:2017-07-31 23:56:32

标签: python

所以我得到了这些用于打印语句的代码,但是我没有达到if循环的最后两行的目的? 来自随机导入随机

def flip(bias):
    """
    Flip a coin once.
    `bias` is the likelihood of the result being heads, 0. <= bias <= 1.
    Returns True for heads or False for tails
    """
    return random() < bias

def main():
    bias = float(input("What bias do your coins have? "))
    count = {False: 0, True: 0}
    for i in range(1, 4):
        toss = flip(bias)
        count[toss] += 1
        print("Coin flip {} has a value of heads: {}".format(i, toss))
    print("Final result: {} heads, {} tails".format(count[True], count[False]))

if __name__ == "__main__":
    main()

提前致谢。

3 个答案:

答案 0 :(得分:0)

这是出于输入的原因。

如果我想在另一个程序中使用该功能,那么这两行不允许我这样做。您可以查看here以获取更多信息。引用接受的答案:

  

执行此操作的原因之一是有时您会编写一个可以直接执行的模块(.py文件)。或者,它也可以导入并在另一个模块中使用。通过执行主检查,您可以仅在希望将模块作为程序运行时执行该代码,而在有人只想导入模块并自行调用函数时不执行该代码。

换句话说,必须在放入的文件中调用该函数。如果该函数位于one.py并导入two.py,我可以在one.py中运行该函数但不在two.py

答案 1 :(得分:0)

Python是一种脚本语言。与C ++不同,Python并不认为main()是特殊的。因此,如果我们将文件作为脚本运行,我们希望运行main()

if __name__ == "__main__":
    main()

如果文件作为脚本运行,__name__保证等于"__main__",那么这将运行main函数。如果文件作为模块加载,__name__将是模块名称,因此将不会运行。

这是一个相当普遍的Python习语,你会看到很多,所以当你看到if __name__ == "__main__"时,你就会学会识别它。

答案 2 :(得分:0)

如果您正在执行的文件是此特定python文件,则__name__ == "__main__"为真。如果导入此文件并运行其他文件,则__name__ == "__main__"将不成立,因此名称 ==“主要”之后的代码将无法运行。