wangv 发表于 2024-7-28 09:12:00

求助-python第十六讲课后抛硬币问题


counts = int(input("请输入抛硬币的次数:"))

if counts < 100:
    ignore = True
else:
    ignore = False

#为什么课后附件的答案是上面的内容,下面这个走不通呢,为什么不能直接应用算式,还必须要用python自己的内置函数吗?请问有办法直接用概率的算式来表达抛硬币吗?#






counts = int(input("请输入抛硬币的次数:"))

if counts < 100:
    x == True
else:
    1-x == False
   

smallwh 发表于 2024-7-28 09:12:01

本帖最后由 smallwh 于 2024-7-28 11:01 编辑

好像标准答案是这样的,跟你给的有点出入
# 利用 ignore 变量来判断是否打印每次的结果
if counts > 100:
    ignore = True
else:
    ignore = False
……
if num % 2:
    heads += 1
    if not ignore:      
      print("正面", end=" ")
else:
    tails += 1
    if not ignore:
      print("反面", end=" ")
……
上面代码的意思是,如果抛硬币的次数大于100,就把ignore设为True,就不会再打印每次的硬币究竟是正面还是反面。
x == True 是一个表达式,判断x与True是否相等,并不是赋值操作。
1-x == False 也是一个表达式。而且表达式左边 1 - x 也不是变量,不能够赋值

请问有办法直接用概率的算式来表达抛硬币吗?
抛硬币正面向上和反面向上的概率都是0.5,这里我们是用python模拟这一过程。当然,在现实生活中,不可能抛硬币100次就一定有50次正面向上,可能是51次、52次。用python模拟这一过程其实就是用频率估计概率。

如果有不明白的地方,可以再问我。

wangv 发表于 2024-7-28 13:16:09

本帖最后由 wangv 于 2024-7-28 16:07 编辑

Pn = Π(1-k/2)
我本来以为这个算式应用应该不难,结果就是这样用来抛硬币的啊,啊啊啊啊啊啊啊啊啊啊啊啊啊

wangv 发表于 2024-7-28 17:34:08

smallwh 发表于 2024-7-28 09:12
好像标准答案是这样的,跟你给的有点出入




我想请问下,为什么python不认这个1-x呢?有没有什么办法能够让我直接用算式而不是敲很久的这些逻辑代码吗?

smallwh 发表于 2024-7-28 17:43:03

1-x 是表达式,不是变量名,不能用 = 赋值的。
你可以把
……
if num % 2:
    heads += 1
    if not ignore:      
      print("正面", end=" ")
else:
    tails += 1
    if not ignore:
      print("反面", end=" ")
……
中的 if 语句改为
……
if num % 2:
    heads += 1
    if counts < 100:      
      print("正面", end=" ")
else:
    tails += 1
    if counts < 100:
      print("反面", end=" ")
……
这样就不需要在前面判断 ignore 了。但这样每循环一次都会进行 counts < 100 的比较,如果对代码执行的时间要求比较严格的话,第一种可能会节省一点点时间。不过对于这种小程序,可以完全放心的移到下面,从而不需要 ignore 变量了。
页: [1]
查看完整版本: 求助-python第十六讲课后抛硬币问题