tedpetrelli 发表于 2022-4-25 22:37:17

c_ max_ last是否是一些还没有学到的函数?

第16课课后作业中动动手最后一题--抛硬币统计连续次数的编写实在是看不懂,哪位友友可以帮忙解答一下,答案中好像只是给max_heads,max_tails和last赋值了初始值,但是并没有像heds, tails, c_heads和c_tails一样规定出运算逻辑(即每运行一次%2的操作就+1),为什么最后能直接做出一些判断呢,比如last为1或2,c_heads > max_heads什么的,这里面last和 max_heads根本就没有被告知要以怎样的规则运算啊,难道这些是我还没有学到的某些函数,只管直接引用吗?代码如下:

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="")
页: [1]
查看完整版本: c_ max_ last是否是一些还没有学到的函数?