鱼C论坛

 找回密码
 立即注册
查看: 3879|回复: 18

[已解决]关于python课后习题抛硬币中的代码不理解帮忙解答一下

[复制链接]
发表于 2022-1-28 14:33:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

刚开始学,对抛硬币代码里面的这几句不理解,自己想了好久没有明白.这个代码是什么意思在程序里面其什么作用
        if last == 2:
            c_heads = 1

  1. import random

  2. counts = int(input("请输入抛硬币的次数:"))

  3. # 利用 ignore 变量来判断是否打印每次的结果
  4. if counts > 100:
  5.     ignore = True
  6. else:
  7.     ignore = False

  8. heads = 0  # 统计正面的次数
  9. tails = 0  # 统计反面的次数

  10. last = 0  # 记录上一次的状态,如果是正面设置为1, 反面则设置为2
  11. c_heads = 0  # 统计连续正面的次数
  12. c_tails = 0  # 统计连续反面的次数
  13. max_heads = 0  # 统计连续正面的最多次数
  14. max_tails = 0  # 统计连续反面的最多次数

  15. i = 0
  16. print("开始抛硬币实验……")
  17. while i < counts:
  18.     num = random.randint(0,1)

  19.     if num == 0:
  20.         heads += 1
  21.         c_heads += 1

  22.         if not ignore:
  23.             print("正面", end=" ")

  24.         # 如果上一次是反面:将连续正面的次数设置为1
  25.         if last == 2:
  26.             c_heads = 1

  27.         # 判断连续正面的次数是否比max_heads大,如果是,取而代之
  28.         if c_heads > max_heads:
  29.             max_heads = c_heads

  30.         # 将上一次的状态设置为正面
  31.         last = 1
  32.     else:
  33.         tails += 1
  34.         c_tails += 1

  35.         if not ignore:
  36.             print("反面", end=" ")

  37.         # 如果上一次是正面:连续反面的次数设置为1
  38.         if last == 1:
  39.             c_tails = 1

  40.         # 判断连续反面的次数是否比max_tails大,如果是,取而代之
  41.         if c_tails > max_tails:
  42.             max_tails = c_tails

  43.         # 将上一次的状态设置为反面
  44.         last = 2

  45.     i += 1

  46. print("")
  47. print("一共模拟了", counts, "次抛硬币,结果如下:")
  48. print("正面:", heads, "次", sep="")
  49. print("反面:", tails, "次", sep="")
  50. print("最多连续正面:", max_heads, "次", sep="")
  51. print("最多连续反面:", max_tails, "次", sep="")
复制代码
最佳答案
2022-1-28 14:41:51
如果上一次抛出的结果是反面并且这一次却是正面的话,就意味着需要重新开始统计最大连续次数,和更新其他有关的信息!


懂了吗?不懂可以再问!懂了就给个好评呗!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-28 14:41:51 | 显示全部楼层    本楼为最佳答案   
如果上一次抛出的结果是反面并且这一次却是正面的话,就意味着需要重新开始统计最大连续次数,和更新其他有关的信息!


懂了吗?不懂可以再问!懂了就给个好评呗!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-28 15:02:18 | 显示全部楼层
python爱好者. 发表于 2022-1-28 14:41
如果上一次抛出的结果是反面并且这一次却是正面的话,就意味着需要重新开始统计最大连续次数,和更新其他有 ...

那就是,如果第一个if条件成立,那这里 if last == 2: 不会执行的是不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-28 15:05:37 | 显示全部楼层

回帖奖励 +1 鱼币

隔壁老程呀 发表于 2022-1-28 15:02
那就是,如果第一个if条件成立,那这里 if last == 2: 不会执行的是不是

请问您具体指的是哪一个 if
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-28 15:07:38 | 显示全部楼层
python爱好者. 发表于 2022-1-28 15:05
请问您具体指的是哪一个 if

代码第25条的  if num == 0:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-28 15:56:09 | 显示全部楼层
隔壁老程呀 发表于 2022-1-28 15:02
那就是,如果第一个if条件成立,那这里 if last == 2: 不会执行的是不是

有可能会执行,也有可能不会的,因为它是包含在这条 if 语句中的,
所以当这条 if 语句执行成功时,就会执行下面的 if 语句,
这其间并不起到干扰作用,所以两种可能性。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-28 16:16:57 | 显示全部楼层
python爱好者. 发表于 2022-1-28 15:56
有可能会执行,也有可能不会的,因为它是包含在这条 if 语句中的,
所以当这条 if 语句执行成功时,就会 ...

谢谢!明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-28 16:18:33 | 显示全部楼层
感谢兄弟好评!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-28 16:27:10 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-28 16:30:13 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-28 17:01:36 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-29 14:46:38 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-29 16:23:27 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-29 17:01:25 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-1-29 23:11:24 | 显示全部楼层

回帖奖励 +1 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-2-2 08:36:57 | 显示全部楼层

回帖奖励 +1 鱼币

刷荣誉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-7 11:48:53 | 显示全部楼层

回帖奖励 +1 鱼币

1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 10:57:59 | 显示全部楼层
还是没看懂啊。。 last == 2 是哪里来的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 13:56:49 | 显示全部楼层
每次看完别人编写的程序,都感觉妙不可言,技巧性很强。自己思考,又有点无从下手。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 17:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表