python基础训练 day5

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

会当临绝顶,一览众山小

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值