• Python实践|憨憨炸鞭炮


    文章转载来源如下,感谢堃堃大佬
    Python鞭炮题-分析(Dliylru)

    题目

    #甲乙丙丁4人同时开始放鞭炮,甲每隔t1s放一次,乙每隔t2s放一次,丙每隔t3s放一次,丁每隔t4s放一次,每人各放n次。
    #函数fun的功能是根据形参炸响,只算一次响声,第一次响声是在第0s。
    #例如:若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到29次鞭炮声。
    def OK (i,t,n) :
        return (i%t==0) and (i【1】t<n)
    def fun(t1,t2,t3,t4,n) :
        maxt = 【2】
        if maxt < t2:
            maxt = t2
        if maxt < t3:
            maxt = t3
        if maxt < t4:
            maxt = t4
        count=1
        for t in range(1,【3】):
            if OK (t,t1,n) or OK(t,t2,n) or OK(t,t3,n) or OK(t,t4,n) :
                count+=1
        return 【4】
    
    def main() :
        t1= 7
        t2= 5
        t3= 6
        t4= 4
        n= 10
        r= fun(t1,t2,t3,t4,n)
        print('总共可听到%d次鞭炮声
    '%r)
    
    if __name__ =='__main__':
         main()
    

    解析

    开始分析代码:
    从 def main()看起,t1234是甲乙丙丁放鞭炮的间隔,题目有给,print肯定为输出结果,最后看。
    重点关注OK和fun两个函数。
    fun(t1,t2,t3,t4,n)中,看到底下有三个if分别将maxt与t1,t2,t3,t4比较,可知maxt=t1,【2】中填t1。

    maxt= 【2】
        if maxt < t2:
            maxt = t2
        if maxt < t3:
            maxt = t3
        if maxt < t4:
            maxt = t4
    

    这一段是为了找出最大的时间间隔,因为每个人需要放十次鞭炮。
    count=1,count是个计数器,初始值为1,因为在0s时甲乙丙丁共同放一次,听到一声响。
    for循环中的t是秒数,范围应该从第1秒到时间间隔最大的人放完鞭炮。由于在0s放了一次,所以【3】中应填maxt*(n-1)+1。
    为什么加1?range()中范围不包括右端,所以加1。
    看OK函数,此函数是为了判断在每一秒甲乙丙丁放不放炮。

    def OK (i,t,n) :
        return (i%t==0) and (i【1】t<n)
    

    参数i对应for中的t,是秒数。参数i对应t1/t2/t3/t4,是每个人放鞭炮的时间间隔。n是次数。
    i%t==0,判断到不到放炮的秒数。而每人放十次,所以后面的条件应该是有没有放够。所以用取整除法,【1】填//。由于已经放过一次,所以写<号。

    if OK (t,t1,n) or OK(t,t2,n) or OK(t,t3,n) or OK(t,t4,n) :
        count+=1
    

    只要在第t秒时有一个人满足上述条件,则count+1。
    for循环执行完毕,返回count(【4】中填count)对应main()中的r然后输出,结束。

    文章转载来源如下,再次感谢堃堃大佬
    Python鞭炮题-分析(Dliylru)

  • 相关阅读:
    swoole 入门
    Centos7安装Percona5.7
    clone github报Permission denied (publickey) 解决方案
    yii2-swiftmailer入门
    Yii 2.0 数据库操作总结
    面向对象简单示例
    面向对象与面向过程
    Tkinter之部件3种放置方式pack、grid、place
    Tkinter之variable用法
    Tkinter之Menu
  • 原文地址:https://www.cnblogs.com/hujunyao37201/p/13233652.html
Copyright © 2020-2023  润新知