星何旅人_C 发表于 2023-2-12 00:39:35

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

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

求助!!谢谢!!

jackz007 发表于 2023-2-12 01:05:31

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)

星何旅人_C 发表于 2023-2-12 01:12:02

jackz007 发表于 2023-2-12 01:05


大佬能看看我错哪里了吗?谢谢!{:5_110:}

isdkz 发表于 2023-2-12 07:45:11

星何旅人_C 发表于 2023-2-12 01:12
大佬能看看我错哪里了吗?谢谢!

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

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


chinajz 发表于 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

星何旅人_C 发表于 2023-2-12 16:14:02

isdkz 发表于 2023-2-12 07:45
你提问的时候最好把你的代码贴上来,不然别人回答你的问题还要手敲就很烦

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

好的,记住了下次问问题贴代码,我已经知道我哪里出错了,是我有一个单词漏字母了。谢谢你!!
页: [1]
查看完整版本: 为什么“最多连续次数”和正面总次数一样,而反面是正确的?