|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
@Fishc 您好,我有两个问题
这是第一个问题:输入抛硬币次数后,所得到的要么全是正,要么全是反
第二个问题:最终得到的最大连续面次数总是为0
- import random
- counts = int(input("请输入你想抛硬币的次数:"))
- num = random.randint(1,10)
- if counts > 50:
- ignore = True
- else:
- ignore = False
- last = 0
- i = 0 #抛硬币的次数
- forward = 0 #正面的次数
- back = 0 #反面的次数
- last_forward = 0 #连续为正面的次数
- last_back = 0 #连续为反面的次数
- max_forward = 0 #最大连续正面次数
- max_back = 0 #最大连续反面次数
- while i < counts:
- if num % 2:
- forward += 1
- last_forward += 1
- if not ignore:
- print("正面",end=" ")
- if last == 2:
- last_forward = 1
- if last_forward > max_forward:
- last_forward = max_forward
- last = 1
- else:
- back += 1
- last_back += 1
- if not ignore:
- print("反面",end=" ")
- if last == 1:
- last_back = 1
- if last_back > max_back:
- last_back = max_back
- last = 2
- i += 1
- print("一共模拟了", counts, "次抛硬币,结果如下:")
- print("正面:", forward, "次", sep="")
- print("反面:", back, "次", sep="")
- print("最多连续正面:", max_forward, "次", sep="")
- print("最多连续反面:", max_back, "次", sep="")
复制代码
感谢回复!
您好!对此代码提出一些修改建议和解答以下两个问题:
1. **硬币记录的结果总是全正面或全反面**:因为 `num` 是在循环外部生成的一个随机数,并没有在循环内部更新。
2. **最大连续面次数总是为0**:因为在条件满足时,您把 `last_forward` 和 `last_back` 错误地赋值给了 `max_forward` 和 `max_back`。
修改后的代码如下:
- import random
- counts = int(input("请输入你想抛硬币的次数:"))
- if counts > 50:
- ignore = True
- else:
- ignore = False
- last = 0
- i = 0 #抛硬币的次数
- forward = 0 #正面的次数
- back = 0 #反面的次数
- last_forward = 0 #连续为正面的次数
- last_back = 0 #连续为反面的次数
- max_forward = 0 #最大连续正面次数
- max_back = 0 #最大连续反面次数
- while i < counts:
- num = random.randint(0, 1) # 生成每次抛硬币的结果
- if num == 1:
- forward += 1
- last_forward += 1
- last_back = 0 # 重置连续反面计数
- if not ignore:
- print("正面", end=" ")
- if last_forward > max_forward:
- max_forward = last_forward
- last = 1
- else:
- back += 1
- last_back += 1
- last_forward = 0 # 重置连续正面计数
- if not ignore:
- print("反面", end=" ")
- if last_back > max_back:
- max_back = last_back
- last = 2
- i += 1
- print("\n一共模拟了", counts, "次抛硬币,结果如下:")
- print("正面:", forward, "次", sep="")
- print("反面:", back, "次", sep="")
- print("最多连续正面:", max_forward, "次", sep="")
- print("最多连续反面:", max_back, "次", sep="")
复制代码
修改后的代码在 `while` 循环内部生成新的随机数 `num` 来模拟每次抛硬币的结果,同时在检测到连续正面或反面时才更新最大连续次数,这样能够准确地记录并显示结果。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|