python 程序设计代码


程序设计竞赛入门:python版 黄龙军 书籍算法代码

第一章

例1.5.1 a+b (处理T次)

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个整数a、b。

输出格式:
对于每组测试,输出一行,包含一个整数,表示a、b之和。

输入样例:
3
1 2
3 4
5 6
输出样例:
3
7
11

点击查看代码
T=int(input())
for i in range(T):
    a,b=input().split()
    c=int(a)+int(b)
    print(c)

例1.5.2 a+b (处理到特值结束)

求两个整数之和。

输入格式:
测试数据有多组。每组测试输入两个整数a、b,当a、b同时为0时,表示输入结束。

输出格式:
对于每组测试,输出一行,包含一个整数,表示a、b之和。

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

点击查看代码
while True:
    a,b=input().split()
    if a=='0' and b=='0':
        break
    c=int(a)+int(b)
    print(c)

例1.5.3 a+b (处理到文件尾)

求两个整数之和。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入两个整数a、b。

输出格式:
对于每组测试,输出一行,包含一个整数,表示a、b之和。

输入样例:
1 2
3 4
5 6
输出样例:
3
7
11

点击查看代码
try:
    while True: #True要大写
        a,b=input().split()
        c=int(a)+int(b)
        print(c)
except EOFError:pass

例1.6.1 输出乘法式子

输入两个整数,输出如输出样例所示的乘法式子。

输入格式:
输入两个整数a,b。

输出格式:
输出a*b=c,其中a,b是输入的整数,c是a与b的乘积。

输入样例:
2 5
输出样例:
2*5=10

点击查看代码
a,b=input().split()
a=int(a)
b=int(b)
c=a*b
print("%d*%d=%d"%(a,b,c))

例1.6.2 输出漏斗图形

输出如样例输出中所示的漏斗图形。

输入样例:

输出样例:

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********
点击查看代码
n=int(5)
for i in range(2*n-1):
    if i=n:
        for j in range(n-i+3):
            print(" ",end="")
        for j in range(2*(i-n)+3):
            print("*",end="")
        print()

第二章

例2.5.1 求矩形面积

已知一个矩形的长和宽,计算该矩形的面积。矩形的长和宽用整数表示,由键盘输入。

输入格式:
输入在一行中给出2个绝对值不超过1000的整数A和B,表示矩形的长和宽。

输出格式:
在一行中输出矩形的面积。

输入样例:
4 3
输出样例:
12

点击查看代码
a,b=map(int,input().split())
if abs(a)<1000 and abs(b)<1000:
    print(a*b)

例2.5.2 求圆周长和面积

已知一个圆的半径,计算该圆的周长和面积,结果保留2位小数。半径用实数表示,由键盘输入。设圆周率等于3.14159。

输入格式:
输入在一行中给出1个实数r,表示圆的半径。

输出格式:
在一行中输出圆的周长和面积,结果保留2位小数。数据之间留一个空格。

输入样例:
3
输出样例:
18.85 28.27

点击查看代码
r=float(input())
pi=3.14159
c=2*pi*r
s=pi*r**2
print("%0.2f %0.2f"%(c,s))

例2.5.3 温度转换

输入一个华氏温度f(整数),要求根据公式c=5(f-32)/9计算并输出摄氏温度,其中f由键盘输入,结果保留1位小数。

输入格式:
输入在一行中给出1个绝对值不超过1000的整数f,表示华氏温度。

输出格式:
在一行中输出摄氏温度,结果保留1位小数。

输入样例:
100
输出样例:
37.8

点击查看代码
f=int(input())
if abs(f)<1000:
    c=float(5*(f-32)/9)
    print("%0.1f"%c)

例2.5.4 反序显示一个四位数

从键盘上输入一个四位整数,将结果按反序显示出来。

输入格式:
输入在一行中给出1个四位整数a。

输出格式:
在一行中输出a的反序数。

输入样例:
1234
输出样例:
4321

点击查看代码
a=list(input())
a.reverse()
a="".join(a)
print(a)

例2.5.5 交换两实数的整数部分

输入两个实数,将其整数部分交换后输出,结果保留2位小数。

输入格式:
输入2个实数A和B。

输出格式:
输出交换整数部分之后的两个实数。数据之间以一个“,”分隔。

输入样例:
23.45 54.22
输出样例:
54.45,23.22

点击查看代码
a,b=map(float,input().split())
za=int(a)
zb=int(b)
la=a-za
lb=b-zb
fa=zb+la
fb=za+lb
print("%.2f,%.2f"%(fa,fb))

例2.5.6 英文字母的大小写转换

输入一个大写字母c1和一个小写字母c2,把c1转换成小写,c2转换成大写,然后输出。

输入格式:
输入在一行中给出2个字母,第1个是大写字母c1,第2个是小写字母c2。

输出格式:
在一行中输出把c1转换成小写,c2转换成大写后的结果。数据之间留一个逗号。

输入样例:
Y e
输出样例:
y,E

点击查看代码
a,b=input().split()
a=a.lower()
b=b.upper()
print("%s,%s"%(a,b))

习题2.2.1 4位整数的数位和

输入一个4位数的整数,求其各数位上的数字之和。

输入格式:
输入在一行中给出1个4位的正整数n。

输出格式:
在一行中输出n的各数位上的数字之和。

输入样例:
1234
输出样例:
10

点击查看代码
a=input()
sum=0
for i in range(len(a)):
    a=int(a)
    sum+=a%10
    a=a//10
print(sum)

习题2.2.2 5门课的平均分

输入5门课程成绩(整数),求平均分(结果保留1位小数)。

输入格式:
输入在一行中给出5个整数,表示5门课成绩。

