鱼C论坛

 找回密码
 立即注册
查看: 485|回复: 4

[已解决]求助-python第十六讲课后抛硬币问题

[复制链接]
发表于 2024-7-28 09:12:00 | 显示全部楼层 |阅读模式
30鱼币
counts = int(input("请输入抛硬币的次数:"))

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

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





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

if counts < 100:
    x == True
else:
    1-x == False
    
最佳答案
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模拟这一过程其实就是用频率估计概率。

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

最佳答案

查看完整内容

好像标准答案是这样的,跟你给的有点出入 上面代码的意思是,如果抛硬币的次数大于100,就把ignore设为True,就不会再打印每次的硬币究竟是正面还是反面。 x == True 是一个表达式,判断x与True是否相等,并不是赋值操作。 1-x == False 也是一个表达式。而且表达式左边 1 - x 也不是变量,不能够赋值 请问有办法直接用概率的算式来表达抛硬币吗? 抛硬币正面向上和反面向上的概率都是0.5,这里我们是用python模拟这一 ...

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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模拟这一过程其实就是用频率估计概率。

如果有不明白的地方,可以再问我。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-7-28 13:16:09 | 显示全部楼层
本帖最后由 wangv 于 2024-7-28 16:07 编辑

Pn = Π(1-k/2)
我本来以为这个算式应用应该不难,结果就是这样用来抛硬币的啊,啊啊啊啊啊啊啊啊啊啊啊啊啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-7-28 17:34:08 | 显示全部楼层
smallwh 发表于 2024-7-28 09:12
好像标准答案是这样的,跟你给的有点出入

我想请问下,为什么python不认这个1-x呢?有没有什么办法能够让我直接用算式而不是敲很久的这些逻辑代码吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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鱼币 +5 收起 理由
wangv + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 20:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表