python入门44课问题
视频中完整代码:#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import time
class Mytimer:
def __init__(self):
self.prompt = '计时未开始'
self.lasted = []
self.begin = 0
self.end = 0
self.unit = ['年', '月', '日', '小时', '分', '秒']
def __str__(self):
return self.prompt
__repr__ = __str__
def __add__(self, other):
prompt = '总共运行了'
result = []
for index in range(3):
result.append(self.lasted + other.lasted)
if result:
prompt += (str(result) + self.unit)
return prompt
def start(self):
# 开始计时
self.begin = time.localtime()
self.prompt = '提示:请先调用stop()停止计时'
print('计时开始')
# 结束计时
def stop(self):
if not self.begin:
print('提示:请先调用start()进行计时!')
else:
self.end = time.localtime()
self._calc()
print('计时结束')
# 计算时长
def _calc(self):
self.lasted = []
self.prompt = '总共运行了'
for index in range(6):
print(index)
self.lasted.append(self.end - self.begin)
if self.lasted:
self.prompt += (str(self.lasted) + self.unit)
# 释放初始化
self.begin = 0
self.end = 0
计算时长的函数中index带入的那个range这个6是怎么来的?我试了下其他数字,比如改成10,就报错元组循环报错,小于6在返回复制prompt的时候self.lasted的时候就有问题。 本帖最后由 heidern0612 于 2020-3-31 07:45 编辑
这个index指的是time.localtime()返回序列标号,6的话只计算前六位。
*:time.struct_time(tm_year=2016, tm_mon=11, tm_mday=27, tm_hour=10, tm_min=26, tm_sec=5, tm_wday=6, tm_yday=332, tm_isdst=0)
也就是只计算了年、月、日、时、分、秒,后面的周几,第几天什么的都没包括在内。
calc里for迭代的结果就是年减年,月减月,日减日,时减时,分减分,秒减秒。一共6次迭代。 heidern0612 发表于 2020-3-31 07:43
这个index指的是time.localtime()返回序列标号,6的话只计算前六位。
*:time.struct_time(tm_year=2016 ...
懂了,等于在for的迭代中,返回年月小时的时候返回都是0,然后用if去判断拿到第几位有数字返回,然后对应的到self.unit里面找对应的单位。这样理解没问题吧 ronald627 发表于 2020-3-31 12:20
懂了,等于在for的迭代中,返回年月小时的时候返回都是0,然后用if去判断拿到第几位有数字返回,然后对应 ...
是的.{:5_105:}
页:
[1]