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}")