|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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在这个 循环是怎么实现的, if last == 2: 从循环中哪里去判断的 我搞不懂逻辑啊啊啊啊啊 然后最后为啥又要设置为1
本帖最后由 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="")
|
|