任务 1
编写一个程序,该程序将 2 个数传給函数 average(),average()函数返回平均值,程序输出平 均值。函数 average()需要自己编写。
def average(a,b):
c=(a+b)/2
return c
a=eval(input("请输入第一个数:"))
b=eval(input("请输入第二个数:"))
d=average(a,b)
print(d)
任务 2
编写一个程序,该程序允许用户输入任意个数,程序将这些数传給函数 average(),average() 函数返回平均值,程序输出平均值。函数 average()需要自己重新编写
def average(*args):
"""
计算一个数列的平均值
:param args: 任意个数的数字
:return: 平均值
"""
total = sum(args)
n = len(args)
if n == 0:
return None
else:
return total / n
# 主程序
numbers = []
while True:
number = input("请输入一个数字:(输入q结束输入)")
if number.lower() == 'q':
break
else:
try:
number = float(number)
numbers.append(number)
except ValueError as e:
print("输入错误,请重新输入")
avg = average(*numbers)
if avg is None:
print("没有输入数字")
else:
print("这些数的平均值为:{:.2f}".format(avg))
任务 3
定义一个函数,求两个正整数的最大公约数,并验证函数的正确性。
提示: 最大公因数(英语:highest common factor,hcf)也称最大公约数(英语:greatest common divisor,gcd)是数学词汇,指两个或多个整数共有约数中最大的一个。例如 8 和 12 的最大 公因数为 4。
求两个整数最大公约数主要的方法:
1.穷举法:分别列出两整数的所有约数,并找出最大的公约数。
2.素因数分解:分别列出两数的素因数分解式,并计算共同项的乘积。
3.短除法:两数除以其共同素因数,直到两数互素时,所有除数的乘积即为最大公约数。
4.辗转相除法:两数相除,取余数重复进行相除,直到余数为 0 时,前一个除数即为最大公 约数。
以下是辗转相除法的基本步骤:
(1)比较两数,并使 m>n
(2)将 m 作被除数,n 做除数,相除后余数为 r
(3)循环判断 r,若 r==0,则 n 为公约数,结束循环。若 r !=0 ,执行 m=n,n=r;将 m 作被除数,n 做除数,相除后余数为 r。
def gongyinshu(m,n):
c=min(m,n)
d=max(m,n)
while True:
r=d%c
if r==0:
e=c
break
else:
d=c
c=r
return e
m=int(input("请输入第一个正整数:"))
n=int(input("请输入第二个正整数:"))
d=gongyinshu(m,n)
print("{}和{}的最大公因数为{}.".format(m,n,d))
任务 4
编写一个程序,允许用户输入数字 n,程序通过调用函数返回前 n 个斐波拉契数列, 最后程序对返回 n 个斐波拉契数列进行求和。函数需采用递归方式编写
提示:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波 那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样 一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递 推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶 体结构、化学等领域,斐波纳契数列都有直接的应用
def fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 主程序
n = eval(input("请输入数字 n (n>0):"))
fibonacci_list = [fibonacci(i) for i in range(1, n+1)]
fibonacci_sum = sum(fibonacci_list)
print("前", n, "个斐波拉契数列:", fibonacci_list)
print("这", n, "个斐波拉契数列之和为:", fibonacci_sum)
任务 5
编写函数,允许用户输入任意字符串,调用函数 counter(). 函数统计字符串中有几 个字母,几个数字,几个空格,几个其他字符,并返回结果。程序显示示例如下 :
def counter(str):
c1=0
c2=0
c3=0
c4=0
for i in str:
if i>='0' and i<='9':
c1+=1
elif i>='A' and i<='Z' or i>='a' and i<='z':
c2+=1
elif i==' ':
c3+=1
else:
c4+=1
print("字符串中包含数字的个数是",c1)
print("字符串中包含字母的个数是",c2)
print("字符串中包含空格的个数是",c3)
print("字符串中包含其他字符的个数是",c4)
str=input("请输入字符串:")
counter(str)
任务 6(综合应用题)
请编写一个函数,该函数根据用户提供的生日判断他(她)的星座。 两千多年前,希腊天文学家西巴克斯为了标识太阳在黄道上运行的位置,将黄道分为十 二个区段,依次是白羊、金牛、双子、巨蟹、狮子、处女、天秤、天蝎、射手、魔蝎、水瓶、 双鱼等十二个星群。在地球运转到每个星群所占时段出生的婴儿,也就对应了相应的星座, 按时间对应关系如下表:
规定 要求用户输入生日格式如下,以“:”分割,注意不能使用中文符号
indate = input("请输入您的生日(格式:2018:10:12):")
#暴力if语句实现易懂
def panduanxingzuo(indate):
a=indate[5:7]
b=indate[8:10]
c=int(a)
d=int(b)
t=30#设置月份的特征值为30,即统一规定一月等于三十天,其实规定等于多少天都行,不影响结果
e=t*c+d#设置判断参数,这样就可以区分了
if e>=0*30+22 and e<=1*30+19:#规定12月为0月,要不然不能区分12月份的星座了
print("亲,您的星座是摩羯座哦")
elif e<=2*30+18:
print("亲,您的星座是水瓶座哦")
elif e<=3*30+20:
print("亲,您的星座是双鱼座哦")
elif e<=4*30+19:
print("亲,您的星座是白羊座哦")
elif e<=5*30+20:
print("亲,您的星座是双鱼座哦")
elif e<=6*30+21:
print("亲,您的星座是双子座哦")
elif e<=7*30+22:
print("亲,您的星座是巨蟹座哦")
elif e<=8*30+22:
print("亲,您的星座是狮子座哦")
elif e<=9*30+22:
print("亲,您的星座是处女座哦")
elif e<=10*30+23:
print("亲,您的星座是天秤座哦")
elif e<=11*30+22:
print("亲,您的星座是天蝎座哦")
else:#射手座的情况不要写条件,要写也会和第一个条件相违背,所以说直接else
print("亲,您的星座是射手座哦")
#主程序
indate = input("请输入您的生日(格式:2018:10:12):")
panduanxingzuo(indate)
任务 7(综合应用题):
编写函数:taxRate(income),该函数根据应纳税所得额的不同,显示 输出不同的税率和税金。
提示: 个人所得税(personal income tax)是调整征税机关与自然人(居民、非居民人)之间在个 人所得税的征纳与管理过程中所发生的社会关系的法律规范的总称。
个人所得税采用速算扣 除数法计算超额累进税率的所得税时的计税公式是:
应纳税额=应纳税所得额×适用税率-速算扣除数
其中,速算扣除数是个人所得税中用来修正个税计算中不同档次税率造成的差额的数值。应 纳税所得额=工资收入金额-各项社会保险费-起征点(5000 元)。
#纳税问题暴力易懂
def taxRate(income):
t=income-5000
if t<=0:
print("您的薪资是{}元,没有超过5000元,所以您不需要纳税.".format(income))
elif t<=3000:
rate=0.03
taxrate=t*rate-0
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
elif t<=12000:
rate=0.1
taxrate=t*rate-210
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
elif t<=25000:
rate=0.2
taxrate=t*rate-1410
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
elif t<=35000:
rate=0.25
taxrate=t*rate-2660
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
elif t<=55000:
rate=0.3
taxrate=t*rate-4410
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
elif t<=80000:
rate=0.35
taxrate=t*rate-7160
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
else:
rate=0.45
taxrate=t*rate-15160
print("您的薪资超过了5000元,需要纳税{}元,税率是{}%.".format(taxrate,rate*100))
#主程序
income=eval(input("请输入您一个月的工资:"))
taxRate(income)
完结
这些案例都做完Python的函数你掌握的也就差不多了,加油初学者!!