python计时器单位,python(计时器)

计时器

要求:

定制一个计时器的类

start 和 stop方法代表启动计时和停止计时

假设计时器对象 t1,print(t1)和直接调用t1 均显示结果

当计时器未启动或已停止计时,调用stop方法能给予温馨提示

两个计时器对象可以相加: t1 + t2

只能使用提供的有限资源完成

资源:

使用time模块的localtime方法获取时间

time.localtime返回 struct_time的时间格式

表现你的类: _ str _ 和 _ repr _(str调用时要用print,repr可直接调用)

import time as t

class MyTimer:

#开始计时

def start(self):

self.begin = t.localtime()

self.prompt = '提示:请先用stop()停止计时'

print('开始计时')

#停止计时

def stop(self):

if not self.begin:

print('提示:请先用start()开始计时')

else:

self.end = t.localtime()

self._calc()

print('计时结束')

#计时器相加

def __add__(self,other):

prompt = '总共运行了'

result = []

for index in range(6):

result.append(self.lasted[index] +other.lasted[index])

if result[index]:

prompt += (str(result[index]+self.unit[index])

return prompt

def __init__(self):

self.unit = ['年','月','天','小时','分钟','秒']

self.borrow= [0,12,31,24,60,60]

self.prompt = '未开始计时'

self.lasted = []

self.begin = 0

self.end = 0

def __str__(self):

return prompt#重写__str__魔法方法,程序在调用print函数时,打印当时状态的prompt内容

__repr__ = __str__#将__repr__和__str__相同化

#内部方法,计算运行时间

def _calc(self):

self.lasted = []#制作一个空列表,存放每个单位相减的值

self.prompt = '总共运行了'

for index in range(6):

temp = self.end[index] - self.begin[index]

if temp < 0:

i = 1

while self.lasted[index -i] < 1:#向前边的位数借

self.lasted[index - i] += self.borrow[index - i] - 1

self.lasted[index - i - 1] -= 1

i += 1#向更高位借

self.lasted.append(self.borrow[index] + temp)

self.lasted[index - 1] -= 1

else:

self.lasted.append(temp)

for index in range(6):

self.lasted.append(self.end[index] - self.begin[index])

if self.lasted[index]:

self.prompt += str(self.lasted[index]) + self.unit[index]

#为下一轮计时初始化变量

self.begin = 0

self.end = 0

运行结果:

>>>t1 = MyTimer()

>>>t1

>>>未开始计时

>>>t1.statrt()

>>>开始计时

>>>t1.stop()

>>>计时结束

>>>t1

>>>总共运行了5秒

>>>t2=MyTimer()

>>>t2.stop()

>>>提示:请先用start()开始计时

>>>t2.start()

>>>开始计时

>>>t2

>>>提示:请先用stop()停止计时

>>>t2.stop()

>>>计时结束

>>>t2

>>>总共运行了5秒

>>>t1 + t2

>>>总共运行了10秒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查询分析300万笔记录_给你100万条数据的一张表,你将如何查询优化?

1.两种查询引擎查询速度(myIsam 引擎)InnoDB 中不保存表的具体行数&#xff0c;也就是说&#xff0c;执行select count(*) from table时&#xff0c;InnoDB要扫描一遍整个表来计算有多少行。MyISAM只要简单的读出保存好的行数即可。注意的是&#xff0c;当count(*)语句包含 whe…

poj 3321 Apple Trie

/*poj 3321 Apple Trie 这道题的关键是如何将一个树建成一个一维数组利用树状数组来解题&#xff01;可以利用dfs&#xff08;&#xff09;来搞定&#xff0c;我们在对一个节点深搜后&#xff0c;所经过的节点的数目就是该节点的子树的数目所以我们利用start[i]数组来记录 i 节…

php美团项目分享,美团项目(纯代码)(示例代码)

一.框架搭建1.icon规格要求可从文档中查找,搜索app icon.2.因为很多界面重复利用,所以不用storyboarda.删除stroyboard,在设置中Info -> Main storyboard file base name 项直接去除b.创建ZXHomeViewController(UICollectionViewController)和ZXNavigationController(UINavi…

ioc spring 上机案例_Spring的IoC入门案例

1、创建工程&#xff0c;导入坐标1.1 创建工程1.2 导入坐标xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0org.examplespring_01_io…

java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题...

1 /*2 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中&#xff0c;3 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的&#xff0c;而原构造函数中的代码则移到了构造函数的最后执行4 */5 import static java.lang.System.out;6 7 public clas…

liunx php的项目地址,在 Linux 配置 PHP 项目

在 Linux 配置 PHP 项目一, 搭建测试环境软件环境:(PHP 项目)PHP5.4Apache(httpd2.4)mysql5.7二, 安装1挂载:1. 把 iso 的镜像文件放到虚拟机 Linux 的 CD/ROM(在右下角 (网络适配器 / 桥接模式) 旁有个光盘, 点击连接, 之后页面出现一个光盘)2. 使用挂载命令, 把 CD/ROM 设备里…

springwebflux 页面_【SpringBoot WEB系列】WebFlux静态资源配置与访问

上一篇博文介绍SpringMVC的静态资源访问&#xff0c;那么在WebFlux中&#xff0c;静态资源的访问姿势是否一致呢I. 默认配置与SpringBoot的默认配置一样&#xff0c;WebFlux同样是classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/…

java中TreeSet集合如何实现元素的判重

1 /*2 看一下部分的TreeSet源码....3 public class TreeSet<E> extends AbstractSet<E>4 implements NavigableSet<E>, Cloneable, java.io.Serializable5 {6 private transient NavigableMap<E,Object> m;7 //NavigableMap继承SortedMap&…

php中改变函数路由,通过PHP重启路由器以更换IP(原创)

在采集大批量数据时常常会触发对方服务器的“自我保护”&#xff0c;请求过于频繁就限制访问。这时需要停留很长一段时间(十几分钟到几十分钟不等)才能恢复访问&#xff0c;这样采集数据的速度就受到非常大的限制。解决方法有两个&#xff1a;1 通过图片识别绕过验证码机制&…

axure 画小程序效果图_APP详情页如何用Axure画出来

详情页是App原型中比较复杂的页面类型&#xff0c;熟悉它的常用套路有助于快速画出。之前的文章已经讲解了APP常见功能中的页面模板、下导航、上导航、列表页怎么画出来&#xff0c;请继续关注浪子教你画APP原型后续的其他功能模块。APP详情页往往包含上导航&#xff0c;内容区…

HashSet中实现不插入重复的元素

/* 看一下部分的HashSet源码.... public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.io.Serializable {static final long serialVersionUID -5024744406713321676L;private transient HashMap<E,Object> map;privat…

tuxedo错误码6_TUXEDE返回的所有错误代码

TUXEDE返回的所有错误代码tuxedo/include/atmi.h定于了TUXEDE返回的所有错误代码。/** tperrno values - error codes* The man pages explain the context in which the following error codes* can return.*/#define TPMINVAL 0 /* minimum error message */#define TPEABORT…

java中finally和return的执行顺序

注意&#xff1a;return的位置。。。从这几个例子中可以看到&#xff0c;如果try之前没有有条件的return&#xff0c;则try..catch..finally语句块中的语句都是顺序执行&#xff08;如果try中或者catch中 有return语句&#xff0c;那么先执行该return&#xff0c;然后执行final…

oracle如何设置权限,ORACLE的权限设置

创建用户create user abc identified by 123;----------------------------------------------------授权grant create session,create table to abcgrant create sysdba to database----------------------------------------------------然后conn abc密码&#xff1a;123----…

有关try..catch..finally处理异常的总结

//看一下下面的程序&#xff0c;你能正确的写出不同的testEx2()方法时&#xff0c;程序的最终打印出来的数据吗....先不要看下面的答案 public class ExceptionTest { public ExceptionTest() { } boolean testEx() throws Exception { boolean ret true; try { ret te…

oracle key的含义,v$session SERIAL#字段的含义

liyx&#xff1a;#!/bin/bash||#Write by liyx||||#数据库服务器地址||DBHOSTlocalhost||#数据库登录名||USERNAMEroot||#数据库密码||PASSWORDroot||#需要备份的数据库 或 输入类似 db1 db2 的列表清单 例 DBNAMES"all"||DBNAMES"ess_simple"||#备份MYSQL…

java.util.Scanner简单应用

import java.util.Scanner; import java.io.*; public class FileScannerTest{public static void main(String args[]){ //**************Scanner 的一般用//1.public Scanner(InputStream source),利用InputStream 对象进行构造Scanner myScanner1 new Scanner(System.in);w…

oracle能查dml记录么,如何查询DML操作的详细记录

可以通过flashback_transaction_qurey视图查询eg:SQL> desc flashback_transaction_queryName Null? Type----------------------------------------- -------- ----------------------------XID …

krpano 场景切换 通知_一个基于Vulkan的异步场景加载设计

异步场景加载基本流程验证完成。此方法理论上只需要使用3个Vulkan的指令队列。对于移动平台上的Vulkan&#xff0c;指令队列数量极少&#xff0c;比如Adreno640只有3个指令队列可用。所以理论上这一设计也适合目前的移动平台使用。(1) graphic_queue&#xff1a;用于完成当前场…

oracle 数据库回闪,各种数据库闪回的总结

本帖最后由 guoyJoe 于 2013-3-26 21:15 编辑一、Fashback Query闪回查询:Books-->APP-->Application Developers Guide - Fundamentals-->Flashback&#xff11;、应用Flashback Query查询过去的数据select * from t1 as of scn 44545454;select * from t1 as of tim…