Ejercicios de recursividad y función de Python

La práctica es un ejercicio indispensable en la programación. Veamos las preguntas recurrentes y las preguntas relacionadas con las funciones.Inserte la descripción de la imagen aquí

1. Hay un par de conejos. A partir del tercer mes después del nacimiento, nacerá un par de conejos cada mes, y el
conejito dará a luz a un par de conejos cada mes después del tercer mes.
Si los conejos no son muerto, pregunte el enésimo ¿Cuál es el logaritmo del conejo en el mes?

	'''
    作者:lsf
    time:2021.1.19
         有一对兔子,从出生后的第3个月起,每个月都生一对兔子,
		小兔子长到第3个月后每个月又生一对兔子,
		假如兔子不死,问第n个月第兔子对数为多少?
		f(n)= f(n-1)+f(n-2) {n 代表月份}

'''

def rabit_twain(time):
   if time==1 or time==2:
       return 1
   else:
       month=rabit_twain(time-1)+rabit_twain(time-2)
       return month

print(rabit_twain(4))	

Inserte la descripción de la imagen aquí

2. Completar un sistema de blogs (requiere que los usuarios se registren, inicien sesión, publiquen blogs, eliminen blogs, agreguen blogs y consulten funciones de blogs)

'''
    作者:lsf
    time:2021.1.19


'''
import sys

def ring_up():
    users = []
    while True:
        print("欢迎登录我们的用户管理系统")
        print("\t\t 1、用户注册")
        print("\t\t 2、用户登录")
        print("\t\t 3,进入博客")
        print("\t\t 4、退出系统")
        choice = input("请选择您的操作:")

        if choice == "1":
            while True:
                print("欢迎进入到用户注册页面")
                username = input("请输入用户名称:")
                password = input("请输入用户密码:")
                confirm_password = input("请再次确认密码:")

                # 数据校验
                # 用户名称不能为空
                if username == None or len(username) == 0:
                    print("对不起,用户为空")
                    continue
                # 用户名称不能重复
                flag = False
                for u in users:
                    if u.get("username") == username:
                        print("对不起,该用户已经存在,请重新注册")
                        flag = True
                        break
                if flag:
                    continue
                # 密码长度不能少于3位
                if len(password) < 3:
                    print("对不起,密码长度不能少于3位")
                    continue
                # 两次密码不一致
                if password != confirm_password:
                    print("两次密码不一致")
                    continue

                # 最后如何保存用户名称和密码
                user = {"username": username, "password": password}
                users.append(user)
                print("用户注册成功,请登录")
                break
        elif choice == "2":
            print("欢迎进入到用户登录页面")
            username = input("请输入用户名称:")
            password = input("请输入用户密码:")

            # 判断用户名和密码是否存在于users
            for user in users:
                if user["username"] == username and user.get("password") == password:
                    print("恭喜您,{},登录成功".format(username))
                else:
                    print("对不起,登录失败,请重新登录~~")

        elif choice == "3":
            blong = []
            print("登陆成功,您可以选择以下操作")
            print("1,添加博客")

            print("2,查询博客")
            print("3,删除博客")
            print("4,退出系统")
            choice = int(input("请选择您的操作:"))
            if choice == 1:
                print("欢迎进入添加博客页面")
                content = input("请输添加内容:")
                prople = int(input("1,发表博客,2取消发表"))
                if prople == 1:
                    blong.append(content)
                    print("添加博客成功")

                    continue
                else:
                    print("取消发表成功")
                    continue
            elif choice == 2:
                print(blong)
                continue
            elif choice ==3:
                blong.clear()
                print("删除成功")
                continue
            else:
                sys.exit()
        else:
            sys.exit()



ring_up()

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

3. Suponiendo que el usuario solo puede subir uno o dos pasos cada vez, escriba una función para determinar cuántas formas tiene el usuario para ir al enésimo paso.

'''
    作者:lsf
    time:2021.1.19
    f(n)= f(n-1)+f(n-2) 
'''
def stairs(step):
    if step == 1 or step == 2:
        return 1
    else:
        month =stairs(step - 1) +step(step - 2)
        return month


print((4))

Inserte la descripción de la imagen aquí

4. Encuentra el número dentro de 10000 que pueda ser divisible por 5 o 6, pero no divisible por ambos al mismo tiempo (función)

'''
    作者:lsf
    time:2021.1.19
    f(x)=f(x-5)f(x-6)
'''
import sys
sys.setrecursionlimit(100000)
def num(n):
    while n >= 0:

        if n%5==0 or n%6==0 and n%30 != 0 :
            print(n)
            return num(n-1)
        else:
            return num(n-1)



print(num(1000))

Inserte la descripción de la imagen aquí

5. Escriba un método para calcular la suma de todos los elementos de subíndice pares en la lista (tenga en cuenta el valor de retorno)

'''
    作者:lsf
    time:2021.1.19

'''
ls=[1,2,3,4,5,6,7,8,9,10,23,14,66]
l=[]
def even_number(lis):
    for i in lis:
        if i % 2 == 0:
            l.append(i)
    return sum(l)
print(even_number(ls))

Inserte la descripción de la imagen aquí

6. ¿Determina si un número es primo (número primo)? ¿Cómo declarar un método?

'''
    作者:lsf
    time:2021.1.19
    能不能被整除
'''
num=int(input("请输入一个整数:"))
def is_prime(num):
    for i in range(2,num//2+1):
        if num % i == 0 :
             return print("%d不是质数"%num)
        else:
             return print("%d是质数"%num)

is_prime(num)

Inserte la descripción de la imagen aquí

7. Utilice la función para completar los tres tipos de selección, burbujeo e inserción.

https://blog.csdn.net/weixin_47514459/article/details/112791073

8. Alguien ingresa al siguiente tablero de ajedrez, pide comenzar desde la esquina superior izquierda y finalmente sale de la esquina inferior derecha (requerido solo para avanzar, no hacia atrás),
pregunta: ¿Cuántos movimientos hay?

	0 0 0 0 0 0 0 0

	0 0 0 0 0 0 0 0

	0 0 0 0 0 0 0 0

	0 0 0 0 0 0 0 0

	0 0 0 0 0 0 0 0
'''
    作者:lsf
    time:2021.1.19

'''



def get_count(board):
	# 求棋盘横向的宽度
	width = len(board[0])
	# 求纵向的高度
	height = len(board)

	if width == 0 and height == 0:
		return 0
	# 棋盘只有一个位置,也就是只有一种走法
	if width == 1 and height == 1:
		return 1

	# 将横向第一行设置为0
	for i in range(width):
		board[0][i] = 1

	for i in range(height):
		board[i][0] = 1

	for i in range(1, height):
		for j in range(1, width):
			board[i][j] = board[i][j - 1] + board[i - 1][j]

	return board[height - 1][width - 1]
	

b = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
print(get_count(b))

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47514459/article/details/112849023
Recomendado
Clasificación