zoukankan      html  css  js  c++  java
  • 【作业】Python面向对象

    作业要求: 给规定的时钟分钟秒钟读数,程序就从给定的读数开始走表

                          

                上面就是程序最终需要的效果图


    解题

      先说一下走表过程需要思考如下过程:

                1.走表秒针先走

                2.秒针到60分针加1,且秒针需要重置为0

                3.同样分钟走到60,时针需要加1,分钟需要重置为0

                4.最后是时针,时针到24时时,也需要重置为0

      考虑到如上的情况,在巩固一下面向对象的思想和基础我们就可以动手解题了。

      

      我直接贴上代码吧 

    import time
    
    
    class Clock_Time(object):
        # 构造方法
        def __init__(self, hour, min, second):
            self.hour = hour
            self.min = min
            self.second = second
    
        # 定义类方法
    
        def go_time(self):
            # 时间是秒先走 秒走到60分钟+1,分钟走到60 时钟+1
            # 因此先让秒自加1
            self.second += 1
            # 当秒为60时
            if self.second == 60:
                # 分钟自加1
                self.min += 1
                # 把秒钟重置为0
                self.second = 0
            # 当分钟为60时
            if self.min == 60:
                # 时钟自加1
                self.hour += 1
                # 把分钟重置为0
                self.min = 0
            # 当时钟为24时
            if self.hour == 24:
                # 把时钟重置为0时
                self.hour = 0
    
        def display_time(self):
            print('{}:{}:{}'.format(self.hour, self.min, self.second))
    
    
    if __name__ == "__main__":
        # 实例化对象
        clock = Clock_Time(23,59,58)
        while True:
            clock.display_time()
            time.sleep(1)
            clock.go_time()

        输出结果如下:

      里我们遇到一个问题  当时钟上的三个数小于10时,只会有一位数,我懂各位强迫症的想法

      因此我们这里引入 str.zfill()方法(点击可直接到菜鸟教程)

      先讲一下str.zfill()的用法


    Python zfill()方法

      Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。

      zfill()方法语法:str.zfill(width) width -- 指定字符串的长度。原字符串右对齐,前面填充0。

    实例:

      用实例看一下就明白了

    str_num = '1'
    str_num1 = '11'
    # 总共2位,差1位,在左边用0补齐
    print(str_num.zfill(2))
    # 总共4位,差3位,在左边用0补齐
    print(str_num.zfill(4))
    # 总共10位,差8位,在左边用0补齐
    print(str_num1.zfill(10))

      输出结果:


      接下来我们对最初的解题在 show_time方法引入str.zifill()就可以了

      直接看代码

    import time
    
    
    class Clock_Time(object):
        # 构造方法
        def __init__(self, hour, min, second):
            self.hour = hour
            self.min = min
            self.second = second
    
        # 定义类方法
    
        def go_time(self):
            # 时间是秒先走 秒走到60分钟+1,分钟走到60 时钟+1
            # 因此先让秒自加1
            self.second += 1
            # 当秒为60时
            if self.second == 60:
                # 分钟自加1
                self.min += 1
                # 把秒钟重置为0
                self.second = 0
            # 当分钟为60时
            if self.min == 60:
                # 时钟自加1
                self.hour += 1
                # 把分钟重置为0
                self.min = 0
            # 当时钟为24时
            if self.hour == 24:
                # 把时钟重置为0时
                self.hour = 0
    
        def display_time(self):
            # 引入str.zfill()方法
            hour_str = str(self.hour)
            min_str = str(self.min)
            second_str = str(self.second)
            print('{}:{}:{}'.format(hour_str.zfill(2), min_str.zfill(2), second_str.zfill(2)))
            # print('{}:{}:{}'.format(self.hour, self.min, self.second))
    
    
    if __name__ == "__main__":
        # 实例化对象
        clock = Clock_Time(23,59,58)
        while True:
            clock.display_time()
            time.sleep(1)
            clock.go_time()

      看结果:

  • 相关阅读:
    错位排序
    不容易系列之(4)——考新郎
    大数乘法
    神、上帝以及老天爷(错位排序)
    学生成绩……
    蛇形矩阵
    topcoder
    进制转换
    问题 1011
    topcoder 针对C程序员的TopCoder C++ (快速掌握)_ixigua—仅有杀毒软件是不够的…… .
  • 原文地址:https://www.cnblogs.com/cxstudypython/p/12016956.html
Copyright © 2011-2022 走看看