PTA python程序设计04-选择与循环

7-1 身体质量指数

(高教社,《Python编程基础及应用》习题6-3)
身体质量指数(英文为Body Mass Index,简称BMI),其值为体重除以身高的平方。体重单位为千克,身高 单位为米。BMI是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。下面是16岁以上人群的BMI图 表:

BMI 解释
BMI<18 超轻
18<=BMI<25 标准
25<=BMI<27 超重
27<=BMI 肥胖
编写一个程序,输入用户的体重(Kg)和身高(米),显示其BMI值,并作出解释性评价。

输入格式:
体重,身高

输出格式:
超轻/标准/超重/肥胖之一。

输入样例:
70,1.75
输出样例:
标准

a =list(map(float,input().split(",")))
s = a[0]/(a[1]*a[1])
if s<18:
    print("超轻")
elif s>=18 and s<25:
    print("标准")
elif s>=25 and s<27:
    print("超重")
else:
    print("肥胖")

7-2 计算分段函数f(x)的值

计算下列分段函数f(x)的值:

在这里插入图片描述

输入格式:
输入在一行中给出实数x。

输出格式:
在一行中按“f(x)=result”的格式输出,其中result都保留三位小数(提示:使用.format()函数)。

输入样例1:
12.34
输出样例1:
f(12.34)=0.081
输入样例2:
0
输出样例2:
f(0.0)=0.000

x = float(input())
if x==0 :
    print(f"f({x})=0.000",end="")
else:
    b=1/x
    print(f"f({x})=%.3f" % b,end="")

7-3 程序员买西瓜

老婆给当程序员的老公打电话:“下班顺路买10个包子带回来,如果看到卖西瓜的,就买1个。” 当晚,程序员老公手捧一个包子进了家门… 老婆怒道:“你怎么就买了一个包子?!” 老公答曰:“因为看到卖西瓜的。”。 用’Y’表示看到卖西瓜的,用’N’表示没有看到卖西瓜的,用编写一个程序判断今天程序员买了多少个包子. 如果输入的既不是’Y’也不是’N’,则输出:‘error’

输入格式:
在一行中输入Y或者N表示是否看到卖西瓜的。

输出格式:
对每一组输入,在一行中输出程序员购买的包子的数量或者’error’。

输入样例:
在这里给出一组输入。例如:

Y
输出样例:
在这里给出相应的输出。例如:

1
输入样例:
在这里给出一组输入。例如:

N
输出样例:
在这里给出相应的输出。例如:

10
输入样例:
在这里给出一组输入。例如:

x
输出样例:
在这里给出相应的输出。例如:

error

a = input()
if a=='Y':
    print("1")
elif a=='N':
    print("10")
else:
    print("error")

7-4 超速处罚[加测试数据]

按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。

输入样例1:
65 60
输出样例1:
OK
输入样例2:
110 100
输出样例2:
Exceed 10%. Ticket 200
输入样例3:
200 120
输出样例3:
Exceed 67%. License Revoked

b,a= list(map(int,input().split(" ")))
if b>=a+a*0.5:
    x=(b-a)/a*100
    y="%.0f" % x
    print(f"Exceed {y}%. License Revoked")
elif b>=a+a*0.1 and b<a+a*0.5:
    x=(b-a)/a*100
    y = "%.0f" % x
    print(f"Exceed {y}%. Ticket 200")
else:
    print("OK")

7-5 数据比较

实现一个程序,用户输入四个数值(整数或浮点数)。先计算前三个数的平均值,然后把平均值与第四个数进行比较。如果相等,则程序在屏幕上输出“Equal”,如果平均值大于第四个数则输出“Larger”,否则输出“Smaller”。

输入格式:
输入四个数值

输出格式:
输出“Equal”或“Larger”或“Smaller”

输入样例:
在这里给出一组输入。例如:

4.5
3
3
3.5
输出样例:
在这里给出相应的输出。例如:

Equal

a = float(input())
b = float(input())
c = float(input())
d = float(input())
e = (a+b+c)/3
if d==e:
    print("Equal")
elif e>d:
    print("Larger")
else:
    print("Smaller")

7-6 运输打折问题
某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:

