python第三章作业(初级)(上)

第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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值