小白5!
题目来源
话不多说,上题:
- python基础训练 day5
- 第一题
- 第二题
- 第三题
# 暂停一秒输出,并格式化当前时间。
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结束!
会当临绝顶,一览众山小