在这里插入图片描述

其中基本运输费用为每吨每公里1元,现请你帮助该运输公司设计自动计费程序,帮助会计人员计算运输费用。

输入格式:
输入每次运输的载重(吨)、里程(公里)。

输出格式:
输出其运输费用,精确到元。

输入样例:
在这里给出一组输入。例如:

1 200
输出样例:
在这里给出相应的输出。例如:

200
输入样例:
在这里给出一组输入。例如:

10 2500
输出样例:
在这里给出相应的输出。例如:

22500

t,s= list(map(eval,input().split(" ")))
if s<250:
    a=s*t
    print("%.0f" % a )
elif s>=250 and s<500:
    a=s*t-s*t*0.02
    print("%.0f" % a)
elif s>=500 and s<1000:
    a=s*t-s*t*0.05
    print("%.0f" % a)
elif s>=1000 and s<2000:
    a= s*t-s*t*0.08
    print("%.0f" % a)
elif s>=2000 and s<3000:
    a=s*t-s*t*0.1
    print("%d" % a)
elif s>=3000:
    a = s*t-s*t*0.15
    print("%.0f" % a)

7-7 jmu-python-回文数判断(5位数字)

本题目要求输入一个5位自然数n,如果n的各位数字反向排列所得的自然数与n相等,则输出‘yes’,否则输出‘no’。

输入格式:
13531

输出格式:
yes

输入样例1:
13531
输出样例1:
yes
输入样例2:
13530
输出样例2:
no

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

7-8 jmu-python-分段函数

本题目要求计算下列分段函数f(x)的值(x为从键盘输入的一个任意实数):

在这里插入图片描述

输入格式:
输入在一行中给出实数 x。

输出格式:
在一行中按“f(x)=result”的格式输出,其中x与result都保留两位小数。

输入样例:
0.76
输出样例:
f(0.76)=1.20

x=eval(input())
if x<3:
    x="%.2f" % x
    print(f"f({x})=1.20")
elif x==3:
    x = "%.2f" % x
    print(f"f({x})=10.00")
else:
    a="%.2f" % (2*x+1)
    x = "%.2f" % x
    print(f"f({x})="+a)

7-9 jmu-python-凯撒密码加密算法

编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。

输入格式:
接收两行输入,第一行为待加密的明文,第二行为密钥k。

输出格式:
输出加密后的密文。

输入样例:
在这里给出一组输入。例如:

Hello World!
3
输出样例:
在这里给出相应的输出。例如:

Khoor Zruog!

a = input()
b = int(input())
c = ''
for i in a:
    if i.isalpha():
        temp = ord(i)+b
        if chr(temp).isalpha():
            c += chr(temp)
        else:
            c += chr(temp-26)
    else:
        c += i
print(c,end="")

7-10 奖金计算,循环与多分支

(高教社,《Python编程基础及应用》习题6-5)
企业发放的奖金根据利润提成。利润低于或等于100,000元的,奖金可提10%;利润高于100,000元,低于200,000(100,000 < p <=200,000)时,100,000元及以内部分按10%提成,高于100,000元的部分,可提成7.5%; 200,000 < p <= 400,000时,200,000元及其以内的部分仍按上述办法提成(下同),高于200,000元的部分按5%提成; 400,000 < p <=600,000元时,高于400,000元的部分按3%提成; 600,000 < p <=1,000,000时,高于600,000元的部分按1.5%提成; p >1,000,000时,超过1,000,000元的部分按1%提成。 按上述需求,编写一个程序,该程序从键盘输入当月利润p,求应发奖金数。

输入格式:
利润总额(浮点数)

输出格式:
奖金数(保留两位小数)

输入样例:
230000
输出样例:
19000.00

a = float(input())
if a<=100000:
    b=a*0.1
elif a>100000 and a<=200000:
    b=100000*0.1+(a-100000)*0.075
elif a>200000 and a<=400000:
    b=100000*0.1+100000*0.075+(a-200000)*0.05
elif a>400000 and a<=600000:
    b=100000*0.1+100000*0.075+200000*0.05+(a-400000)*0.03
elif a>600000 and a<=1000000:
    b=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(a-600000)*0.015
