|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请教下各位大神,下面的代码,为什么运行不出来正面和反面的次数呢,看起来,小甲鱼和我写的统计正面和反面的次数的代码好像没什么区别啊?
import random
counts = int(input("请输入抛硬币的次数:"))
i = 0
u = 0
m=0
print("开始抛硬币实验:")
while i < counts:
num = random.randint(1, 10)
if num % 2:
u+=1
if counts<100:
print("正面", end=" ")
else:
m+=1
if counts<100:
print("反面", end=" ")
i += 1
print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")
这个是看了小甲鱼的答案后改的,原来是下面这样的:
import random
counts = int(input("请输入抛硬币的次数:"))
i = 0
u = 0
m=0
print("开始抛硬币实验:")
while i < counts:
num = random.randint(1, 10)
if num % 2:
if counts<100:
print("正面", end=" ")
u+=1
else:
if counts<100:
print("反面", end=" ")
m=counts-u
i += 1
print('一共模拟了',counts,'次抛硬币,结果如下:\n u,正面:\n m,反面:')
两个代码都是正面和反面的次数统计不能运行出来,打印出来就是U正面和M正面。
本帖最后由 Daniel_Zhang 于 2021-2-4 17:25 编辑
问题很简单,你可以看一下我上面放的图片
有没有发现,两个图片里面,最后几次都是正面的结果
也就意味着,最后一次反面的时候,就再也没有更新过反面的次数了
满足了正面的条件,它就不会去运行 else 了
- if num % 2:
- if counts<100:
- print("正面", end=" ")
- u+=1
- else:
- if counts<100:
- print("反面", end=" ")
- m=counts-u
复制代码
也就是这个地方,因为正面了,就不会去更新反面的次数,你这里就是一直都是之前几次 for 循环获得的 u,而不是最新的
u 每次正面的话就会改变,但是后期没有反面的话,m=counts-u 里面的 m就不会发生改变,因为运行不到 else 里面去
但是如果改成 m += 1 就不同了,每一次是反面,就会 + 1,正面就不变
如果非要 m=counts-u 这么写,可以放在大的 if 外面,每一次不论正反,都会更新一下反面的次数
|
|