鱼C论坛

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

[已解决]为什么“最多连续次数”和正面总次数一样,而反面是正确的?

[复制链接]
发表于 2023-2-12 00:39:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 星何旅人_C 于 2023-2-12 01:05 编辑

求助!!谢谢!!
最佳答案
2023-2-12 07:45:11
星何旅人_C 发表于 2023-2-12 01:12
大佬能看看我错哪里了吗?谢谢!

你提问的时候最好把你的代码贴上来,不然别人回答你的问题还要手敲就很烦

这个我照着你的截图手敲一遍没有问题,如果你的代码执行结果还是不对的话就把代码贴上来
截图20230212074212.png

截图20230212074343.png
提问图1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-12 01:05:31 | 显示全部楼层

回帖奖励 +2 鱼币

import random
heads , tails , theads , ttails , continues_z , continues_f , last = 0 , 0 , 0 , 0 , 0 , 0 , 0
k = int(input('请输入抛币的次数:'))
print('开始抛币实验......')
for _ in range(k):
    x = random . randint(1 , 2)
    if x == 1:
        if x != last:
            if tails > continues_f : continues_f = tails
            tails = 0
        theads , heads = theads + 1 , heads + 1 
        if k <= 100 : print('正面' , end = ' ')
    else:
        if x != last:
            if heads > continues_z : continues_z = heads
            heads = 0
        ttails , tails = ttails + 1 , tails + 1
        if k <= 100 : print('反面' , end = ' ')
    last = x
print()
print('一共模拟了%d次抛币,结果如下:' % k)
print('正面:%d次' % theads)
print('反面:%d次' % ttails)
print('最多连续正面:%d次' % continues_z)
print('最多连续反面:%d次' % continues_f)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-12 01:12:02 | 显示全部楼层

大佬能看看我错哪里了吗?谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 07:45:11 | 显示全部楼层    本楼为最佳答案   
星何旅人_C 发表于 2023-2-12 01:12
大佬能看看我错哪里了吗?谢谢!

你提问的时候最好把你的代码贴上来,不然别人回答你的问题还要手敲就很烦

这个我照着你的截图手敲一遍没有问题,如果你的代码执行结果还是不对的话就把代码贴上来
截图20230212074212.png

截图20230212074343.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 08:43:16 | 显示全部楼层
#coding=gbk
import random
counts = int(input("请输入一个正整数:"))
#利用ignore判断是否打印
if counts > 100:
    ignore = True
else:
    ignore = False
heads = 0#正面计数
tails = 0#反面计数
#last = 0#记录上次状态,硬币换面时可以用清0方法更简洁
c_heads = 0#连续正面次数
max_heads  = 0#正面最大值
c_tails = 0#连续反面次数
max_tails = 0#反面最大值
i = 0#用于while函数计数器
print("开始抛硬币实验...")
while i < counts:
    num = int(random.randint(1,2)) #1正面,2反面
    if num == 1:#等价于num % 2
        heads += 1#正面计数
        c_heads += 1#正面连续次数
        if not ignore:
            print("正面",end = "-")
            print(c_heads,end = " | ")#连续计数值,省得去数了  
        c_tails = 0#反面连续次数清零
    else:
        tails += 1#反面计数
        c_tails += 1#反面连续次数
        if not ignore:
            print("反面",end = "-")
            print(c_tails,end = " | ")#连续计数值,省得去数了
        
       
        c_heads =0 #正面连续次数清零
    if c_heads != 0:#连续正面取最大值
        if c_heads >= max_heads :
            max_heads = c_heads
            
        
    if c_tails != 0:#连续反面取最大值
        if c_tails >= max_tails:
           max_tails = c_tails
        
    i += 1#用于while函数计数器
print()#增加一个换行
print("正面的个数:",heads)
print("反面的个数:",tails)
print("正面最多次数:",max_heads )
print("反面最多次数:",max_tails)
运行结果:
请输入一个正整数:30
开始抛硬币实验...
正面-1 | 反面-1 | 正面-1 | 正面-2 | 正面-3 | 正面-4 | 正面-5 | 反面-1 | 反面-2 | 反面-3 | 反面-4 | 反面-5 | 反面-6 | 反面-7 | 正面-1 | 正面-2 | 正面-3 | 正面-4 | 反面-1 | 正面-1 | 正面-2 | 正面-3 | 正面-4 | 
反面-1 | 正面-1 | 反面-1 | 反面-2 | 反面-3 | 正面-1 | 反面-1 | 
正面的个数: 16
反面的个数: 14
正面最多次数: 5
反面最多次数: 7
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-12 16:14:02 | 显示全部楼层
isdkz 发表于 2023-2-12 07:45
你提问的时候最好把你的代码贴上来,不然别人回答你的问题还要手敲就很烦

这个我照着你的截图手敲一遍 ...

好的,记住了下次问问题贴代码,我已经知道我哪里出错了,是我有一个单词漏字母了。谢谢你!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 17:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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