elif a>1000000:
    b=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(a-1000000)*0.01
print("%.2f" % b)

7-11 查找最后一个250

1.jpg

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数。

输出格式:
在一行中输出最后一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。如果没有出现“250”这个数,输出为0。

输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
7

a = map(int,input().split(" "))
b=1
c=0
for i in a :
    if i==250:
        c=b
        b=b+1
    else:
        b=b+1
print(c)

7-12 某日期为年度第多少天

输入任意“年-月-日”格式的日期,输出这是该年度的第多少天。

输入格式:
输入任意“年-月-日”格式的日期。

输出格式:
输出这个日期是该年度的第多少天。

输入样例:
在这里给出一组输入。例如:

2020-11-11
输出样例:
在这里给出相应的输出。例如:

dayofyear = 315

# a=input().split("-")
# d=[]
# for i in a:
#     d.append(int(i))
# b=[1,3,5,7,8,10,12]
# c=[4,6,9,11]
# s=[2]
# sum=0
# if (d[0]%4==0 and d[0]%100!=0) or d[0]%400==0:
#     for i in range(1,d[1]):
#         if i in b:
#             sum=sum+31
#         elif i in c:
#             sum=sum+30
#         elif i in s:
#             sum=sum+29
# else:
#     for i in range(1,d[1]):
#         if i in b:
#             sum=sum+31
#         elif i in c:
#             sum=sum+30
#         elif i in s:
#             sum=sum+28
# print("dayofyear =",sum+d[2]-1,end="")
#以上代码判断了闰年,此题没有那么详细,所以要用下面的代码才能完成PTA测试
days = 0
y = input().split('-')
for i in range(1, int(y[1])):
    if i == 2 : #判断闰年
        days += 28
    elif i in [1, 3, 5, 7, 8, 10, 12]:
        days += 31
    else:
        days += 30
print('dayofyear =', days+int(y[2]),end='')

7-13 打印数字实心矩形

打印数字和星号组成的实心矩形,外框是数字,内部是星号。

输入格式:
输入一个整数n(n>0)。

输出格式:
打印一个数字矩形,矩形的边框都是整数n,要求行和列都是n个数字。(注意:没有空行)而矩形内部都是星号。

输入样例:
在这里给出一组输入。例如:

5
输出样例:
在这里给出相应的输出。例如:

55555
5***5
5***5
5***5
55555
输入样例2:
在这里给出一组输入。例如:

2
输出样例2:
在这里给出相应的输出。例如:

22
22
输入样例3:
在这里给出一组输入。例如:

1
输出样例3:
在这里给出相应的输出。例如:

1

n = int(input())
for i in range(1, n+1):
    for j in range(1, n+1):
        if i > 1 and i < n and j >1 and j < n:
            print('*',end='')
        else:
            print(n, end='')
    if i != n:
        print()

7-14 判断素数

判断一个给定的正整数是否素数

输入格式:
输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于1000000 的需要判断的正整数

输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:
在这里给出一组输入。例如:

2
11
111
输出样例:
在这里给出相应的输出。例如:

Yes
No

a=int(input())
b=1
d=[]
x=0
while b<=a:
    c=int(input())
    d.append(c)
    b=b+1
for i in d:
    for j in range(2,i-1):
        if i%j==0:
            x=x+1
        else:
            continue
    if x!=0:
        print("No")
    else:
        print("Yes")

7-15 水仙花数(20 分)

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。

本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N(3≤N≤5)

输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
在这里给出一组输入。例如:

3
输出样例:
在这里给出相应的输出。例如:

153
370
371
407

import math
n=int(input())
for i in range(int(math.pow(10,n-1)),int(math.pow(10,n))):  #pow() 方法返回 xy(x 的 y 次方) 的值。
    sum=0
    j=i
    while(j>=1):
        sum=sum+math.pow(j%10,n)
        j=j//10
    if(sum==i):
        print('{:d}'.format(i))

7-16 求满足条件的斐波那契数

斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。

输入格式:
在一行输人一个正整数n(n>=10)。

输出格式:
在一行输出大于n的最小斐波那契数。

输入样例:
在这里给出一组输入。例如:

