第1关:判断是否直角三角形
任务描述
输入三个数a,b,c, 判断能否以它们为三个边长构成直角三角形。若能,输出YES,否则输出NO。
输入格式
输入包括三行,每行是一个数字
输出格式
'YES' 或'NO'
示例
输入:
3
4
5
输出:
YES
# 请补充你的代码
def test1():
try:
a = float(input().strip())
b = float(input().strip())
c = float(input().strip())
# 如果输入的数不是整数或 ≤0,直接输出 NO
if a != int(a) or b != int(b) or c != int(c) or a <= 0 or b <= 0 or c <= 0:
print("NO")
return
a, b, c = int(a), int(b), int(c)
# 排序,确保 c 是最长边
a, b, c = sorted([a, b, c])
# 判断是否为直角三角形
if a**2 + b**2 == c**2:
print("YES")
else:
print("NO")
except ValueError:
print("NO") # 如果输入无法转换为数字,则返回 NO
test1()
第2关:今年多少天?
任务描述
闰年366天,其他年份365天。普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
用户输入一个正整数,代表年份,输出该年有多少天?
输入格式
输入一个正整数,表示年份
输出格式
该年的天数
示例 1
输入:1999
输出:365
示例 2
输入:2000
输出:366
# 请补充你的代码
year = int(input().strip())
# 判断是否为闰年
if (year % 4 == 0 and year % 100 != 0) or (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().strip())
b = float(input().strip())
c = float(input().strip())
# 判断是否满足三角形不等式
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().strip())
mother_height = int(input().strip())
gender = input().strip()
# 计算预测身高
if gender == "男":
height = (father_height + mother_height) * 1.08 / 2
print(int(height))
elif gender == "女":
height = (father_height * 0.923 + mother_height) / 2
print(int(height))
else:
print("无对应公式")
第5关:个税计算器
任务描述
目前我国个人所得税计算公式如下:
应纳个人所得税税额= (工资薪金所得 -五险一金 - 个税免征额)×适用税率-速算扣除数
个税免征额为5000元/月,2018年10月1日起调整后,也就是2018年实行的7级超额累进个人所得税税率表如下:
请编写一个个税计算器,用户输入为应发工资薪金所得扣除五险一金后的金额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0时,输出“error”。
输入格式
输入一个表示工资的数值,例如12000.0,此数值为已扣除五险一金后的金额。
输出格式
应缴税款490.00元,实发工资11510.00元。
示例 1
输入:
12000
输出:
应缴税款490.00元,实发工资11510.00元。
示例 2
输入:
20000
输出:
应缴税款1590.00元,实发工资18410.00元。
示例 3
输入:
-10
输出:
error
# 请补充你的代码
def calculate_tax(income):
# 如果输入小于0,输出error
if income < 0:
print("error")
return
exemption = 5000
taxable_income = income - exemption
if taxable_income <= 0:
# 如果应纳税所得额<=0,不需要交税
print(f"应缴税款0.00元,实发工资{income:.2f}元。")
return
# 根据应纳税所得额选择对应的税率和速算扣除数
if taxable_income <= 3000:
tax_rate = 0.03
quick_deduction = 0
elif taxable_income <= 12000:
tax_rate = 0.10
quick_deduction = 210
elif taxable_income <= 25000:
tax_rate = 0.20
quick_deduction = 1410
elif taxable_income <= 35000:
tax_rate = 0.25
quick_deduction = 2660
elif taxable_income <= 55000:
tax_rate = 0.30
quick_deduction = 4410
elif taxable_income <= 80000:
tax_rate = 0.35
quick_deduction = 7160
else:
tax_rate = 0.45
quick_deduction = 15160
tax = taxable_income * tax_rate - quick_deduction
# 计算实发工资
net_income = income - tax
print(f"应缴税款{tax:.2f}元,实发工资{net_income:.2f}元。")
try:
salary = float(input().strip())
calculate_tax(salary)
except ValueError:
print("error")
第6关:判断闰年
任务描述
写一个程序用于判断用户输入的年份是不是闰年,如果是输出True,如果不是输出False。
输入格式
输入一个代表年份的正整数
输出格式
True或False
示例 1
输入:
1900
输出:
False
示例 2
输入:
2000
输出:
True
# 请补充你的代码
def is_leap_year(year):
# 判断闰年的条件
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False
year = int(input().strip())
print(is_leap_year(year))
第7关:分段函数B
任务描述
按照输入的整数x,输出对应的y值。本题保证所有测试用例均在整数范围内。
输入格式
输入一个整数,表示x的值
输出格式
输出y的值(整数类型)
示例1
输入:
-10
输出:
0
示例2
输入:
0
输出:
1
# 请补充你的代码
import math
def calculate_y(x):
if -6 <= x < 0:
return abs(x) + 5
elif 0 <= x < 3:
return math.factorial(x)
elif 3 <= x <= 6:
return x ** (x-2)
else:
return 0
x = int(input().strip())
print(calculate_y(x))
第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!
# 请补充你的代码
def grade_conversion(score):
if 90 <= score <= 100:
return "A"
elif 80 <= score < 90:
return "B"
elif 70 <= score < 80:
return "C"
elif 60 <= score < 70:
return "D"
elif 0 <= score < 60:
return "E"
else:
return "data error!"
score = float(input().strip())
print(grade_conversion(score))