实用Python程序设计测验汇总(55题)

#Writed by Wangzhimin 

001字符菱形

n=input()
print("  "+n)
print(" "+n*3)
print(""+n*5)
print(" "+n*3)
print("  "+n)

 002字符三角形

n=input()
print("  "+n)
print(" "+n*3)
print(""+n*5)

003输出第二个整数

n=input().split()
print(n[1])

004求三个数的和

n=(input().split())
print(float(float(n[0])+float(n[1])+float(n[2])))

005判断子串

s1=input()
s2=input()
t=s1 in s2
if t==1:  
    print("YES")
else:
    print("NO")

006计算(a+b)*c的值

a,b,c=map(int,input().split())
print((a+b)*c)

007反向输出一个三位数

s=(input())
print(s[2]+s[1]+s[0])

008字符串交换

s=(input())
s2=input()
print(s2[0]+s2[1]+s[2]+s[3])
print(s[0]+s[1]+s2[2]+s2[3])

009字符串中的整数求和

s,s1=input().split()
a=int(s[0]+s[1])
b=int(s1[0]+s1[1])
print(a+b)

010计算2的幂

s=int(input())
t=1
for i in range(1,s+1):
    t=2*t
print(t)

011计算多项式的值

x,a,b,c,d=map(float,input().split())
print("%.7f" % (a*x*x*x+b*x*x+c*x+d))

012奇偶数判断

n=int(input())
if n%2==0:
    print("even")
else:
    print("odd")

013点和正方形的关系

m,n=map(int,input().split())
if m<=1 and m>=-1 and n<=1 and n>=-1:
    print("yes")
else:
    print("no")

014三角形判断

a,b,c=map(int,input().split())
s=(a+b+c)/2
if s>a and s>b and s>c:
    print("yes")
else:
    print("no")

015计算邮资

a,b=input().split()
t=int(a)
if t<=1000:
    m=8;
else:
    m=8+(t-1000)//500*4
    if(t-1000)%500:
        m+=4
if b=='y':
    m=m+5
print("%d" % m)

016分段函数

x=float(input())
if x>=0 and x<5:
    print("%.3f" % (-x+2.5))
elif x>=5 and x<10:
    print("%.3f" % (2-1.5*(x-3)*(x-3)))
else:
    print("%.3f" % (x/2-1.5))

017简单计算器

a,b,c=input().split()
if c=='+':
    print((int(a)+int(b)))
elif c=='-':
    print(int(a)-int(b))
elif c=='*':
    print(int(a)*int(b))