10
输出样例:
在这里给出相应的输出。例如:

13

a=1
b=1
c=int(input())
while 1:
    d=a+b
    a=b
    b=d
    if d>c:
        break
    else:
        continue
print(d)

7-17 求前n项的阶乘之和

从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+…+n!的和

输入格式:
输入一个大于1的整数。例如:输入20。

输出格式:
输出一个整数。例如:2561327494111820313。

输入样例:
在这里给出一组输入。例如:

20
输出样例:
在这里给出相应的输出。例如:

2561327494111820313

a=int(input())
sum=0
b=1
for i in range(1,a+1):
    b=b*i
    sum=sum+b
print(sum)

7-18 偶数位特殊序列和

给定不超过9的正整数a,给定正整数n,n是偶数,4<=n<=18,要求编写程序求aa+aaaa+aaaaaa+⋯+aa⋯a(n个a)之和。

输入格式:
在一行中给出不超过9的正整数a和n。

输出格式:
在一行中输出对应的和。

输入样例:
在这里给出一组输入。例如:

1 4
输出样例:
在这里给出相应的输出。例如:

1122

a,n=map(int,input().split(" "))
sum=0
b=a
for i in range(1,n):
    a=a*10+b
    if i%2!=0:
        sum=sum+a
    else:
        continue
print(sum)

7-19 判断完数

判断一个正整数是否为完数。完数定义:一个数的所有因子(包括1)之和等于它自身,这个数就是完数。比如6=1+2+3,6是完数。

输入格式:
例如:输入一个正整数 6

输出格式:
输出:

6=1+2+3

输入样例:
在这里给出一组输入。例如:

6
输出样例:
在这里给出相应的输出。例如:

6=1+2+3
输入样例:
在这里给出一组输入。例如:

28
输出样例:
在这里给出相应的输出。例如:

28=1+2+4+7+14

a=int(input())
b=[]
sum=0
x=0
for i in range(1,a):
    if a%i==0:
        sum=sum+i
        b.append(int(i))
    else:
        continue
if sum==a:
    print(f"{a}=",end="")
    for i in b:
        if x< (len(b)-1):
            print(f"{i}",end="+")
            x=x+1
        else:
            print(f"{i}")

7-20 成绩统计

现有某班级Python考试成绩,请你帮老师做一下成绩统计,找出最高分、最低分,算出平均分,统计出不及格人数。

输入格式:
输入在第一行给出班级人数n,第二行为n个学生的成绩(0~100之间的整数),中间用空格分隔。

输出格式:
输出共四行,分别为最高分、最低分、平均分和不及格人数,其中平均分保留1位小数。

输入样例:
10
80 95 75 85 90 55 66 88 100 58
输出样例:
Max: 100
Min: 55
Ave: 79.2
Fail: 2

import  math
n = eval(input())
lis = list((input().split()))
for i in range(len(lis)):
 lis[i] = int(lis[i])
print("Max: "+str(max(lis)))
print("Min: "+str(min(lis)))
sum = 0
fail = 0
for i in range(0,n):
   if(lis[i] < 60):
       fail += 1
   sum += lis[i]
print("Ave: "+str(format(sum/n,'.1f')))
print("Fail: "+str(fail))
#以上代码有点不严谨,当n=3时,你输入5个也是没有问题的,并且最大值、最小值都会从输入的所有的数中选出,只是求平均值时只会取前n个数的和。***不过在PTA中这段代码是可以运行通过的。***

7-21 求“厉害”数

所谓“厉害”数,是指其各位数字的5次方等于该数本身。编程输出所有长度不超过n位的正整数中的“厉害”数。 例如:4151=4
​5
​​ +1
​5
​​ +5
​5
​​ +1
​5
​​

输入格式:
一个整数n (1<=n<=6)

输出格式:
每行一个“厉害”数

输入样例:
4
输出样例:
1
4150
4151

a=int(input())
x=pow(10,a)+1
for i in range(1,x):
    b=i
    sum = 0
    while b!=0:
        c=b%10
        d=pow(c,5)
        sum=sum+d
        b=b//10
    if sum==i:
        print(i)

7-22 显示菱形图形

