第1关:判断是否直角三角形
任务描述
输入三个数a,b,c, 判断能否以它们为三个边长构成直角三角形。若能,输出YES,否则输出NO。
输入格式
输入包括三行,每行是一个数字
输出格式
'YES' 或'NO'
示例
输入:
3
4
5
输出:
YES
# 请补充你的代码
# 读取三个输入的边长
a = float(input())
b = float(input())
c = float(input())
sides = [a, b, c]
sides.sort()
epsilon = 1e-9
if sides[0] + sides[1] > sides[2] and sides[0] > 0 and sides[1] > 0 and sides[2] > 0:
if abs(sides[0] ** 2 + sides[1] ** 2 - sides[2] ** 2) < epsilon:
print('YES')
else:
print('NO')
else:
print('NO')
第2关:今年多少天?
任务描述
闰年366天,其他年份365天。普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
用户输入一个正整数,代表年份,输出该年有多少天?
输入格式
输入一个正整数,表示年份
输出格式
该年的天数
示例 1
输入:1999
输出:365
示例 2
输入:2000
输出:366
# 请补充你的代码
year = int(input())
if (year % 100 != 0 and year % 4 == 0) or (year % 100 == 0 and year % 400 == 0):
print(366)
else:
print(365)
第3关:判断三角形并计算面积
任务描述
输入三个数a,b,c, 判断能否以它们为三个边长构成三角形。若能,输出YES和三角形面积(结果保留2位小数),否则输出NO。
输入格式
输入包括三行,每行是一个数字
输出格式
如果输入的三个数字能够组成三角形的三边,则输出为两行,分别是'YES' 和面积值(结果严格保留2位小数);如果输入的三边不能组成三角形,则输出为'NO'
示例 1
输入:
3.0
4.0
5.0
输出:
YES
6.00
示例2
输入:
2
5
8
输出:
NO
# 请补充你的代码
import math
a = float(input())
b = float(input())
c = float(input())
if a + b > c and a + c > b and b + c > a:
s = (a + b + c) / 2
area = math.sqrt(s * (s - a) * (s - b) * (s - c))
print('YES')
print(f"{area:.2f}")
else:
print('NO')
第4关:身高测算
任务描述
测算身高,单位为厘米,公式参考下列:
男性身高=(父亲身高+母亲身高)×1.08÷2
女性身高=(父亲身高×0.923+母亲身高)÷2
性别输入"男"或“女”,本题保证所有测试输入身高数据为整型,输出结果取整。如果性别输入不符合要求,则输出“无对应公式”
输入格式
输入三行数据如下:
父亲身高(厘米)
母亲身高(厘米)
性别
输出格式
计算出的身高数据(厘米,取整)
示例
输入:
183
175
女
输出:
171
# 请补充你的代码
father_height = int(input())
mother_height = int(input())
gender = input()
if gender == '男':
height = int((father_height + mother_height) * 1.08 / 2)
print(height)
elif gender == '女':
height = int((father_height * 0.923 + mother_height) / 2)
print(height)
else:
print("无对应公式")
第5关:个税计算器
任务描述
目前我国个人所得税计算公式如下:
应纳个人所得税税额= (工资薪金所得 -五险一金 - 个税免征额)×适用税率-速算扣除数
个税免征额为5000元/月,2018年10月1日起调整后,也就是2018年实行的7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) 税率(%) 速算扣除数
x<=3000 3 0
3000<x<=12000 10 210
12000<x<=25000 20 1410
25000<x<=35000 25 2660
35000<x<=55000 30 4410
55000<x<=80000 35 7160
x>80000 45 15160
请编写一个个税计算器,用户输入为应发工资薪金所得扣除五险一金后的金额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0时,输出“error”。
输入格式
输入一个表示工资的数值,例如12000.0,此数值为已扣除五险一金后的金额。
输出格式
应缴税款490.00元,实发工资11510.00元。
示例 1
输入:
12000
输出:
应缴税款490.00元,实发工资11510.00元。
示例 2
输入:
20000
输出:
应缴税款1590.00元,实发工资18410.00元。
示例 3
输入:
-10
输出:
error
# 请补充你的代码
salary = float(input())
threshold = 5000
if salary < 0:
print("error")
else:
taxable_income = salary - threshold
if taxable_income <= 0:
tax = 0
elif taxable_income <= 3000:
tax = taxable_income * 0.03 - 0
elif taxable_income <= 12000:
tax = taxable_income * 0.1 - 210
elif taxable_income <= 25000:
tax = taxable_income * 0.2 - 1410
elif taxable_income <= 35000:
tax = taxable_income * 0.25 - 2660
elif taxable_income <= 55000:
tax = taxable_income * 0.3 - 4410
elif taxable_income <= 80000:
tax = taxable_income * 0.35 - 7160
else:
tax = taxable_income * 0.45 - 15160
# 计算实发工资
actual_salary = salary - tax
# 输出结果,保留两位小数
print(f"应缴税款{tax:.2f}元,实发工资{actual_salary:.2f}元。")
第6关:判断闰年
任务描述
写一个程序用于判断用户输入的年份是不是闰年,如果是输出True,如果不是输出False。
输入格式
输入一个代表年份的正整数
输出格式
True或False
示例 1
输入:
1900
输出:
False
示例 2
输入:
2000
输出:
True
# 请补充你的代码
year = int(input())
is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
print(is_leap)
第7关:分段函数B
任务描述
按照输入的整数x,输出对应的y值。本题保证所有测试用例均在整数范围内。
输入格式
输入一个整数,表示x的值
输出格式
输出y的值(整数类型)
示例1
输入:
-10
输出:
0
示例2
输入:
0
输出:
1
# 请补充你的代码
import math
x = int(input())
if -6 <= x < 0:
y = abs(x) + 5
elif 0 <= x < 3:
y = math.factorial(x)
elif 3 <= x <= 6:
y = x ** (x - 2)
else:
y = 0
print(y)
第8关:百分制成绩转换五分制E
任务描述
编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于等于90且小于等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60且大于等于0的输出为“E”,如果输出的成绩大于100或小于0,输出'data error!'。
输入格式
输入一个数字,代表百分制成绩。
输出格式
A、B、C、D、E中的一个字母,表示五分制的成绩等级;或输出'data error!'
示例
输入:
88
输出:
B
输入:
-5
输出:
data error!
# 请补充你的代码
score = float(input())
if score < 0 or score > 100:
print('data error!')
elif 90 <= score <= 100:
print('A')
elif 80 <= score < 90:
print('B')
elif 70 <= score < 80:
print('C')
elif 60 <= score < 70:
print('D')
else:
print('E')
第9关:正负交错数列前n项和
任务描述
1-1/2+2/3-3/5+4/8-5/13+...的前n项和,n由用户输入(n>0),结果用str.format()方法保留小数点后6位数字输出。
输入格式
一个正整数
输出格式
前n项的和
示例 1
输入:
12
输出:
0.828448
# 请补充你的代码
n = int(input())
total = 0
numerator = 0
denominator1 = 1
denominator2 = 1
for i in range(1, n + 1):
if i == 1:
term = 1
else:
numerator = i - 1
denominator1, denominator2 = denominator2, denominator1 + denominator2
term = (-1) ** (i - 1) * (numerator / denominator2)
total += term
print("{:.6f}".format(total))
第10关:求数列前n项的平方和
任务描述
现有数列:1,2,3,4,……,n,计算并输出其前n项的平方和,即求:
1×1+2×2+3×3+……+n×n的和。
输入
输入一个正整数 n
输出
数列前n项的平方和
示例
输入
3
输出
14
# 请补充你的代码
n = int(input())
sum_of_squares = 0
for i in range(1, n + 1):
sum_of_squares += i * i
print(sum_of_squares)
第11关:百钱买百鸡A
任务描述
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
输入格式
该题目没有输入
输出格式
每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出,数字之间用空格分隔;
如果有多组解时,按鸡翁数量由少到多输出;
示例
输出:
x xx xx
x xx xx
xx x xx
# 请补充你的代码
for cock in range(1, 20):
for hen in range(1, 33):
chick = 100 - cock - hen
# 鸡雏数量必须是 3 的倍数,且满足总花费为 100 钱
if chick % 3 == 0 and 5 * cock + 3 * hen + chick // 3 == 100:
print(f"{cock} {hen} {chick}")
第12关:用户登录C
任务描述
实现用户输入用户名和密码,当用户名为admin或administrator且密码为012345时,显示登录成功,否则显示登录失败,登录失败时允许重复输入三次。
输入格式
用户在两行里分别输入用户名和密码
输出格式
登录成功或登录失败
示例 1
输入:
admin
012345
输出:
登录成功
示例 2
输入:
administrator
012345
输出:
登录成功
# 请补充你的代码
n = 0
while n<3:
a, b = input(), input()
if a in ['admin','administrator'] and b=='012345':
print('登录成功')
break
else:
print("登录失败")
n += 1
第13关:鸡兔同笼
任务描述
大约在1500年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
大概的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚,问笼中各有多少只鸡和兔?
请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾)。如无解则输出Data Error!
参考下面的示例代码,从同一行读入两个数
a, b = input().split() # 将输入的以空格分隔的两个数命名为a和b
a, b = map(int,input().split(',')) # 将输入的以逗号分隔的两个值,转换为整数后命名为a和b
输入格式
输入为一行,以空格分隔的两个整数heads, legs,分别代表鸡兔的总头数和总脚数。
输出格式
若有解输出:
有m只鸡,n只兔
若无解输出:
Data Error!
示例 1
输入:
35 94
输出:
有23只鸡,12只兔
示例 2
输入:
-24 12
输出:
Data Error!
示例 3
输入:
12 35
输出:
Data Error!
# 请补充你的代码
heads, legs = map(int, input().split())
if legs % 2 == 0 and heads >= 0 and legs >= 0:
rabbits = (legs - 2 * heads) // 2
chickens = heads - rabbits
if rabbits >= 0 and chickens >= 0:
print(f"有{chickens}只鸡,{rabbits}只兔")
else:
print("Data Error!")
else:
print("Data Error!")
第14关:今天是第几天
任务描述
输入年/月/日(用斜杠分隔),输出该日期是这一年的第几天?(本题目保证测试使用的年、月、日都是合法输入)
tips:
map()函数可以将多个数据转换成指定数据类型
split()函数可以将字符串按照指定分隔符进行间隔并生成数据列表
a, b, c = map(int, input().split(":"))
# 上述语句可以将输入格式为 "12:30:05" 的字符串分解成["12", "30", "05"]
# 并将列表中每个数据转换成整型数据并分别赋值给a,b,c三个变量
输入格式
年/月/日
输出格式
某年某月某日是某年第多少天
示例 1
输入:
2018/2/1
输出:
2018年2月1日是2018年第32天
# 请补充你的代码
# 获取用户输入的年/月/日
year, month, day = map(int, input().split("/"))
# 定义每个月的天数列表,平年情况
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 判断是否为闰年,如果是闰年,2 月有 29 天
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
days_in_month[1] = 29
# 计算到当前月之前的总天数
total_days = 0
for i in range(month - 1):
total_days += days_in_month[i]
# 加上当前月的天数
total_days += day
# 输出结果
print(f"{year}年{month}月{day}日是{year}年第{total_days}天")
第15关:中国古代数学问题——物不知数
任务描述
“物不知数”出自《孙子算经》。题目为
意思是说有一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;7个7个数也会多出2个。
现假设物品总数不超过n (n<=1000),请编程计算满足条件的物品个数并输出。
输入格式
输入为一个正整数n,题目保证 0 < n <= 1000 。
输出格式
输出不超过n且满足条件的物品个数m,如果有多个解,则分行输出,如果无解则输出No solution!。
示例 1
输入:
10
输出:
No solution!
示例2
输入:
200
输出:
23
128
# 请补充你的代码
n = int(input())
has_solution = False
for i in range(1, n + 1):
if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
print(i)
has_solution = True
if not has_solution:
print("No solution!")
第16关:中国古代数学问题——二鼠打洞
任务描述
《九章算术》的“盈不足篇”里有一个很有意思的老鼠打洞问题。原文是这么说的:今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何?
这道题的意思是:有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。
请编程求此题的解,要求使用循环来完成,不允许使用幂运算。
输入格式
输入为1个整数wall,代表墙的厚度,单位为尺。
输出格式
输出为两行,第一行输出1个整数,表示相遇时所需的天数
第二行输出 2 个数字,分别为小鼠和大鼠打洞的距离,单位为尺,若计算结果是浮点数保留小数点后 1 位数字。
(提示:本题输出结果时必须使用round函数,注意计算结果可能是整数)
round()函数说明:
当round(f,n)函数对浮点数f保留小数点后n位时,得到的数据值为浮点数数值形式。
round(3.1415,3) # 结果是3.142
由于返回的是数值形式,因此计算后输出会以最短的浮点数形式输出,如:
round(1.999,2) # 结果不是2.00,而是2.0
当round(f,n)函数对整数f保留小数点后n位时,得到的数据仍为整数类型。
round(5,4)
5
示例 1
输入:
10
输出:
4
1.8 8.2
示例2
输入:
2
输出:
1
1 1
wall = int(input())
a = b = time = 1
day = A = B = 0
while wall>0:
if a+b>wall:
time = wall/(b + a)
wall = wall - b - a
B += time*b
A += time*a
a *= 2
b /= 2
day += 1
print(day)
print(round(B, 1), round(A, 1))
码字不易,支持的宝子们可以打赏支持一下,你们的支持是我更新的动力!