day10练习

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

import  math

def 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  math

def 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  math

def re_func(num,n):
#数字重复
if n <= 1:
return num
return re_func(num,n-1)*10+num
def func(num,n):
#循环加法
resurt = 0
for i in range(1,n+1):
resurt +=re_func(num,i)
return resurt

while 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  math

def 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 resurt

while 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 math
def change_value(func):
def inner(num1,num2):
return func(num2,num1)
return inner

@change_value
def func1(num_a,nun_b):
return num_a,nun_b


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

猜你喜欢

转载自www.cnblogs.com/lyy17759893807/p/11961985.html