显示菱形图形,每行的宽度是11。

输入格式:
输入显示的行数,行数在1,3,5,7,9,11中取值

输出格式:
菱形图形,每行的宽度是11

输入样例1:
在这里给出一组输入。例如:

5
输出样例1:
在这里给出相应的输出。例如:

在这里插入图片描述

输入样例2:
在这里给出一组输入。例如:

11
输出样例2:
在这里给出相应的输出。例如:

在这里插入图片描述

n=int(input())
num=int(n/2)
a=5
for i in range(0,num):
        print(' '*(a-i-1),'*'*(i*2+1),' '*(a-i-1))
if num==5:
        print('*'*11)
        num=num-1
for i in range(num,-1,-1):
    print(' '*(a-i-1),'*'*(i*2+1),' '*(a-i-1))

7-23 输出<=n的全部回文数 (高教社,《Python编程基础及应用》习题4-5)

数字121从左往右读与从右往左读是一样的,这种数称为回文数。请使用for循环以及切片方法设计一个程序, 找出>=0并且<=n的全部回文数。

注意:单个的数字0,数字1,… 数字9也认为是回文数。

输入格式:
n

输出格式:
多行输出,一行一个数

输入样例:
13
输出样例:
0
1
2
3
4
5
6
7
8
9
11

a=int(input())
for i in range(0,a+1):
    b=i
    d=[]
    e=[]
    if i==0:
        print(i)
    else:
        while b>0:
            c=b%10
            d.append(c)
            b=b//10
        e=list(reversed(d))
        if e==d:
            print(i)

7-24 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8)

输入一个列表,删除其中的重复值,再输出。

要求
假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。 不同元素在列表中的相对位置不应被改变。

输入格式:
[元素1, 元素2, … , 元素n]

输出格式:
[元素1,元素2, … , 元素k]

输入样例:
[4,3,2,3,2,4,True]
输出样例:
[3, 2, 4, True]
提示:将形如"[1,3,5]"的字符串转换成列表可以使用eval()函数。 注意,输出格式应与输出样例一致,涉及空格,逗号等。

str=input()
l=eval(str)
ll=list(set(l))
d=[]
for i in range(len(l)):
    if l[len(l)-1-i] in ll and not l[len(l)-1-i] in d:
        d.append(l[len(l)-1-i])
    if len(d)==len(ll):
        break
d.reverse()
print(list(d))

7-25 输出摄氏-华氏温度转换表

输入2个正整数lower和upper(-20<=lower<=upper<=50),表示摄氏范围。请输出一张取值范围为[lower,upper]、 且每次增加2摄氏度的摄氏-华氏温度转换表。温度转换的计算公式: F=C×1.8+32 其中:C表示摄氏温度,F表示华氏温度。

输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。

输出格式:
第一行输出:“celsius□□□□fahr”

