python基础训练 day5

python基础训练 day5,第1张

python基础训练 day5 python基础训练 day5

小白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结束!

会当临绝顶,一览众山小

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5593196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存