鱼C论坛

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

[已解决]原谅我的愚钝 想了好久才想出来的答案 16回动手第二题麻烦大佬看看有问题不

[复制链接]
发表于 2023-4-30 19:22:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
估计还是一如既往的可读性差 于是加了点注释   感觉是实现功能了 就不知会不会有些别的毛病
谢谢各位大佬了


# 导入随机模块 #
import random
# 接收用户输入并将数值赋值给 counts 变量 #
counts = int(input('enter a number:'))
i = 0
#人头面计数
man = 0
#数字面计数
number = 0
#人头面连续计数
mana = 0
#数字面连续计数
numbera = 0

if counts > 100:

    print("开始抛硬币实验:")
    while i < counts:
    # 生成一个随机数num #
        num = random.randint(0,1)
        if num == 1:
               
            number = number + 1
            man = 0
            #出现数字则人头归零
            if number > numbera:
                numbera = number
                #用连续计数接收当前数字面计数 连续计数不会因出现人头面归零 且只有数字计数突破记录才会变化
      
        else:
            
            man = man + 1
            number = 0
            if man > mana:
                mana = man
                #同上

        i = i + 1

print(mana, numbera)
最佳答案
2023-4-30 19:29:52
这段代码可以统计硬币抛掷实验中连续出现人头面和数字面的最大次数。如果输入的数字小于等于100,则不执行实验。

解释如下:

第1行导入随机模块。
第2行接收用户输入,将其转化为整数并存储在变量 counts 中。
第3行初始化变量 i 为0,这是循环计数器。
第4~7行初始化了四个计数器:man、number、mana、numbera。其中 man 和 number 分别记录出现人头面和数字面的次数;mana 和 numbera 记录连续出现人头面和数字面的最大次数。
第9~16行判断用户输入的数值,如果大于100就执行硬币抛掷实验。
第11行开始 while 循环,执行硬币抛掷实验,直到抛掷次数达到用户输入的数值 counts。
第13行生成一个随机数 num,如果为1则认为出现了数字面,否则认为出现了人头面。
第15~17行分别根据出现的是数字面还是人头面增加相应的计数器,同时将另外一方的计数器归零,并判断当前连续出现数字面或人头面的最大次数是否需要更新。
第20行循环结束后输出最大连续出现人头面和数字面的次数。
注意:这段代码本身逻辑并没有问题,但是对于硬币的正反面使用“人头面”和“数字面”可能有些不严谨。如果想要更加精准地描述硬币的情况,可以将“人头面”和“数字面”改为“正面”和“反面”等更合适的术语。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-30 19:25:37 | 显示全部楼层
看了答案我发现问题了 我的答案 就算没错 也少了个统计总数的功能  我在自己的代码上改改试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 19:27:13 | 显示全部楼层
mumei2018 发表于 2023-4-30 19:25
看了答案我发现问题了 我的答案 就算没错 也少了个统计总数的功能  我在自己的代码上改改试试

好像也简单 人头和数字各给多一个变量就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-30 19:29:52 | 显示全部楼层    本楼为最佳答案   
这段代码可以统计硬币抛掷实验中连续出现人头面和数字面的最大次数。如果输入的数字小于等于100,则不执行实验。

解释如下:

第1行导入随机模块。
第2行接收用户输入,将其转化为整数并存储在变量 counts 中。
第3行初始化变量 i 为0,这是循环计数器。
第4~7行初始化了四个计数器:man、number、mana、numbera。其中 man 和 number 分别记录出现人头面和数字面的次数;mana 和 numbera 记录连续出现人头面和数字面的最大次数。
第9~16行判断用户输入的数值,如果大于100就执行硬币抛掷实验。
第11行开始 while 循环,执行硬币抛掷实验,直到抛掷次数达到用户输入的数值 counts。
第13行生成一个随机数 num,如果为1则认为出现了数字面,否则认为出现了人头面。
第15~17行分别根据出现的是数字面还是人头面增加相应的计数器,同时将另外一方的计数器归零,并判断当前连续出现数字面或人头面的最大次数是否需要更新。
第20行循环结束后输出最大连续出现人头面和数字面的次数。
注意:这段代码本身逻辑并没有问题,但是对于硬币的正反面使用“人头面”和“数字面”可能有些不严谨。如果想要更加精准地描述硬币的情况,可以将“人头面”和“数字面”改为“正面”和“反面”等更合适的术语。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 19:41:10 | 显示全部楼层
歌者文明清理员 发表于 2023-4-30 19:29
这段代码可以统计硬币抛掷实验中连续出现人头面和数字面的最大次数。如果输入的数字小于等于100,则不执行 ...

谢啦 刚刚看了答案 好像小甲鱼的逻辑也差不多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 21:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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