python基础知识练习(第二讲)

1.异常捕获 

1.1""" 输入一个数,打印输出该数被10除的结果//异常捕获 """
try:
    num = float(input("请输入一个数:"))
    num1 = 10 / num
    print(num1)
except:
    print("你输入的数据异常!")
 1.2except语句异常类型捕获异常情况
try:
    num=float(input("请输入一个数:"))
    assert num!=0
except ZeroDivisionError:      #如果用户输入的数为0,那么在执行num1 = 10 / num时会触发ZeroDivisionError异常,因为除数不能为0
    print("你输入的不是数值")
except AssertionError:
    print("你输入的数据不能为0")    #当使用断言语句(assert)并且断言条件为假时,就会引发AssertionError。
except ValueError:    #ValueError:如果用户输入的内容无法转换为浮点数,会触发ValueError异常。 例如,用户输入了一个非数字字符
    print("你输入的数据不能为0")
else:
    num1=10/num1
    print(num1)

2.模拟个人月实发工资计算。

"""任务:模拟个人月实发工资计算。假定:1) 请假只扣除对应请假天数工资;
2) 每月标准工资固定,每天工资由月工资与当前月自然天数平均得到;
3) 个税计算方式与综合测试1的假设相同任务:编写程序模拟收入税计算。假定:
) 所有纳税人采用固定税率20%交税;2)所有纳税人允许5000元的标准扣除额;
3) 每个纳税人对每个被抚养人有1000元附加扣除额;
4) 总收入和所得税最小单位为务。
思考:如果每天工资由月应工作天数平均得到,该如何计算?"""

import calendar

def calculate_net_salary(monthly_salary, leave_days, dependents, year, month, work_days):
    days_in_month = calendar.monthrange(year, month)[1]
    daily_wage = monthly_salary / work_days
    total_deduction = leave_days * daily_wage
    taxable_income = monthly_salary - total_deduction - 5000 - dependents * 1000
    tax = taxable_income * 0.2 if taxable_income > 0 else 0
    return round(monthly_salary - total_deduction - tax, 2)

# 获取用户输入
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
work_days = int(input("请输入每月工作日天数:"))
monthly_salary = int(input("请输入月工资:"))
leave_days = int(input("请输入请假天数:"))
dependents = int(input("请输入抚养人数:"))

# 计算实发工资
net_salary = calculate_net_salary(monthly_salary, leave_days, dependents, year, month, work_days)
print(f"在{year}年{month}月的月实发工资:{net_salary}")
 2.1工资输入的异常处理及捕获
"""
工资输入的异常处理及捕获
任务:编写程序输入月工资计算年薪。检查输入数据格式异常及月工资大于30000的异常。
"""
import calendar

def calculate_net_salary(monthly_salary, leave_days, dependents, year, month, work_days):
    days_in_month = calendar.monthrange(year, month)[1]
    daily_wage = monthly_salary / work_days
    total_deduction = leave_days * daily_wage
    taxable_income = monthly_salary - total_deduction - 5000 - dependents * 1000
    tax = taxable_income * 0.2 if taxable_income > 0 else 0
    return round(monthly_salary - total_deduction - tax, 2)

while True:
    try:
        year = int(input("请输入年份:"))
        month = int(input("请输入月份:"))
        work_days = int(input("请输入每月工作日天数:"))
        monthly_salary = int(input("请输入月工资:"))
        if monthly_salary > 3000:
            raise ValueError("月工资不能超过 3000。")
        leave_days = int(input("请输入请假天数:"))
        dependents = int(input("请输入抚养人数:"))
        net_salary = calculate_net_salary(monthly_salary, leave_days, dependents, year, month, work_days)
        print(f"在{year}年{month}月的月实发工资:{net_salary}")
        break
    except ValueError as e:
        print(f"输入错误:{e}。请重新输入。")

3.编写代码计算100以内所有奇数之和并打印输出结果

#range()for循环
date=range(1,100,2)
list_data=list(data)
#
sum=0
for num in list_data:
    sum+=num
    print(sum)

4.给定一个正整数数 n,判断n 以内的正数是否含有水仙花束

"""
任务:给定一个正整数数 n,判断n 以内的正数是否含有水仙花数。
水仙花数是指一个3 位的整数,它的每个位上的数字的3次幂之和等于它本身。
如果有,输出“有水仙花数”,如果没有,则输出“没有水仙花数”

"""
#定义判断输入的三位数是否为水仙花数的函数
def flower(num):
    a=num%10   #个位
    b=(num//10) %10  #十位   //是整除符号
    c=num//100    #百位
    if num==(a**3+b**3+c**3):
        return True
    else:
        return False

# 输入正整数n
n=int(input("请输入一个正整数:"))
#n以内循环判断是否有水仙花数
for num in range(100,n):    #range(100,3) #step系统默认为1,可以省略    range(10) #start为0时,可以省略
    if flower(num):
        print(n,"以内有水仙花束,第一个数是",num)
        break
# 输出结论
else:
    print(n,"以内没有水仙花束")

5.输入n个数,输出其中的最小值


"""
任务:输入n个数,输出其中的最小值
"""

n = int(input("请输入数字的个数:"))
numbers = []
for _ in range(n):
    num = int(input("请输入一个数字:"))
    numbers.append(num)

min_value = numbers[0]
for num in numbers:
    if num < min_value:
        min_value = num

print(f"输入的数字中的最小值为:{min_value}")

猜你喜欢

转载自blog.csdn.net/2303_77045566/article/details/142108749