|
发表于 2022-11-8 16:54:39
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2022-11-8 18:20 编辑
把循环稍微简化一下,去掉无关代码,你就可以看到 last 的逻辑了
- while i < counts:
- num = random . randint(1, 10)
- if num % 2:
- . . . . . .
- last = 1
- else:
- . . . . . .
- last = 2
- i += 1
复制代码
是的,last 指示的是上一次抛币的结果,last = 1,是正面,last = 2,是反面。如果本次是正面,上一次也是正面,那就是连续正面,否则,就是终结上一个连续背面,开始新的连续正面;如果本次是背面,上一次也是背面,那就是连续背面,否则,就是终结上一个连续正面,开始新的连续背面。
下面是简化版的代码,希望能帮助你好理解一些
- import random
- counts = int(input("请输入抛硬币的次数:"))
- heads = max_heads = c_heads = tails = max_tails = c_tails = last = 0
- print("开始抛硬币实验……")
- for i in range(counts):
- num = random . randint(1 , 10)
- if num % 2:
- if last == 2:
- if c_tails > max_tails : max_tails = c_tails
- c_tails = 0
- heads += 1
- c_heads += 1
- last = 1
- else:
- if last == 1:
- if c_heads > max_heads : max_heads = c_heads
- c_heads = 0
- tails += 1
- c_tails += 1
- last = 2
- if counts < 100:
- print("正面", end = " ") if last == 1 else print("背面", end = " ")
- print("")
- print("一共模拟了", counts, "次抛硬币,结果如下:")
- print("正面:", heads, "次", sep="")
- print("反面:", tails, "次", sep="")
- print("最多连续正面:", max_heads, "次", sep="")
- print("最多连续反面:", max_tails, "次", sep="")
复制代码
|
|