鱼C论坛

 找回密码
 立即注册
查看: 3263|回复: 7

[已解决]课后题求助

[复制链接]
发表于 2021-6-28 13:06:43 | 显示全部楼层 |阅读模式

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

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

x
python课后题第16讲,最后一题我想看答案,但是看答案还要钱,我这点币根本不够花的,有没有大佬愿意资助我一下,顺便帮我检查一下写的怎么样
最佳答案
2021-6-28 14:28:57
  1. 请输入抛硬币的次数:99
  2. 开始抛硬币实验:
  3. 反面 正面 正面 正面 正面 反面 反面 反面 正面 反面 反面 正面 正面 正面 正面 正面 正面 反面 正面 正面 正面 正面 反面 反面 反面 反面 反面 正面 正面 正面 正面 反面 反面 正面 反面 正面 正面 正面 正面 反面 反面 正面 正面 正面 反面 反面 反面 正面 反面 正面 反面 反面 反面 正面 正面 正面 正面 反面 正面 反面 正面 反面 反面 反面 反面 正面 反面 正面 正面 反面 正面 正面 反面 正面 反面 反面 反面 正面 正面 正面 反面 正面 正面 正面 正面 正面 正面 反面 反面 正面 正面 正面 正面 反面 正面 反面 正面 正面 正面 一共模拟了 99 次抛硬币,结果如下:
  4. 正面: 58
  5. 反面: 41
  6. 最多连续正面: 6
  7. 最多连续反面: 41
复制代码


有明显的bug

在else中应该赋值给fm1而非fm2

另外相同的代码写两遍很繁琐,可以合并成一个语句

修改后代码

  1. import random

  2. counts = int(input("请输入抛硬币的次数:"))
  3. i = 0
  4. z = 0
  5. f = 0
  6. fm1 = 0
  7. fm2 = 0
  8. zm1 = 0
  9. zm2 = 0
  10. print("开始抛硬币实验:")

  11. while i < counts:
  12.     num = random.randint(1, 10)
  13.    
  14.     if num % 2:
  15.         fm1 = 0
  16.         zm1 += 1
  17.         if counts < 100:
  18.             print("正面", end=" ")
  19.         z += 1
  20.     else:
  21.         zm1 = 0
  22.         fm1 += 1
  23.         if counts < 100:
  24.             print("反面", end=" ")
  25.         f += 1
  26.     i += 1
  27.     if zm1 > zm2:
  28.         zm2 = zm1
  29.     if fm1 > fm2:
  30.         fm2 = fm1
  31.         

  32. print("一共模拟了",counts,"次抛硬币,结果如下:")
  33. print("正面:",z)
  34. print("反面:",f)
  35. print("最多连续正面:",zm2)
  36. print("最多连续反面:",fm2)
复制代码


其实买个至尊vip会员支持一下小甲鱼也不错的

抛硬币.zip

604 Bytes, 下载次数: 1

售价: 1 鱼币  [记录]  [购买]

课后题

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

使用道具 举报

发表于 2021-6-28 14:28:57 | 显示全部楼层    本楼为最佳答案   
  1. 请输入抛硬币的次数:99
  2. 开始抛硬币实验:
  3. 反面 正面 正面 正面 正面 反面 反面 反面 正面 反面 反面 正面 正面 正面 正面 正面 正面 反面 正面 正面 正面 正面 反面 反面 反面 反面 反面 正面 正面 正面 正面 反面 反面 正面 反面 正面 正面 正面 正面 反面 反面 正面 正面 正面 反面 反面 反面 正面 反面 正面 反面 反面 反面 正面 正面 正面 正面 反面 正面 反面 正面 反面 反面 反面 反面 正面 反面 正面 正面 反面 正面 正面 反面 正面 反面 反面 反面 正面 正面 正面 反面 正面 正面 正面 正面 正面 正面 反面 反面 正面 正面 正面 正面 反面 正面 反面 正面 正面 正面 一共模拟了 99 次抛硬币,结果如下:
  4. 正面: 58
  5. 反面: 41
  6. 最多连续正面: 6
  7. 最多连续反面: 41
复制代码


有明显的bug

在else中应该赋值给fm1而非fm2

另外相同的代码写两遍很繁琐,可以合并成一个语句

修改后代码

  1. import random

  2. counts = int(input("请输入抛硬币的次数:"))
  3. i = 0
  4. z = 0
  5. f = 0
  6. fm1 = 0
  7. fm2 = 0
  8. zm1 = 0
  9. zm2 = 0
  10. print("开始抛硬币实验:")

  11. while i < counts:
  12.     num = random.randint(1, 10)
  13.    
  14.     if num % 2:
  15.         fm1 = 0
  16.         zm1 += 1
  17.         if counts < 100:
  18.             print("正面", end=" ")
  19.         z += 1
  20.     else:
  21.         zm1 = 0
  22.         fm1 += 1
  23.         if counts < 100:
  24.             print("反面", end=" ")
  25.         f += 1
  26.     i += 1
  27.     if zm1 > zm2:
  28.         zm2 = zm1
  29.     if fm1 > fm2:
  30.         fm2 = fm1
  31.         

  32. print("一共模拟了",counts,"次抛硬币,结果如下:")
  33. print("正面:",z)
  34. print("反面:",f)
  35. print("最多连续正面:",zm2)
  36. print("最多连续反面:",fm2)
复制代码


其实买个至尊vip会员支持一下小甲鱼也不错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-6-28 15:30:52 | 显示全部楼层
逃兵 发表于 2021-6-28 14:28
有明显的bug

在else中应该赋值给fm1而非fm2

感谢老铁,这么明显的bug竟然没发现~
写两遍是为了实现次数大于100不打印出来~
会员要是买的起我早就买了,暂时没有余粮啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-28 15:46:53 | 显示全部楼层
超级玛尼哄 发表于 2021-6-28 15:30
感谢老铁,这么明显的bug竟然没发现~
写两遍是为了实现次数大于100不打印出来~
会员要是买的起我早就买 ...

写一遍就够了,把if counts < 100:判断写在打印前就可以
这样就能满足大于100才打印的要求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-28 17:28:22 | 显示全部楼层
逃兵 发表于 2021-6-28 15:46
写一遍就够了,把if counts < 100:判断写在打印前就可以
这样就能满足大于100才打印的要求

(⊙o⊙)哦      原来如此,悟了悟了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-28 17:31:02 | 显示全部楼层
本帖最后由 超级玛尼哄 于 2021-6-28 17:33 编辑
逃兵 发表于 2021-6-28 15:46
写一遍就够了,把if counts < 100:判断写在打印前就可以
这样就能满足大于100才打印的要求


有个问题:
1.如果在里面判断的话,每次执行都要判断一次,是不是计算量会大。多些一遍代码虽然会繁琐一下,但只会执行其中一部分代码,我认为这个效率会高一些。
2.如果这样的话,那么在编程的逻辑中,是优先提升效率,还是优先代码好看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-28 19:09:58 | 显示全部楼层
超级玛尼哄 发表于 2021-6-28 17:31
有个问题:
1.如果在里面判断的话,每次执行都要判断一次,是不是计算量会大。多些一遍代码虽然会繁琐 ...

优先效率

在时间复杂度和空间复杂度允许的情况下,保证代码的美观
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-6-28 20:04:09 | 显示全部楼层
逃兵 发表于 2021-6-28 19:09
优先效率

在时间复杂度和空间复杂度允许的情况下,保证代码的美观

受教了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 06:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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