day10练习

此生再无相见时 提交于 2019-12-06 04:32:18

一、递归
          1.1 使用递归实现:计算某个数的阶乘

import  mathdef re_mul(n):    if n <= 0:        return 1    return n*re_mul(n-1)while True:    num = input("请输入数字:\n")    if(num == "退出"):        break    try:        num_int = math.floor(eval(num))        print(re_mul(num_int))    except:        print("输入错误")


          1.2 用递归函数来实现获取斐波拉契数列中第n个数字的值
ps(斐波那契数列:从3三个数开始,后一个数等于前面两个数的和:
0,1,1,2,3,5,8,13,21,34,55,89,144……

import  mathdef func(num0,num1,num_index):#斐波那契数列    if num_index == 1:        return num0    if num_index == 2:        return num1    return func(num0,num1,num_index-1)+func(num0,num1,num_index-2)while True:    num0 = input("请输入第一个数字:\n")    num1 = input("请输入第二个数字:\n")    if(num0 == "退出" or num1 == "退出" ):        break    try:        num0_int = eval(num0)        num1_int = eval(num1)        while True:            num_index = input("请输入第几项:\n")            if num_index == "exit":                break            num_index_int = eval(num_index)            print("第一项为{},第二项为{}".format(num0,num1))            print("斐波那契数列第{}为{}".format(num_index,func(num0_int,num1_int,num_index_int)))    except:        print("输入错误")


二、函数封装
   2.1 封装函数实现如下要求
           例如:输入2,5
               则求:2 + 22+222 + 2222+22222的和

import  mathdef re_func(num,n):#数字重复    if n <= 1:        return num    return re_func(num,n-1)*10+numdef func(num,n):#循环加法    resurt = 0    for i in range(1,n+1):        resurt +=re_func(num,i)    return resurtwhile True:    num1 = input("请输入数字1:\n")    num2 = input("请输入数字2:\n")    if(num1 == "退出" or num2 == "退出"):        break    try:        num1_int = math.floor(eval(num1))        num2_int = math.floor(eval(num2))        print("结果为",func(num1_int,num2_int))    except:        print("输入错误")

          2.3 计算2-100之间素数的个数,返回结果

import  mathdef is_func(n):    if n < 2 :        return "不是素数"    if n == 2:        return "是素数"    for i in range(2,math.ceil(n**0.5)):        if n % i == 0:            return "不是素数"    return "是素数"def count_func(num):    resurt = 0    for i in range(num+1):        if is_func(i) == "是素数":            resurt += 1    return resurtwhile True:    num = input("请输入数字:\n")    if(num == "退出"):        break    try:        num_int = math.floor(eval(num))        print("2到{}素数的个数为{}".format(num,count_func(num_int)))    except:        print("输入错误")


          2.5 交换某两个变量的值

import mathdef change_value(func):    def inner(num1,num2):        return func(num2,num1)    return inner@change_valuedef func1(num_a,nun_b):    return num_a,nun_bwhile True:    num_a = input("请输入数字1:\n")    num_b = input("请输入数字2:\n")    print("num_a={},num_b={}".format(num_a,num_b))    num_a,num_b=func1(num_a,num_b)    print("交换后num_a={},num_b={}".format(num_a, num_b))
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!