鱼C论坛

 找回密码
 立即注册
查看: 141|回复: 8

[已解决]第0008讲-数字类型(上)的课后作业疑问

[复制链接]
发表于 2025-8-6 17:35:40 | 显示全部楼层 |阅读模式

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

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

x
已经看了答案,知道生成一个随机整数用randint,但是我读了下randrange,好像也可以实现,我在交互模式下也试了,randrange(2)就是会生成0和1这两个数。但是为什么我设置的循环次数不对呢。比如我输入次数2,出来的结果是随机的。
  1. import random
  2. n=int(input('请输入抛硬币的次数:'))
  3. print('开始抛硬币实验:')
  4. while n>0:
  5.     m=random.randrange(2)
  6.     if m==0:
  7.         print('反面',end=' ')
  8.     else:
  9.         print('正面',end=' ')
  10.         n=n-1
复制代码


最佳答案
2025-8-6 17:43:02
在抛出正面时执行了n=n-1,但抛出反面时没有减少n
把这个放在无需条件的外层 n = n - 1  # 关键修正:每次循环都减少次数

运行结果

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

使用道具 举报

发表于 2025-8-6 17:36:25 | 显示全部楼层
根据你的代码分析,问题出在循环条件控制上:在抛出正面时执行了`n=n-1`,但抛出反面时没有减少`n`,导致循环次数错误。修正方法:无论正反面,每次循环都减少`n`的值。

正确代码:

  1. import random
  2. n = int(input('请输入抛硬币的次数:'))
  3. print('开始抛硬币实验:')
  4. while n > 0:
  5.     m = random.randrange(2)  # 生成0或1
  6.     if m == 0:
  7.         print('反面', end=' ')
  8.     else:
  9.         print('正面', end=' ')
  10.     n = n - 1  # 关键修正:每次循环都减少次数
复制代码


关键修改点:
1. 将 n=n-1 移出 else 分支
2. 确保每次抛硬币后都执行次数减1

这样无论随机生成0还是1,循环都会准确执行指定次数。使用 randrange(2)randint(0,1) 在这里效果是等价的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-6 17:43:02 | 显示全部楼层    本楼为最佳答案   
在抛出正面时执行了n=n-1,但抛出反面时没有减少n
把这个放在无需条件的外层 n = n - 1  # 关键修正:每次循环都减少次数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-6 17:43:57 | 显示全部楼层
观察输出  你看你每次都是两次正面才停
给我个最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-6 17:48:01 | 显示全部楼层
某一个“天” 发表于 2025-8-6 17:43
观察输出  你看你每次都是两次正面才停
给我个最佳

完全明白了,缩进的问题,我看了半天没看出问题来,一直怀疑是我随机函数出了问题,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-6 18:02:22 | 显示全部楼层
某一个“天” 发表于 2025-8-6 17:43
观察输出  你看你每次都是两次正面才停
给我个最佳
  1. import random
  2. counts = int(input("请输入抛硬币的次数:"))
  3. i = 0
  4. print("开始抛硬币实验:")
  5. while i < counts:
  6.     num = random.randint(1, 10)
  7.     if num % 2:
  8.         print("正面", end=" ")
  9.     else:
  10.         print("反面", end=" ")
  11.     i += 1
复制代码

大佬,再咨询您一下。上面代码中,if num%2这个语句,if后面是个运算,结果可能是1或者0,为什么if 后面会加一个运算啊,这里1是true的意思吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-6 18:03:57 | 显示全部楼层
gymn 发表于 2025-8-6 18:02
大佬,再咨询您一下。上面代码中,if num%2这个语句,if后面是个运算,结果可能是1或者0,为什么if 后 ...

是的 if后的表达式自动运算
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-6 18:04:38 | 显示全部楼层
gymn 发表于 2025-8-6 18:02
大佬,再咨询您一下。上面代码中,if num%2这个语句,if后面是个运算,结果可能是1或者0,为什么if 后 ...

如果是数字的话,0代表false其他都是true
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-7 08:56:57 | 显示全部楼层
某一个“天” 发表于 2025-8-6 18:03
是的 if后的表达式自动运算

谢谢老师
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-30 22:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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