python中time库引用不正确的_Python练习题100例(部分题目多解)8-11 从零开始的python学习之路(第3期)print格式控制,time模块常用函数的调用...

Python快速上手练习题

本期内容比较简单,主要是time模块的几个常用函数可以留意一下

practice8

题意

输出 9*9 乘法口诀表。

分析

分行与列考虑,共9行9列,i控制行,j控制列。

这里可以留意一下print函数参数控制的方式 “一段格式”+%+参数表,如果没有后面的参数表就正常输出字符串,

有参数列表就一定要使参数个数和前面格式控制符的个数相等,不然会报错

以下为常用数据类型:

%d 对应 整数

%s 对应 字符串

%f 对应 浮点数

%.2f 控制小数点右边位数的格式,%.位数f (注意有个’.’)

代码

for i in range(1,10):

for j in range(1,i+1):

print("%d*%d=%d"%(j,i,i*j),end=" ")#end=''这个参数可以控制print结尾的字符,默认值为换行符

print("") #这里就体现了end的默认值,换行

practice9

题目

暂停一秒输出。

分析

调用time库中sleep()函数,下面还会介绍一些常用的其他函数,具体看代码

代码

import time

for i in range(1,10):

print("现在是第%d秒"%(i))

time.sleep(1)

#以下为time库中的一些其他有意思的函数

print(time.ctime()) #以可读字符串方式返回时间

print(time.time()) #以浮点数形式返回时间

print(time.gmtime()) #返回计算机可处理类型的时间

print(time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime())) #得到一个格式化的时间

start1 = time.perf_counter() #返回当前时间(浮点数形式),比time()精细得多,统计sleep的时间

time.sleep(2)

end1 = time.perf_counter()

print("perf_counter()的结果",end1-start1)

start2 = time.process_time() #返回当前时间(浮点数形式),比time()精细得多,不统计sleep的时间

time.sleep(2)

end2 = time.process_time()

print("process_time()的结果",end2-start2)

practice10

题目

暂停一秒输出,并格式化当前时间。

分析

参照practice9

不过还是给一下代码

代码

import time

print(time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime()))

time.sleep(1)

print(time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime()))

practice11

题意

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

分析

规律为1,1,2,3,5,8…是熟悉的斐波那契

具体求法可参照practice6,可以自己试试速度,这里放最快的方法

代码

mod = 1000000007 #斐波那契数列后面会极大,为了防止数据过大就模这个数,用了hash的思想来判断结果是否正确

class Matrix:

def __init__(self,a1=0,a2=0,b1=0,b2=0): #初始化矩阵

self.data = [[0 for i in range(2)]for j in range(2)] #python中定义类的数据成员要放在init函数中,放在外面的相当于静态成员变量,类似与c++中加了static的数据成员

self.data[0][0] = a1

self.data[0][1] = a2

self.data[1][0] = b1

self.data[1][1] = b2

def __mul__(self,other): #矩阵相乘的运算符重载

ret = Matrix()

for i in range(2):

for j in range(2):

for k in range(2):

ret.data[i][j] += (self.data[i][k] * other.data[k][j])%mod

ret.data[i][j] %= mod

return ret

def q_pow(a,b): #快速幂,复杂度为O(logn)

ret = Matrix(1,0,0,1)

while b!=0:

if b & 1:

ret = ret * a

a = a*a

b //= 2

return ret

identity = Matrix(1,1,1,0)

print("1\n1")

for i in range(1,40):

ans = q_pow(identity,i)

print(ans.data[0][0]+ans.data[0][1])

后面应该不会一个一个题讲下去了,前面这十几题已经可以让大家对python有个概念了,后面会挑一些我能扩展出东西的题目写,然后把重心放在应用上。大家可以关注一波~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值