python基础训练 day5
小白5!
话不多说,上题:
第一题
# 暂停一秒输出,并格式化当前时间。
time模块中格式化输出指示字符注记表:
指令 | 含意 | 备注 |
%a | 本地化的缩写星期中每日的名称。 | |
%A | 本地化的星期中每日的完整名称。 | |
%b | 本地化的月缩写名称。 | |
%B | 本地化的月完整名称。 | |
%c | 本地化的适当日期和时间表示。 | |
%d | 十进制数 [01,31] 表示的月中日。 | |
%H | 十进制数 [00,23] 表示的小时(24小时制)。 | |
%I | 十进制数 [01,12] 表示的小时(12小时制)。 | |
%j | 十进制数 [001,366] 表示的年中日。 | |
%m | 十进制数 [01,12] 表示的月。 | |
%M | 十进制数 [00,59] 表示的分钟。 | |
%p | 本地化的 AM 或 PM 。 | (1) |
%S | 十进制数 [00,61] 表示的秒。 | (2) |
%U | 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。 | (3) |
%w | 十进制数 [0(星期日),6] 表示的周中日。 | |
%W | 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。 | (3) |
%x | 本地化的适当日期表示。 | |
%X | 本地化的适当时间表示。 | |
%y | 十进制数 [00,99] 表示的没有世纪的年份。 | |
%Y | 十进制数表示的带世纪的年份。 | |
%z | 时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] 。 | |
%Z | 时区名称(如果不存在时区,则不包含字符)。 |
直接查表,熟能生巧。
import time
seconds = time.time()
print(time.strftime(f'%y/%m/%d %H:%M:%S'),seconds)
time.sleep(1)
print(time.strftime(f'%y/%m/%d %H:%M:%S'),seconds)
运行结果如下:
# 运行结果
21/11/24 12:37:31 1637728651.3018382
21/11/24 12:37:32 1637728651.3018382
第二题
# 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
经过分析,发现兔子的总数满足斐波那契数列,1,1,2,3,5…
把之前写的斐波那契数列的代码拿过来
def feibo(n):
x1 = 1
x2 = 1
i = 2
while True:
if n == 1:
return x1
if n == 2:
return x2
x1, x2 = x2, x1+x2
if i == n:
return x1
i += 1
print(feibo(int(input('想知道第几个月兔子的数量?'))))
结果
# 运行结果
想知道第几个月兔子的数量?10
55
第三题
# 判断101-200之间有多少个素数,并输出所有素数。
素数,又称质数(就是哥德巴赫猜想研究的那个东西。。),我们也来研究研究(哈哈哈,不是)。素数指的是“大于1的整数中,只能被1和这个数本身整除的数”。好!很有精神,直接整!
for i in range(101, 201): # 双重循环一个循环用来表示数,一个循环用来取余检验是否为素数
for k in range(2, i):
if i % k == 0:
break
if k == i-1:# 输出前看一看k(取余数)是不是这个被检验数的最后一个取余数,要不一出出一串
print(i,end=' ')#输出结果行太多了,加个end条件
输出结果:
# 运行结果
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
最后深入的思考了一下,取余数去到k实际上有点多余,实际上第一个取余数为2,所以相应的来说,i肯定就不会被大于(i-1)/2的数除开了,注:素数一定是奇数。所以我们可以进行简化。并且看了一下,发现有个题干要求没有实现!赶紧加上。
count = 0
for i in range(101, 201):
for k in range(2, int((i-1)/2)):
if i % k == 0:
break
if k == int((i-1)/2)-1:
count += 1
print(i,end=' ')
print()
print(f'共有{count}个素数')
大概是这样,边际条件没有仔细思考,看答案一样就整上来了。
# 运行结果
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
共有21个素数
好了,day5结束!
会当临绝顶,一览众山小