pat乙级考试python3

 

1001 害死人不偿命的(3n+1)猜想 (15 分):

重点:

(请看清题目的)主要问题对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半

代码:

sum=0
n= int(input())
while n!=1 :
    if((n%2)==0):
        n=(n/2)
        sum+=1
    else :
        n=n*3+1
print(sum)

1002 写出这个数 (20 分):

代码:

switch ={
    1:"yi",
    2:"er",
    3:"san",
    4:"si",
    5:"wu",
    6:"liu",
    7:"qi",
    8:"ba",
    9:"jiu",
    0:"ling"}
n= int(input())
sum=0
n=str(n)
for i in range(len(n)):
    sum+=int(n[i])
sum=str(sum)
s=""
i=0
for i in range(len(sum)):
    if i!=0:
        s+=" "+switch[int(sum[i])]
    else:
        s+=switch[int(sum[i])]
    i+=1
print(s)

1004 成绩排名 (20 分):

没啥大问题  就是选取好用那种数据类型

n=int(input())
s=[]
max1=["",0]
min1=["",100]
for i in range(n):
    r=input()
    s+=r.split()
for i in range(1,n+1):
    if int(s[i*3-1])<=min1[1]:
        min1[1]=int(s[i*3-1])
        min1[0]=i
    if int(s[i*3-1])>=max1[1]:
        max1[1]=int(s[i*3-1])
        max1[0]=i
for i in range(1):
    print(s[max1[0]*3-3],s[max1[0]*3-2])
    print(s[min1[0]*3-3],s[min1[0]*3-2])

1006 换个格式输出整数 (15 分):

switch ={
    2:"S",
    3:"B"}
n=str(input())
s=""
sum=len(n)
for i in range(sum):
    if i!=sum-1:
        s+=switch[sum-i]*int(n[i])
    else:
        for j in range(int(n[i])):
            s+=str(j+1)
print(s)

1011 A+B 和 C (15 分):

重点:给的整型的数据类型  灵活定义数据类型

n=int(input())
a=[]
for i in range(n):
    s=input()
    s = s.split()
    a.append(str((float(s[0])+float(s[1])>float(s[2]))).lower())
for i in range(n):
    print("Case #"+str(i+1)+":",a[i])

1015 德才论 (25 分):

始终发现有三个测试点运行超时。。。。。。我己经没有办法了

c=input().split()
n,c1,c2=int(c[0]),int(c[1]),int(c[2])
hh=[]
hl=[]
ll=[]
l=[]
a=[]
b=[]
for i in range (n):
    s=input().split()
    if int(s[1])>=c1 and int(s[2])>=c1 :
        if int(s[1])>=c2 and int(s[2])>=c2:
            hh.append(s)
        elif int(s[1])>=c2:
            hl.append(s)
        elif  int(s[1]) >=int(s[2]):
            ll.append(s)
        else:
            l.append(s)
def paixu(a=[]):
    g=len(a)
    for i in range (g):
        for j in range(i+1,g):
            if int(a[i][1])+int(a[i][2])<int(a[j][1])+int(a[j][2]):
                b=a[i]
                a[i]=a[j]
                a[j]=b
            elif int(a[i][1])+int(a[i][2])==int(a[j][1])+int(a[j][2]):
                if int(a[j][1])>=int(a[i][1]):
                    b = a[i]
                    a[i] = a[j]
                    a[j] = b
paixu(hh)
paixu(hl)
paixu(ll)
paixu(l)
hh=hh+hl+ll+l
count=len(hh)
print(count)
for h in range(count):
    for k in range(3):
        if k==2:print(hh[h][k])
        else:print(hh[h][k],end=" ")

1020 月饼 (25 分):

重点:只有种类和需求量是整数

n=input().split()
zl,big=int(n[0]),int(n[1])
a=[]
k=0
sum=0.00
b=[]
for i in range(2):
    s=input().split()
    a.append(s)
for i in range(zl):
    b.append(float(a[1][i])/float(a[0][i]))
a.append(b)
c=sorted(b,reverse=True)
while big>0:
    h=a[2].index(c[k])
    if big>float(a[0][h]):
        sum=sum+float(a[1][h])
        big=big-float(a[0][h])
    else :
        sum=sum+float(big/float(a[0][h]))*float(a[1][h])
        big=big-float(a[0][h])
    k += 1
print('%.2f' % sum)
exit(0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值