鱼C论坛

 找回密码
 立即注册
查看: 2595|回复: 4

[已解决]各位大佬帮我看看哪里出错了

[复制链接]
发表于 2023-1-12 13:15:07 | 显示全部楼层 |阅读模式
3鱼币
n = int(input("请输入一个正整数:"))
i = 0
T = 0
F = 0
LT = 0
LF = 0
m = 0
M = 0
if n >= 100:
    print("开始抛硬币实验...")
import random
while i < n:
    num = int(random.randint(1,2))
    if num == 1:
        T += 1
        qn = 1
        pn = 1
        if n <= 100:
            print("正面")
        if qn == 1:
            LT += 1
        M = LF
        LF = 0
    elif num == 2:
        F += 1
        qn = 2
        pn = 2
        if n <= 100:
            print("反面")
        if pn == 2:
            LF += 1
        m = LT
        LT = 0
    if m != 0:
        if m > LT:
            lt = m
        elif m < LT:
            lt = LT
        elif m == LT:
            lt = LT
    if M != 0:
        if M > LF:
            lf = M
        elif M < LF:
            lf = LF
        elif M == LF:
            lf = LF
    i += 1
print("正面的个数:",T)
print("反面的个数:",F)
print("正面最多次数:",lt)
print("反面最多次数:",lf)
各位鱼C论坛的大佬们,这是小甲鱼的模拟抛硬币的课后题(了不起的分支和循环(|||)),我的做法在最后一个要求(统计正反面最多连续次数)中频频出错
能不能帮我看看是哪里的问题?
最佳答案
2023-1-12 13:15:08
本帖最后由 chinajz 于 2023-1-12 19:37 编辑

修改了一下,测试看看;为便于验证,加了连续次数打印
#coding=gbk
n = int(input("请输入一个正整数:"))
i = 0
T = 0#正面计数
F = 0
LT = 0
lt=0
LF = 0
lf=0

if n >= 100:
    print("开始抛硬币实验...")
import random
while i < n:
    num = int(random.randint(1,2)) #1正面,2反面
    if num == 1:
        T += 1#正面计数
 
        if n <= 100:
            print("正面")
       
        LT += 1#正面连续次数
        print(LT)
        LF = 0#反面连续次数清零
    else:
        F += 1#反面计数

        if n <= 100:
            print("反面")
       
        LF += 1#反面连续次数
        print(LF)
        LT=0#正面连续次数清零
    if LT != 0:#连续正面取最大值
        if LT >= lt:
            lt = LT
            
        
    if LF!= 0:#连续反面取最大值
        if LF >= lf:
           lf= LF
        
    i += 1
print("正面的个数:",T)
print("反面的个数:",F)
print("正面最多次数:",lt)
print("反面最多次数:",lf)

最佳答案

查看完整内容

修改了一下,测试看看;为便于验证,加了连续次数打印
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-12 13:15:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 chinajz 于 2023-1-12 19:37 编辑

修改了一下,测试看看;为便于验证,加了连续次数打印
#coding=gbk
n = int(input("请输入一个正整数:"))
i = 0
T = 0#正面计数
F = 0
LT = 0
lt=0
LF = 0
lf=0

if n >= 100:
    print("开始抛硬币实验...")
import random
while i < n:
    num = int(random.randint(1,2)) #1正面,2反面
    if num == 1:
        T += 1#正面计数
 
        if n <= 100:
            print("正面")
       
        LT += 1#正面连续次数
        print(LT)
        LF = 0#反面连续次数清零
    else:
        F += 1#反面计数

        if n <= 100:
            print("反面")
       
        LF += 1#反面连续次数
        print(LF)
        LT=0#正面连续次数清零
    if LT != 0:#连续正面取最大值
        if LT >= lt:
            lt = LT
            
        
    if LF!= 0:#连续反面取最大值
        if LF >= lf:
           lf= LF
        
    i += 1
print("正面的个数:",T)
print("反面的个数:",F)
print("正面最多次数:",lt)
print("反面最多次数:",lf)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-12 17:49:04 | 显示全部楼层
#coding=gbk
n = int(input("请输入一个正整数:"))
i = 0
T = 0#正面计数
F = 0
LT = 0
lt=0
LF = 0
lf=0
m = 0
M = 0
lt和lf是局部变量,最后以想作全局变量用,在最前面定义试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-12 18:07:31 | 显示全部楼层
你这个代码只在最后一次循环的时候跑了一遍 ,并没有累加起来,都重新回到0了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-12 23:52:46 | 显示全部楼层
万分感谢,我发这个帖子只是抱着试一试的心态,没想到竟然有人回复!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 23:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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