输出格式:
在一行中输出5门课的平均分(结果保留1位小数)。

输入样例:
66 77 88 99 79
输出样例:
81.8

点击查看代码
a,b,c,d,e=map(int,input().split())
avg=(a+b+c+d+e)/5
print("%0.1f"%avg)

习题2.2.3 打字

小明1分钟能打m字,小敏1分钟能打n字,两人一起打了t分钟,总共打了多少字。

输入格式:
输入3个整数m,n,t。

输出格式:
输出小明和小敏t分钟一共打的字数。

输入样例:
65 60 2
输出样例:
250

点击查看代码
m,n,t=map(int,input().split())
sum=m*t+n*t
print(sum)

习题2.2.4 欢迎信息

根据输入的姓名(可能包含空格,长度不超过12),输出欢迎信息,即在姓名之前添加“Hello,”。

输入格式:
输入在一行中给出1个字符串s(可能包含空格,长度不超过12),表示输入的姓名。

输出格式:
根据输入的姓名(可能包含空格,长度不超过12),输出欢迎信息,即在姓名s之前添加“Hello,”(参看样例输出)。

输入样例:
Jack
输出样例:
Hello,Jack

点击查看代码
# 二章习题 4
a=input()
print("Hello,"+a)

习题2.2.5 求串长
输入一个字符串(可能包含空格,长度不超过20),输出该串的长度。

输入格式:
输入在一行中给出1个长度不超过20的字符串s。

输出格式:
在一行中输出s的串长。

输入样例:
welcome to acm world
输出样例:
20

点击查看代码
s=input()
print(len(s))

习题2.2.6 求子串

输入一个字符串,输出该字符串的子串。

输入格式:
首先输入一个正整数k,然后是一个字符串s(可能包含空格,长度不超过20),k和s之间用一个空格分开。(k大于0且小于等于s的长度)

输出格式:
在一行中输出字符串s从头开始且长度为k的子串。

输入样例:
10 welcome to acm world
输出样例:
welcome to

点击查看代码
a=input().split()
k=int(a[0])
a=a[1:]
a=list(a)
a=" ".join(a)
a=str(a)
b=a[:k]
print(b)

习题2.2.7 查找字符串

在一行上输入两个字符串s和英文字符串t,要求在s中查找t。其中,字符串s,t均不包含空格,且长度均小于80。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入2个长度不超过80的字符串s和t(s和t都不包含空格)。

输出格式:
对于每组测试数据,若在s中找到t,则输出“Found!”,否则输出“not Found!”。引号不必输出。

输入样例:
2
dictionary lion
factory act
输出样例:
not Found!
Found!

点击查看代码
T=int(input())
for i in range(T):
    s,t =input().split()
    if t in s:
        print('Found!')
    else:
        print('not Found!')

第三章

例3.2.4 成绩转换

百分制成绩转换为五级计分制时,90分以上为A,80~89分为B,70~79分为C,60~69分为D,0~59分为E。请把输入的百分之成绩转换为五级计分制输出。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数score。

输出格式:
对于每组测试,在一行上输出百分制成绩score对应的字符等级。若score超出百分制范围,则输出“error!”。引号不必输出。

输入样例:
1
61
102
输出样例:
E
D
error!

点击查看代码
try:
    while True:
        score=int(input())
        if score>=90 and score<=100:
            rank='A'
        elif score>=80 and score<90 :
            rank='B'
        elif score>=70 and score<80 :
            rank='C'
        elif score>=60 and score<70 :
            rank='D'
        elif score>=0 and score<60:
            rank='E'
        else:
            rank='error!'
        print(rank)
except EOFError:pass

例3.2.5 求某月的天数

输入年份year、月份month,判断该月的天数。闰年:能被4整除但不能被100整除或者能被400整除的年份是闰年。

输入格式:
测试数据有多组,处理到文件尾。对于每组测试,输入两个整数,表示年份year和月份month。

输出格式:
对于每组测试,输出对应年月的天数。

输入样例:
2020 2
2020 4
输出样例:
29
30

点击查看代码
try:
    while True:
       year,month=map(int,input().split())
       if month==2:
            if year%4==0 and year%100!=0 or year%400==0:
                days=29
            else:
                days=28
       elif month==1 or month==3 or month==5 or month==7 or month==8 or month==10 or month==12:
          days=31
       elif month==4 or month==6 or month==9 or month==11:
          days=30
       print(days)
except EOFError:pass

例3.3.3 亲和数判断

古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们称这样的数对为亲和数。也就是说,若两个数中任何一个数都是另一个数的真约数之和,则它们就是亲和数。请判断输入的两个整数是否是亲和数。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入两个正整数a,b。

输出格式:
对于每组测试,若a,b是亲和数,是则输出“YES”,否则输出“NO”。引号不必输出。

输入样例:
220 284
输出样例:
YES

点击查看代码
try:
    while True:
        a,b=map(int,input().split())
        na=0
        for i in range(1,a//2+1):
            if a%i==0:
                na+=i
        nb=0
        for i in range(1,b//2+1):
            if b%i==0:
                nb+=i
        if na==b and nb==a:
            print('YES')
        else:
            print('NO')
except EOFError:pass

例3.3.4 星号三角形

输入整数n,显示星号构成的三角形。例如,n=6时,显示输出的三角形如样例输出所示。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个正整数n(0

输出格式:
对于每组测试,输出n行构成的三角形。

输入样例:
6
输出样例:
···
*
***





···

点击查看代码
try:
    while True:
        n=int(input())
        for i in range(n):
            for j in range(n-i-1):
                print(' ',end='')
            for j in range(2*i+1):
                print('*',end='')
            print()
except EOFError:pass