|
发表于 2023-2-10 06:32:30
|
显示全部楼层
修改了一下,看是否便于理解。
将记录上次状态变量弃用,硬币换面时可以用清0方法更简洁;同面连续计数打印出来更直观:
- #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 | 正面-2 | 正面-3 | 正面-4 | 反面-1 | 正面-1 | 反面-1 | 正面-1 | 反面-1 | 反 面-2 | 反面-3 | 反面-4 | 正面-1 | 反面-1 | 正面-1 | 正面-2 | 反面-1 | 反面-2 | 反面-3 | 反面-4 | 正面-1 | 反面-1 | 反面-2 | 正面-1 | 反面-1 | 反面-2 | 反面-3 | 反面-4 | 反面-5 |
- 正面的个数: 11
- 反面的个数: 19
- 正面最多次数: 4
- 反面最多次数: 5
复制代码 |
|