Python100道题从“无”到“有”,每日监督打卡学习第二期:11-20题,思路分享+心路历程

举报
是Dream呀 发表于 2022/01/10 22:44:45 2022/01/10
【摘要】 📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,小白一枚,多多关照😜😜😜 🏅🏅🏅CSDN Python领域新星创作者,大二在读...

在这里插入图片描述

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,小白一枚,多多关照😜😜😜
🏅🏅🏅CSDN Python领域新星创作者,大二在读,欢迎大家找我合作学习
💕入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈
🌟🌟🌟✨✨✨

前言: 这里记录一下自己刷一百道题的心路历程吧,每十道题发一篇文章,希望大家可以从中学习到知识,也希望自己能够坚持下去吧!欢迎大家前来一起监督学习!

第十一题

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

代码

def xiaotutu(month):
    if month==1 or month==2:
        return 2
    # 第三个月起,就说明兔子已经长了两年了,也就是说第三个月出生的小兔,第五个月就又可以哺育新的小兔子了
    # 想一下兔子每个月份的数量:2 2 4 6 10 16 26 42,找一下规律:正好当前月份的兔子数量等于前两个月兔子数量的总和。
    return xiaotutu(month-1)+xiaotutu(month-2)
print(xiaotutu(5))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

思路:斐波那契数列

第三个月起,就说明兔子已经长了两年了,也就是说第三个月出生的小兔,第五个月就又可以哺育新的小兔子了。想一下兔子每个月份的数量:2 2 4 6 10 16 26 42,找一下规律:正好当前月份的兔子数量等于前两个月兔子数量的总和。这样我们就自然而然的想到去使用斐波那契数列了!

第十二题

12.判断101-200之间有多少个素数,并输出所有素数。

代码

for i in range(101,201):
    for j in range(2,i):
        if i % j==0:
            break
    else:
        print(i)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

思路

素数就是:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 双循环遍历一下列表,这时候就会用到我们一个非常不常用的的结构:for...else...结构了,全都遍历确认一遍之后,可以被整除的直接break掉,遍历全部之后剩下的进行输出!

第十三题

13. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

代码

for n in range(100,1000):
    i = n // 100
    j = n // 10 % 10
    k = n % 10
    if n == i**3 + j**3 + k**3:
        print(n)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

思路

利用for循环控制100-999个数,每个数分解出个位,十位,百位。这个没啥好说的,记住整除取余的一系列操作就行了!

第十四题

14.将一个正整数分解质因数。例如:输入90,打印出90=233*5。

代码

a = int(input('请输入你要分解的正整数:'))
for i in range(2,a):
    while a!=1:
        if a%i==0:
            for j in range(2,i):
                if i%j==0:
                    break
            else:
                a = a/i
                if a== 1:
                    print('%d'%i,end='')
                else:
                    print('%d*'%i,end='')
        else:
            break

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

思路

看到这道题我看到的时候第一想法:结合素数求法进行求解,双循环结构,但后来仔细一想,能被目标数从0开始遍历,前面的数如果能被整除的话不会轮到后面,所以说根本就不用判断是不是素数,直接从2开始,看看谁可以被目标数整除,该数肯定是素数。 然后通过格式化字符串进行输出!简化一下代码:

num = int(input('请输入:'))

for i in range(2, num):
    while num!=1:
        if num % i == 0:
            num = num / i
            if num==1:
                print('%d'%i,end='')
            else:
                print('%d*'%i,end='')
        else:
            break

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

第十五题

15.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

代码

score = int(input('输入分数:'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'

print('%d 属于 %s' % (score, grade))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

思路

没啥好说的,注意最后格式化输出!

第十六题

16.输出指定格式的日期。

代码

import time

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

import datetime

print(datetime.date.today())
print(datetime.date.today().strftime('%d/%m/%Y'))
print(datetime.date(1941, 11, 5))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

思路

使用 time和datetime 模块,内容多,牢记于心!

第十七题

17.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

代码

a = str(input('请输入一串字符串:'))
letter = 0
space = 0
numbers= 0
others = 0
i = 0
while i<len(a):
    b = a[i]
    i+=1
    if b.isalpha():
        letter+=1
    elif b.isspace():
        space+=1
    elif b.isdigit():
        numbers+=1
    else:
        others+=1
print('字母:%s,空格:%s,数字:%s,其他字符:%s'%(letter,space,numbers,others))
print('字母:{0},空格:{1},数字:{2},其他字符:{3}'.format(letter,space,numbers,others))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

思路

判断字符串中的字母数字空格等有专门的函数判断方法:isalpha() isspace() isdigit(),然后格式化输出方法要掌握起来,%s是字符串,%d是输出整数,format方法也要掌握起来!结构:({0}).format(变量)

第十八题

18.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

代码

a = int(input('请输入一个数:'))
b = int(input('请输入多少个数相加:'))
c=0
list1=[]
for i in range(b):
    c=c+a*10**i
    list1.append(c)
print(list1)
d=0
for i in list1:
    d+=i
print(d)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

思路

不知道为啥,我现在做啥首先想到和用到的都是列表,可能真的是有惯性思维了,不知道是好还是坏,尝试着去用一下别的函数和语法!但又想不出来其他的,还是得好好学吧,我觉得我的算法水平太低了!
简化一下代码,去掉列表:

a = int(input('请输入一个数:'))
b = int(input('请输入多少个数相加:'))
c=0
d = 0
for i in range(b):
    c=c+a*10**i
    d += c
print(d)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第十九题

19.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

代码

a=0
for i in range(2,1001):
    for j in range(2,i):
        if i%j==0:
            a+=j
            # a+=i/j
    if i==a+1:
        print(i)
    a=0

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

思路

根据题目意思,完数就是该数的所有的因数之和等于该数,很容易想到二重循环,第一重先找那个数,第二层再去找因数,把因数相加,然后进行比较,注意,此处很容易犯一个错误:因数求和加不加该数除此因数后的结果。这是我们第一个想法肯定是必须加呀!!!为什么不加,被除后的结果肯定也是一个参数啊!!!确实都是参数,但你再细想,你继续遍历,当遍历到被除后那个结果的因数后,你还会再加一遍,此时就加重了,所以说只需要加除数就可以了,结果后续遍历还会当做除数加入因数之和中去!

第二十题

20、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

代码

high = 100
H = 0
n =int(input('请输入落地次数:'))
def luodi(n):
    if n==0:
        return 100
    else:
        return luodi(n-1)/2
for i in range(0,n):
    if i ==0:
        H+=100
    else:
        H+=luodi(i)*2
print('第{}次落地,总共经过了{}米,落地反弹{}米。'.format(n,H,luodi(n)))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

思路

通过递归结构,求出第n次落地后反弹的高度,然后循环遍历一下,注意第一次落地时只有下降的高度,第二次落地时,包括第一次落地反弹起来的高度和落下的距离,也就是第一次反弹起双倍距离!

【精彩文章💕往期推荐】

Python100道题从“无”到“有”,每日监督打卡学习第一期:1-10题,思路分享+心路历程
Python100道题从“无”到“有”,每日监督打卡学习第二期:11-20题,思路分享+心路历程
Python100道题从“无”到“有”,每日监督打卡学习第三期:21-30题,思路分享+心路历程

结语:第二期圆满结束,我们第三期再见!!!加油坚持下去!!!

🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
在这里插入图片描述
在这里插入图片描述

文章来源: xuyipeng.blog.csdn.net,作者:是Dream呀,版权归原作者所有,如需转载,请联系作者。

原文链接:xuyipeng.blog.csdn.net/article/details/121582296

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。