鱼C论坛

 找回密码
 立即注册
查看: 1574|回复: 5

[已解决]python问题

[复制链接]
发表于 2022-5-17 10:05:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import random
counts = int(input("请输入抛硬币的次数:"))
# 利用 ignore 变量来判断是否打印每次的结果
if counts > 100:
    ignore = True
else:
    ignore = False
heads = 0 # 统计正面的次数
tails = 0 # 统计反面的次数
last = 0 # 记录上一次的状态,如果是正面设置为1, 反面则设置为2
c_heads = 0 # 统计连续正面的次数
c_tails = 0 # 统计连续反面的次数
max_heads = 0 # 统计连续正面的最多次数
max_tails = 0 # 统计连续反面的最多次数
i = 0
print("开始抛硬币实验……")
while i < counts:
    num = random.randint(1, 10)
    if num % 2:
        heads += 1
        c_heads += 1
        if not ignore:
            print("正面", end=" ")
        # 如果上一次是反面:将连续正面的次数设置为1
        if last == 2:
            c_heads = 1
        # 判断连续正面的次数是否比max_heads大,如果是,取而代之
        if c_heads > max_heads:
            max_heads = c_heads
        # 将上一次的状态设置为正面
        last = 1
    else:
        tails += 1
        c_tails += 1
        if not ignore:
            print("反面", end=" ")
        # 如果上一次是正面:连续反面的次数设置为1
        if last == 1:
            c_tails = 1
        # 判断连续反面的次数是否比max_tails大,如果是,取而代之
        if c_tails > max_tails:
            max_tails = c_tails
        # 将上一次的状态设置为反面
        last = 2
    i += 1
print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")
print("最多连续正面:", max_heads, "次", sep="")
print("最多连续反面:", max_tails, "次", sep="")
##########################
这个代码可以正常运行   计算连续正反次数 这段代码是如何实现的呢   last = 1 如何判断的呢   怎么做到 last 加 1的
有没有判断连续正反次数 简单的代码
最佳答案
2022-5-17 10:19:07

last = 1 如何判断的呢   怎么做到 last 加 1的


last 就是用于判断上一次抛的硬币是正还是反,没有进行 +1 是直接赋值 1 或 2

若是正面,那么 last 就一直保持着 1,如果是反面 last 就为 2

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

使用道具 举报

发表于 2022-5-17 10:19:07 | 显示全部楼层    本楼为最佳答案   

last = 1 如何判断的呢   怎么做到 last 加 1的


last 就是用于判断上一次抛的硬币是正还是反,没有进行 +1 是直接赋值 1 或 2

若是正面,那么 last 就一直保持着 1,如果是反面 last 就为 2

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

使用道具 举报

 楼主| 发表于 2022-5-17 17:12:03 | 显示全部楼层
有没有比这个 判断最多联系的 更简单的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-18 09:17:46 | 显示全部楼层
tengke 发表于 2022-5-17 17:12
有没有比这个 判断最多联系的 更简单的方法

不太有,我用c 写了一个,也有36行代码之多  中间变量也有5-6个左右
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-17 10:05:22 | 显示全部楼层
tengke 发表于 2022-5-17 17:12
有没有比这个 判断最多联系的 更简单的方法



要统计的东西多,没有很明显关联关系(即都需要单独判断),简化不了多少了

你这里可以简化 randint 生成的随机数为 0,1,这样你下面 if num % 2 就可以改成 if num 了

last 也同样道理,可以改成 0 或者 1 然后 if 条件就直接 if last:

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

使用道具 举报

发表于 2022-5-29 08:26:02 | 显示全部楼层
创建了随机函数,用随机来算正反面的情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 00:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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