mumei2018 发表于 2023-4-30 19:22:04

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

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


# 导入随机模块 #
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)

mumei2018 发表于 2023-4-30 19:25:37

看了答案我发现问题了 我的答案 就算没错 也少了个统计总数的功能我在自己的代码上改改试试

mumei2018 发表于 2023-4-30 19:27:13

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

好像也简单 人头和数字各给多一个变量就好了

歌者文明清理员 发表于 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行循环结束后输出最大连续出现人头面和数字面的次数。
注意:这段代码本身逻辑并没有问题,但是对于硬币的正反面使用“人头面”和“数字面”可能有些不严谨。如果想要更加精准地描述硬币的情况,可以将“人头面”和“数字面”改为“正面”和“反面”等更合适的术语。

mumei2018 发表于 2023-4-30 19:41:10

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

谢啦 刚刚看了答案 好像小甲鱼的逻辑也差不多
页: [1]
查看完整版本: 原谅我的愚钝 想了好久才想出来的答案 16回动手第二题麻烦大佬看看有问题不