自动化编程第15章 :时间函数及线程学习 附leetcode14

许久不写开始动手 (内容跟据python编程快速上手完成)

time模块

首先引入我们的学习对象

import time

引入最常用的函数

time.time()# 返回Unix计时点,相对时间之差
time.sleep(1)#延迟一秒

实例训练:超级秒表

要求:

  1. 按下回车键完成,是一个新的单圈
  2. 打印圈数,和总时间,单圈时间
quantime=[]
start=''
while True:
            a=input()
            if a=='q':
                break
            elif a=='r':
                if not start:
                    start = time.time()  # 返回Unix计时点,相对时间之变
                    print('start time %s'% start)
                else:
                    if n==1:
                        quantime.append(time.time()-start)
                        n+=1
                    else:
                        quantime.append(time.time()-quantime[n-2])
                        n+=1
            else:
                continue
print('stop now,total time %s, number of loop %s,start time %s'%((time.time()-start),n-1,start))
print(quantime)
import time
print('enter begin, enter  click,ctrl+C quite')
input()
print('start')
starttime=time.time()
lasttime=starttime
lapNum=1
try:
    while True:
        input()
        lapTime=round(time.time()-lasttime,2)
        totalTime=round(time.time()-starttime,2)
        print('lap#%s:%s(%s)'%(lapNum,totalTime,lapTime),end='')
        lapNum+=1
        lasttime=time.time()
except KeyboardInterrupt:
    print('done')

书本上的列题,但是我找不到可以 ctrl c 退出的方式````help

datetime模块

import datetime
datetime.datetime.now()
dt=datetime.datetime(2020,5,21,20,3,5)
#dt.year 来提取值 此时year 就是2020)分别为年月日时分秒

== 实例==
import datetime
delta=datetime.timedelta(days=1,hours=1,seconds=9)
delta.seconds
》3609
delta.total_seconds()
》90009.0

import datetime
delta=datetime.timedelta(days=1,hours=1,seconds=9)
delta.seconds
#》3609 加入了1 hours+9seconds时间
delta.total_seconds()
#》90009.0
#增加一个定时提醒的功能的py文件
import  datetime
import time
dt=datetime.datetime(2020,5,23,20,37,0)
while True:
    if datetime.datetime.now()==dt:
        print('time to rest')
        break

多线程

import threading,time
def takeNAP():
    time.sleep(5)
    print('wake up')
threadobj=threading.Thread(target=takeNAP)#注意target不加参数,只调用函数
threadobj.start()
print('end')

通过Thread 对象的线程来完成异步的操作!

如果要加入参数请参考如下 :

print'cat','bug',sep='$'

效果同上

import threading
threadobj=threading.Thread(target=print,args=['cat','bug'],kwargs={sep:$})
threadobj.satart()

从python启动其他程序

#
import subprocess
subprocess.Popen('/usr/bin/gnome-caculator')
#利用命令行参数打开一个程序
subprocess.Popen('/usr/bin/gnome-caculator','/usr/bin/jupyter notebook')

附赠 leetcode 题目14

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入: [“flower”,“flow”,“flight”]
输出: “fl”

示例 2:

输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        pat=0
        a=0
        if not strs: return ""
        for i,j in enumerate(strs[0]):
                for k in range(1,len(strs)):
                    if strs[k][i]:
                        if strs[k][i]==j:
                            a+=1
                            continue
                        else:
                            return(strs[0][0:pat])
                    else:
                        return(strs[0][0:pat])
                if a==(len(strs)-1):
                    pat+=1
                    a=0
                    continue
                else:
                    return(strs[0][0:pat])

推荐阅读

网站解答链接

python两种让你拍大腿的解法,时间复杂度你想象不到,短小精悍。 1、利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀

def longestCommonPrefix(self, strs):
    if not strs: return ""
    s1 = min(strs)
    s2 = max(strs)
    for i,x in enumerate(s1):
        if x != s2[i]:
            return s2[:i]
    return s1

2、利用python的zip函数,把str看成list然后把输入看成二维数组,左对齐纵向压缩,然后把每项利用集合去重,之后遍历list中找到元素长度大于1之前的就是公共前缀

def longestCommonPrefix(self, strs):
    if not strs: return ""
    ss = list(map(set, zip(*strs)))
    res = ""
    for i, x in enumerate(ss):
        x = list(x)
        if len(x) > 1:
            break
        res = res + x[0]
    return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值