接着每行输出一个摄氏温度celsius(整数)与一个华氏温度fahr(占据14个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

输入样例1:
在这里给出一组输入。例如:

2 9
输出样例1:
在这里给出相应的输出。例如:

celsius fahr
2 35.6
4 39.2
6 42.8
8 46.4
输入样例2:
在这里给出一组输入。例如:

2 51
输出样例2:
在这里给出相应的输出。例如:

Invalid.

n,m = input().split(" ")
n = eval(n)
m = eval(m)
a = 0
if n>m or n<-20 or m>50:
    print("Invalid.",end="")
elif n<=m:
    print("celsius    fahr")
    a = n
    while a<=m :
        if a==m or a==m-1:
            print("%d          %.1f" % (a, (a * 1.8 + 32)),end="")
            a+=2
        else:
            print("%d          %.1f" %(a,(a*1.8+32)))
            a+=2

7-26 找出肇事者,循环与布尔逻辑(高教社,《Python编程基础及应用》习题6-6)

在视线不太好的黑夜一司机撞伤行人之后逃逸,有3个目击者记住了该车的部分车号特征。 甲说:“车牌号的前两位相同,且末位数是奇数”;乙说:“车牌号的后两位加起来等于5”; 丙说:“车牌号是一个N位数,并且能被3整除”。请你写一个程序,该程序接受一个正整数N(>=3), 找出肇事车可能的车牌号。

输入格式:
一个>=3的正整数

输出格式:
全部可能的车牌号(一行一个,按递增序)

输入样例:
3
输出样例:
441

a = int(input())
b = 10 ** (a-1)
for i in range(b, b*10):
    one = i // b
    two = i // (b / 10) % 10
    end_one = i % 10
    end_two = i // 10 % 10
    if(one == two and end_one + end_two == 5 and i % 3 == 0 and end_one % 2 == 1):
        print(i)

7-27 统计输入字符串中的单词个数及单词的平均长度(高教社,《Python编程基础及应用》习题7-7)

编写一个程序,接受用户输入的一行英文句子(假设该句子仅由英文单词及空格构成,不包括逗号等符号),统计并输出该行句子包含的单词个数及单词的平均长度。

输入格式:
单词1 单词2 … 单词n

输出格式:
单词个数,单词平均长度(保留两位小数)

输入样例:
aaa bbb ccccccccccc
输出样例:
3,5.67

l = input().split(' ')
avg = float(0)
for i in l:
    avg += len(i)
print(len(l), end=',')
print('%.2f'%(avg/len(l)))

7-28 输入半径(大于0),计算圆面积-math库

本题目要求输入半径(大于0),使用math库中的pi常量来计算圆面积。 注意:如果输入半径的数据不符合条件,则重复输入直到满足条件才进入后续的计算。

输入格式:
输入一个数。

输出格式:
半径为result1的圆的面积是result2

其中:

result1是半径

result2是圆面积,输出宽度为 10,保留5位小数

输入样例:
在这里给出一组输入。例如:

5
输出样例:
在这里给出相应的输出。例如:

半径为5的圆的面积是 78.53982

import math
while 1:
    a = int(input())
    if a>0:
        break
b=a*a*math.pi
if b>=100 and b<1000:
    print("半径为{}的圆的面积是 {:.5f}".format(a, b), end="")
elif b>1000 and b<10000:
    print("半径为{}的圆的面积是{:.5f}".format(a, b), end="")
elif b<100:
    print("半径为{}的圆的面积是  {:.5f}".format(a, b), end="")

7-29 班级排队

小杨是班里新高一的班长,班主任王老师给小杨布置了一个任务,要求将班 里男生和女生分别从矮到高排序,女生排在男生前面。

输入格式:
第一行输入一个正整数 n,表示班级的人数,1<=n<=5000。

第二行输入 n 个整数,表示班级每个人的身高,单位 cm。

第三行输入 n 个数,0 表示男生,1 表示女生。

输出格式:
排序后每个人的身高。

输入样例:
10
159 187 176 155 163 167 179 182 160 167
1 0 0 1 0 1 1 0 1 0
输出样例:
155 159 160 167 179 163 167 176 182 187
评测用例规模与约定
对于 20%的评测用例,1≤n≤10。 对于 50%的评测用例,1≤n≤100。 对于 80%的评测用例,1≤n≤1000。 对于所有评测用例,1≤n≤10000。

n = int(input())
l = input().split(' ')
ll = input().split(' ')
male = []
female = []
for i in range(n):
    if ll[i] == '0':
        male.append(l[i])
    else:
        female.append(l[i])
male.sort()
female.sort()
for i in female:
    print(i, end=' ')
for j in range(len(male)):
    if j != len(male)-1:
        print(male[j], end=' ')
    else:
        print(male[j])

7-30 逢七拍手游戏

逢七拍手游戏规则是:从1 开始顺序数数,数到有包含有7或者7的倍数的时候拍手。编写程序实现逢七拍手游戏,输入整数n ,输出 n 以内(包含n)的需要拍手的数字,数字之间用1个空格分隔。

输入格式:
输入 一个整数

输出格式:
输出满足条件的所以数据,用空格分隔

输入样例:
30
输出样例:
7 14 17 21 27 28

a=int(input())
for i in range(1,(a+1)):
    b=i
    d = []
    if i%7==0:
        print(i,end=" ")
    else:
        while b>0:
            c=b%10
            d.append(int(c))
            b=b//10
        if 7 in d:
            print(i,end=" ")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值