【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))

输入示例

【Python百日刷题计划】Day10~一些编程题练习_第1张图片

题目二 :判断素数个数

题目要求

判断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)

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

结语

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

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

【Python百日刷题计划】Day10~一些编程题练习_第2张图片

你可能感兴趣的:(#,【周周Python习题集】,python)