【作业】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()

  看结果:

原文地址:https://www.cnblogs.com/cxstudypython/p/12016956.html