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