网络知识 娱乐 【Python百日刷题计划】Day10~一些编程题练习

【Python百日刷题计划】Day10~一些编程题练习

📚前言 

✅本次主要是难度不大,快来看看吧。

推荐一个我正在用的好用刷题网站👉由此进入免费的刷题练习网站

文章目录

📚前言 

         💬题目一:这天第几天

        📄题目要求

        📄我的分析

        📄我的答案

 💬题目二 :判断素数个数

        📄题目要求

        📄我的分析

        📄我的答案

💬题目三统计字符串构成

        📄题目要求

        📄我的分析

        📄我的答案

💬题目四:比赛对手名单

        📄题目要求

        📄我的分析

        📄我的答案 

        💬题目五:画菱形

        📄题目要求

        📄我的分析

        📄我的答案

📚结语

💬题目一:这天第几天

📄题目要求

输入某年某月某日,判断这一天是这一年的第几天?

📄我的分析

题目难度不大,主要是要考虑特殊情况,闰年时需考虑二月多加一天

📄我的答案

def isLeapYear(y):
    '''该函数判断是否为闰年'''
    return (y%400==0 or (y%4==0 and y%100!=0))

DofM = [0,31,28,31,30,31,30,31,31,30,31,30]
res=0
year=int(input('年份:'))
month=int(input('月份:'))
day=int(input('日:'))
#判断是否为闰年
if isLeapYear(year):
    DofM[2]+=1
for i in range(month):
    res+=DofM[i]

print('你输入的是该年的第%d天' % (res+day))

输入示例

💬题目二 :判断素数个数

📄题目要求

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

📄我的分析

该题处理的关键是要知道判断一个数是否为素数的方法:用一个数去除2到这个数的算术平方根,如果能被整除,则表明此数不是素数,反之是素数。用else可以进一步简化代码.

📄我的答案

#方法一
import math
for i in range(100,200):
    flag=0
    for j in range(2,round(math.sqrt(i))+1):
        if i%j==0:
            flag=1
            break
    if flag:
        continue
    print(i)

print('n用“else”简化代码n')

#方法二
for i in range(100,200):
    for j in range(2,round(math.sqrt(i))+1):
        if i%j==0:
            break
    else:
        print(i)

💬题目三:统计字符串构成

📄题目要求

用户输入一行字符,该程序可以分别统计出其中英文字母、空格、数字和其它字符的个数。

📄我的分析

该题难度较小,主要考察的是字符串的操作

👉点此查看字符串最全操作方法

📄我的答案

string=input("请输入字符串:")
alp=0
num=0
spa=0
oth=0
for i in range(len(string)):
    if string[i].isspace():
        spa+=1
    elif string[i].isdigit():
        num+=1
    elif string[i].isalpha():
        alp+=1
    else:
        oth+=1
print('空格有%d个' % spa)
print('数字有%d个' % num)
print('字母有%d个' % alp)
print('其它有%d个' % oth)

💬题目四:比赛对手名单

📄题目要求

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,y比,请编写程序找出三队赛手的名单。

📄我的分析

该题比较灵活但是思路主要是找到条件下不重复的三个对手即可。

📄我的答案 

a=set(['x','y','z'])
b=set(['x','y','z'])
c=set(['x','y','z'])
c-=set(('x','y'))
a-=set('x')
for i in a:
    for j in b:
        for k in c:
            if len(set((i,j,k)))==3:
                print('a对%s,b对%s,c对%s'%(i,j,k))

输出结果:
a对y,b对x,c对z

💬题目五:画菱形

📄题目要求

打印出如下图案(菱形):

    *    
   ***   
  *****  
 ******* 
  *****  
   ***   
    * 

📄我的分析

本道题目主要考察的是找规律,解决该题的方法有很多种我选择的是递归调用的方法

📄我的答案

def draw(num):
    a="*"*(2*(4-num)+1)
    print(a.center(9,' '))
    if num!=1:
        draw(num-1)
        print(a.center(9,' '))
draw(4)

输出结果:
    *    
   ***   
  *****  
 ******* 
  *****  
   ***   
    *    

📚结语

📙:别忘了刷题哟😊😊😊👉由此进入免费好用的刷题网站

📙:感谢各位能够看到这里💖💖💖:在鲁迅一篇未发表的文章中说过:“代码看懂了不是懂✨一定要自己实际操作哇✨这样才能更好的理解和吸收。”
最后来一句:一个人可以在任何他怀有无限热忱的事情上成功,让我们一起进步吧✨✨