关于python课后习题抛硬币中的代码不理解帮忙解答一下
刚开始学,对抛硬币代码里面的这几句不理解,自己想了好久没有明白.这个代码是什么意思在程序里面其什么作用
if last == 2:
c_heads = 1
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(0,1)
if num == 0:
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="")
如果上一次抛出的结果是反面并且这一次却是正面的话,就意味着需要重新开始统计最大连续次数,和更新其他有关的信息!
懂了吗?不懂可以再问!懂了就给个好评呗!!! python爱好者. 发表于 2022-1-28 14:41
如果上一次抛出的结果是反面并且这一次却是正面的话,就意味着需要重新开始统计最大连续次数,和更新其他有 ...
那就是,如果第一个if条件成立,那这里 if last == 2: 不会执行的是不是 隔壁老程呀 发表于 2022-1-28 15:02
那就是,如果第一个if条件成立,那这里 if last == 2: 不会执行的是不是
请问您具体指的是哪一个 if python爱好者. 发表于 2022-1-28 15:05
请问您具体指的是哪一个 if
代码第25条的if num == 0: 隔壁老程呀 发表于 2022-1-28 15:02
那就是,如果第一个if条件成立,那这里 if last == 2: 不会执行的是不是
有可能会执行,也有可能不会的,因为它是包含在这条 if 语句中的,
所以当这条 if 语句执行成功时,就会执行下面的 if 语句,
这其间并不起到干扰作用,所以两种可能性。 python爱好者. 发表于 2022-1-28 15:56
有可能会执行,也有可能不会的,因为它是包含在这条 if 语句中的,
所以当这条 if 语句执行成功时,就会 ...
谢谢!明白了 感谢兄弟好评!!! {:10_256:} {:9_228:} {:5_95:} {:10_250:} {:10_327:} {:10_256:} {:10_257:}{:10_257:} 刷荣誉 1 还是没看懂啊。。 last == 2 是哪里来的?{:10_266:} 每次看完别人编写的程序,都感觉妙不可言,技巧性很强。自己思考,又有点无从下手。
页:
[1]