|
3鱼币
做了课后练习题抛硬币统计,下面这个代码是我自己写的,请问能怎么优化,最好是能指出我的代码繁冗在哪里,谢谢!
import random
i=int(input("请输入抛硬币次数:"))
x=i #抛硬币总数
jz=0 #统计连续出现正面次数的标记
jzpd=0 #连续出现正面计数次数最多统计
jf=0 #统计连续出现反面次数的标记
jfpd=0 #连续出现反面计数次数最多统计
js1=0 #硬币正面出现次数计数
js2=0 #硬币反面出现次数计数
if i < 100:
while i:
j = random.randint(1,2)
if j == 1:
jf = 0 #当出现正面时,将连续出现反面次数标记归0
print("正面",end=" ")
jz += 1 #计数连续出现正面次数
js1 += 1 #统计一共出现多少次正面
if jz > jzpd:
jzpd = jz #将连续出现正面次数的最高值赋予jzpd
elif j == 2:
jz = 0 #当出现正面时,将连续出现正面次数标记归0
print("反面",end=" ")
jf += 1 #计数连续出现反面次数
js2 += 1 #统计一共出现多少次反面
if jf > jfpd:
jfpd = jf #将连续出现反面次数的最高值赋予jfpd
i -= 1
else:
while i:
j = random.randint(1,2)
if j == 1:
jf = 0 #当出现正面时,将连续出现反面次数标记归0
jz += 1 #计数连续出现正面次数
js1 += 1 #统计一共出现多少次正面
if jz > jzpd:
jzpd = jz #将连续出现正面次数的最高值赋予jzpd
elif j == 2:
jz = 0 #当出现正面时,将连续出现正面次数标记归0
jf += 1 #计数连续出现反面次数
js2 += 1 #统计一共出现多少次反面
if jf > jfpd:
jfpd = jf #将连续出现反面次数的最高值赋予jfpd
i -= 1
print(f"总共模拟了{x}次抛硬币")
print("正面次数=",js1)
print("反面次数=",js2)
print(f"连续出现正面次数最多时为{jzpd}次")
print(f"连续出现正反面次数最多时为{jfpd}次")
本帖最后由 jackz007 于 2025-4-9 12:46 编辑
- import random
- n = int(input("请输入抛硬币次数:"))
- k , jz , jf , jzpd , jfpd = 0 , 0 , 0 , 0 , 0
- for _ in range(n) :
- if random . randint(1 , 2) % 2 : # 如果是正面
- k += 1 # k - 正面总计数
- if jf : jf = 0 # 连续反面计数清零
- jz += 1 # 连续正面计数增 1
- if jz > jzpd : jzpd = jz # 如果连续正面计数超过记录,则更新记录
- s = '【正面】'
- else :
- if jz : jz = 0 # 连续正面计数清零
- jf += 1 # 连续反面计数增 1
- if jf > jfpd : jfpd = jf # 如果连续反面计数超过记录,则更新记录
- s = '[反面]'
- if n < 100 : print(s) # 如果抛币次数在 100 次以内,则打印每一次的抛币结果
- print('总共抛币【{}】次,其中:正面【{}】 次,反面 [{}] 次,最大连续正面【{}】次,最大连续反面 [{}] 次。' . format(n , k , n - k , jzpd , jfpd))
复制代码
|
|