|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
下面是我写的代码,能跑起来,但是连续正面和连续反面的次数总是不对,求教是什么原因?
-----------------------------------------------------------------------------------------------
import random
number = int(input("请输入抛硬币的次数:"))
while True:
i = 0
sum1 = 0
sum2 = 0
last = 0
c_head = 0
c_tail = 0
max_head = 0
max_tail = 0
print("开始抛硬币实验......")
while i < number:
a = random.randint(1,10)
if a % 2 == 0:
sum1 += 1
c_head += 1
if number < 100:
print("正面",end = " ")
if c_head >= max_head:
max_head = c_head
if last == 2:
c_head = 1
last = 1
if a % 2 != 0:
sum2 += 1
c_tail += 1
if number < 100:
print("反面",end = " ")
if c_tail >= max_tail:
max_tail = c_tail
if last == 1:
c_tail = 1
last = 2
i += 1
print("一共模拟了",sum1 + sum2,"次抛硬币,结果如下:","\n正面:",sum1,"\n反面:",sum2)
print("最多连续正面:",max_head,"次")
print("最多连续反面:",max_tail,"次")
number = int(input("\n请输入抛硬币的次数:"))
先判断if last == 2:
c_head = 1
然后再 c_head += 1
不然明明上次是背面,你却c_head再加1,导致最后c_head最大值--》反面---》c-head增加1--》c-head以比最大值大1的数值赋值给max_head,然后你才把c_head变成1.最终导致max_head比最大值大1.
反面同理
另外你最上边的while循环没有设置break语句,导致整个代码一直循环,停住也只是因为等待你输入。最好最后设置一下break结束循环
- import random
- number = int(input("请输入抛硬币的次数:"))
- while True:
- i = 0
- sum1 = 0
- sum2 = 0
- last = 0
- c_head = 0
- c_tail = 0
- max_head = 0
- max_tail = 0
- print("开始抛硬币实验......")
- while i < number:
- a = random.randint(1,10)
- if a % 2 == 0:
- if last == 2:
- c_head = 1
- sum1 += 1
- c_head += 1
- if number < 100:
- print("正面",end = " ")
- if c_head >= max_head:
- max_head = c_head
-
- last = 1
-
-
- if a % 2 != 0:
- if last == 1:
- c_tail = 1
- sum2 += 1
- c_tail += 1
- if number < 100:
- print("反面",end = " ")
- if c_tail >= max_tail:
- max_tail = c_tail
-
- last = 2
- i += 1
- print("一共模拟了",sum1 + sum2,"次抛硬币,结果如下:","\n正面:",sum1,"\n反面:",sum2)
- print("最多连续正面:",max_head,"次")
- print("最多连续反面:",max_tail,"次")
- s=input('还继续吗(Y/N):')
- if s == 'Y':
- number = int(input("\n请输入抛硬币的次数:"))
- else:
- break
复制代码
|
|