elif c=='/':
    if int(b)==0:
        print("Divided by zero!")
    else:
        print(int(a)//int(b))
else:
    print("Invalid operator!")

018大象喝水

a,b=map(float,input().split())
p=3.14159
t=20000//(p*a*b*b)
m=20000-t*(p*a*b*b)
if m>0:
    print(int(t+1))
else:
    print(int(t))

019苹果和虫子2

a,b,c=map(int,input().split())
t=c//b
if c%b:
    t=t+1
if a>t:
    print(a-int(t))
else:
    print(0)

020A+B Problem

a,b=map(int,input().split())
print(a+b)

021求整数的和与均值

n=int(input())
sum=0
for i in range(n):
    sum=sum+int(input())
print((sum),"%.5f" % (sum/n))

022整数序列的元素最大跨度值

n=int(input())
maxi=0
mini=0xffffffff
t=list((input()).split())
for i in range(n):
    if maxi<int(t[i]):
        maxi=int(t[i])
    if mini>int(t[i]):
        mini=int(t[i])
print(maxi-mini)

023奥运奖牌计数

n=int(input())
j,y,t=0,0,0
for i in range(n):
    a,b,c=map(int,input().split())
    j=j+a
    y=b+y
    t=t+c
print(j,y,t,j+y+t)

024鸡尾酒疗法

n=int(input())
a,b=map(int,input().split())
t=b/a
for i in range(1,n):
    x,y=map(int,input().split())
    if y/x-t>0.05:
        print("better")
    elif t-y/x>0.05:
        print("worse")
    else:
        print("same")

025角谷猜想

n=int(input())
while(n>1):
        if n%2==0:
            print("%d/2=%d"%(n,int(n/2)))
            n=int(n/2)
        else:
            print("%d*3+1=%d"%(n,int(n*3+1)))
            n=n*3+1
if n==1:
    print("End")

026正常血压

n=int(input())
t=0
m=0
for i in range(n):
    a,b=map(int,input().split())
    if a>=90 and a<=140 and b>=60 and b<=90:
        m+=1;
        t=max(t,m)
    else:
        m=0;
print(t)

027数字反转

n=input()
t=len(n)
if n[0]=='-':
    t=t-1
    print("-",end="")
flag=0
for i in range(1,t+1):
    if n[-i]!='0':
        print(n[-i],end="")
        flag=1
    if n[-i]=='0' and flag==1:
         print(n[-i],end="")
        

028求特殊自然数

for i in range(100,777):
    a,b,c=i//49,i%49//7,i%7
    x,y,z=i//81,i%81//9,i%9
    
    if a==z and b==y and c==x:
        print(i)
        print(a,end="")
        print(b,end="")
        print(c)
        print(x,end="")
        print(y,end="")
        print(z)

029数字统计

a,b=map(int,input().split())
n=0
for i in range(a,b+1):
    k=i
    while(k>0):
        if k%10==2:
            n=n+1
        k=k//10
print(n)

030求最大公约数问题

a,b=map(int,input().split())
while(a%b!=0):
    a,b=b,a%b
print(b)

031多少种取法

def ways(m,n,s):
    if n==0 and s==0:
        return 1
    if n==0 and s!=0:
        return 0
    if m<n:
        return 0
    if m>s:
        return ways(s,n,s)
    if m==0:
        return 0
    else:
        return ways(m-1,n-1,s-m)+ways(m-1,n,s)
t=int(input())
for i in range(t):
    m,n,s=map(int,input().split())
    print(ways(m,n,s))

032石头剪刀布

def re(a,b):
    if a==b:
        return 0
    if a==5 and b==0:
        return 1
    if a==0 and b==5:
        return -1
    if a<b:
        return 1
    else:
        return -1
    
n,a,b=map(int,input().split())
sa=input().split()
sb=input().split()
wina=winb=0
pa=pb=0
for i in range(n):
    r=re(int(sa[pa]),int(sb[pb]))
    if r==1:
        wina+=1
    elif r==-1:
        winb+=1
    pa=(pa+1)%a
    pb=(pb+1)%b
if wina>winb:
    print("A")
elif wina==winb:
    print("draw")
else:
    print("B")

033统计数字字符个数

s=input().split()
total=0
for i in s:
    for j in i:
        if j>='0' and j<='9':
            total+=1
print(total)

034大小写字母互换

s=input()
total=0
for j in s:
        if j>='a' and j<='z':
            print(chr(ord(j)-32),end="")
        elif j>='A' and j<='Z':
            print(chr(ord(j)+32),end="")
        else:
            print(j,end="")

035过滤多余的空格

s=input()
total=0
for j in s:
        if j==' ' and total==0:
            print(j,end="")
            total=1
        elif j!=' ':
            print(j,end="")
            total=0

036找第一个只出现一次的字符

 
s=input()
t=len(s)
n=0
for i in range(t):
    for j in range(t):
        if s[i]==s[j] and i==j:
           n=1
           continue
        if(s[i]==s[j] and i!=j):
           n=2
           break
    if j==t-1 and n==1:
        print(s[i])
        break
    if  i==t-1 and n==2:
        print("no")
           

037判断字符串是否为回文

s=input()
x=s[::-1]
if s==x:
    print("yes")
else:
    print("no")

038字符串最大跨距

s=input().split(",")
t=s[0].find(s[1])
m=s[0].rfind(s[2])
l=(m-t-len(s[1]))
if l>=0:
    print(l)
else:
    print(-1)

039找出全部子串位置

n=int(input())

for i in range(n):
    t=0
    s1,s2=map(str,input().split())
    if s1.find(s2)!=-1:
        while(s1.find(s2,t)!=-1):
            t=(s1.find(s2,t))
            print(t,end=" ")
            t=t+len(s2)
            
        print("")
    else:
        print("no")

040万年历

#觉得写起来麻烦,就一直没写,今天休息,弄一下万年历
#有判断输入合法的地方,想了下,就是判断月小于1大于13,和日的问题
#边写边判断,先判断日小于1和大于28,30,31的问题,先用个r表示闰年,0是不闰,1是闰年
#是从程序的第5行开始写的,上面4行是后加的
#弄好Illegal之后,其它判断在else中
#日子数是年*365防数过大%7了,再加上每4闰年减100不闰,多减了,再加400再闰年
#起始想法是公元0年1月1日为星期几(不知道,但要找个从那开始的星期日),但我的days是从那时的周天开始算的
#题目给的日子不好用,还得减==,就用从0年开始的周日,最后倒推减几
#倒数第三行,减几就是调的数,用题目中给的年月日,输入后看是周几,再调的
week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
monday=[0,31,28,31,30,31,30,31,31,30,31,30,31]
n=int(input())
for m in range(n):
    s=input().split()
    year=int(s[0])
    mon=int(s[1])
    day=int(s[2])
    days=0
    r=int(year%4==0 and year%100!=0 or year%400==0)
    if mon==2 and (day<1 or day>28+r) or (mon in [1,3,5,7,8,10,12]) and (day<1 or day>31)\
       or (mon in [4,6,9,11]) and (day<1 or day>30) or mon>12 or mon<1:
        print("Illegal")
    else:
        days=year*365%7+(year//4+year//400-year//100)%7
        for i in range(1,mon):
            days+=monday[i]
        if mon<3:#因为0年就是闰年了,如果输入年是闰年,上面days的值如没到3月,就多加了一天
            days-=r#是闰年,就是1,不是闰年就是0,和平年没关系
        days+=day-1
        t=days%7
        print(week[t])

041成绩排序

n=int(input())
a=[]
for i in range(n):
    s=input().split()
    a.append((s[0],int(s[1])))
a.sort(key=lambda x:(-x[1],x[0]))
for x in a:
    print(x[0],x[1])

042图像模糊处理

import copy
m,n=map(int,input().split())
a=[]
b=[]
for i in range(m):
    s=list(map(int,(input().split())))
    a.append(s)
b=copy.deepcopy(a)
for i in range(1,m-1):
    for j in range(1,n-1):
        b[i][j]=(round((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5))
for i in range(m):
    for j in range(n):
        print(b[i][j],end=" ")
    print("")

043向量点积计算

n=int(input())
s=list(map(int,input().split()))
s1=list(map(int,input().split()))
total=0
for i in range(n):
    total+=s[i]*s1[i]
    
print(total)

044病人排队

n=int(input())
a=[]
for i in range(n):
    s=input().split()
    a.append(s)
for i in range(110,59,-1):
    for j in range(n):
        if i==int(a[j][1]):
            print(a[j][0])
for i in range(n):
    if int(a[i][1])<60:
        print(a[i][0])

045矩阵乘法

m,n,k=map(int,input().split())
a=[]
b=[]
for i in range(m):
    s=list(map(int,input().split()))
    a.append(s)
for i in range(n):
    s=list(map(int,input().split()))
    b.append(s)
for i in range(m):
    for j in range(k):
        l=0
        for t in range(n):
            l+=a[i][t]*b[t][j]
            
        print(l,end=" ")
    print("")

046回文子串

s=input()
t=len(s)
for i in range(2,t+1):
    for j in range(t-1):
        if j+i<=t:
            a=s[j:j+i]
            b=a[::-1]
            if a==b:
                print(a)

047校园食宿预订系统

n,m = map(int,input().split())
dt={}
for i in range(m):
    s=input().split()
    dt[s[0]]=[s[1],s[2]]
ans=0
for i in range(n):
    s=input().split()
    for j in range(3):
        k=dt[s[j]]
        if k[1]!='0':
             ans+=int(dt[s[j]][0])
             dt[s[j]][1]=str(int(dt[s[j]][1])-1)
print(ans)

048找出所有整数

import re
m='[0-9]+'
while True:
    try:
        s = input()
        lst = re.findall(m,s)
        for x in lst:
            print(x)
    except:
        break

049找出所有整数和小数

import re

m='[0-9]+\.[0-9]+|[0-9]+'


while True:
    try:
        s = input()
        lst = re.findall(m,s)
        for x in lst:
            print(x)
    except:
        break

050找出小于100的整数

import re
m = r"(^|[^0-9-])(\d{1,2})([^0-9]|$)"
for i in range(2):
        s = input()
        lst = re.findall(m,s)
        for x in lst:
                print(x[1])

051密码判断

import re
m='[A-Za-z][A-Za-z-_0-9]{7,}\Z'
while True:
    try:
        s = input()
        if re.match(m,s) != None:
            print("yes")
        else:
            print("no")
    except:
        break

052寻找h3

import re
m = \
   '<h3>(.*?)<.h3>'
for x in  re.findall(m,"cdef<h3>abd</h3><h3>bcK</h3><h3>123</h3>KJM"):
    print(x)

053找<>中的数

import re
m='<(0|[1-9][0-9]{0,2})>'
n=int(input())
while n:
    try:
        s = input()
        lst = re.findall(m,s)
        if len(lst)==0:
            print("NONE",end="")
        else:
            for x in lst:
                 print(x,end=" ")
        n=n-1         
        print("")
    except:
        break

054电话号码

import re
n=int(input())
for j in range(n):
    s = input() #下面这行我就不明白
    m = '<(.+?)>(.*?)</\\1>' #难道\\1就是第一个的输入?
    ss=re.findall(m,s)
    if len(ss)==0:
        print("NONE")
    else:
        flag=0 #为第一次输出<>中的字串准备的
        first=0 #为中间输出的准备的标志
        h=0 #是最后虽然有tag,但没有匹配的准备的标志位
        for x in ss:
            m='\([0-9]{1,2}\)-[0-9]{3,}'
            t=re.findall(m,x[1])
            for i in t: #脑子弄糊了,条件都加上了,有待改进啊
                if i[-4:-5:-1]=='-' and flag==0:#一个t就输出一次<>中的
                    print("<" + x[0] + ">", end="")
                    flag=1
                if first==1:# 有了第一次了,就打个,号
                    print(",",end="")
                if i[2:3]==')' and i[-4:-5:-1]=='-':
                    print(i[1:2],end="")#输出中间部分区间号
                    first=1
                    h=1
                elif i[3:4]==')' and i[-4:-5:-1]=='-':
                    print(i[1:3],end="")#输出中间部分区间号
                    first=1
                    h=1
            if flag==1:
                print("</" + x[0] + ">",end="")
                print("")
            flag=0
            first=0        
    if h==0:
         print("NONE")

055时间处理

mon=[0,31,28,31,30,31,30,31,31,30,31,30,31]
while True:
    try:
        s=input().split()# 先想的是输入,就是从这开始,因为有两种输入,以字串的长度来判断是哪个
        n=len(s)#这是依据,是5的话,是一种输入方法
        ss=0
        if n==5: #在这5个中,分别是年,月日和时分,保存下来
            y=int(s[0])
            m=int(s[1])
            r=int(s[2])
            h=int(s[3])
            f=int(s[4])
        else: #另一种输入方法,以分割字串来保存年月日时分
            y=int(s[0][6:10])
            m=int(s[0][0:2])
            r=int(s[0][3:5])
            s1=s[1].split(':')
            h=int(s1[0])
            f=int(s1[1])
            if s[2]=='PM' or s[2]=='pm':
                h=h+12
        s=input().split() #这是输入的第二行了,也以输入的长度来判断
        n=len(s)
        if n==3: #如果是3个字串:就是日 时 分
            r1=int(s[0])
            h1=int(s[1])
            f1=int(s[2])
            ss=0
        else: #一个字串,就是秒 分别求出日 时 分 秒
            r1=int(int(s[0])//(24*60*60))
            h1=int(int(s[0])%(24*60*60)//(60*60))
            f1=int(int(s[0])%(60*60)//60)
            ss=int(s[0])%60
        f=f+f1#从小处着手,算分,大于60,就向时进
        h+=f//60+h1 #加到原时和后时上
        f=f%60
        r1=h//24+r1#时大于24吗
        h=h%24
        if y%4==0 and y%100!=0 or y%400==0:
            mon[2]=29 #看下年是闰年吗,防从1月分开始
        for i in range(1,r1+1):#把每天加上到相应的月中
            r+=1
            if r>mon[m]:#大于当月的天数
                r=1 #日为1
                m=m+1 #月加1
            if m>12: #如果超过年了
                y+=1
                m=1
                yun=int(y%4==0 and y%100!=0 or y%400==0)
                if yun:
                    mon[2]=29
                else:
                    mon[2]=28
                
        print("%d-%02d-%02d %02d:%02d:%02d"%(y,m,r,h,f,ss))
    except:
        break

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值