Exercices de récursion et de fonction Python

La pratique est un exercice indispensable de la programmation. Examinons les questions récursives et les questions liées à la fonction.Insérez la description de l'image ici

1. Il y a une paire de lapins. À partir du troisième mois après la naissance, une paire de lapins naîtra chaque mois, et le
petit lapin donnera naissance à une paire de lapins tous les mois après le troisième mois.
Si les lapins ne le sont pas mort, demandez le nième Quel est le logarithme du lapin dans le mois?

	'''
    作者: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))	

Insérez la description de l'image ici

2. Compléter un système de blog (oblige les utilisateurs à s'inscrire, à se connecter, à publier des blogs, à supprimer des blogs, à ajouter des blogs et à interroger des fonctions de blog)

'''
    作者: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()

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

3. En supposant que l'utilisateur ne peut monter qu'une ou deux étapes à chaque fois, veuillez écrire une fonction pour déterminer le nombre de façons dont l'utilisateur doit passer à la nième étape.

'''
    作者: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))

Insérez la description de l'image ici

4. Trouvez le nombre dans 10000 qui peut être divisible par 5 ou 6, mais non divisible par les deux en même temps (fonction)

'''
    作者: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))

Insérez la description de l'image ici

5. Écrivez une méthode pour calculer la somme de tous les éléments en indice pair de la liste (notez la valeur de retour)

'''
    作者: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))

Insérez la description de l'image ici

6. Déterminer si un nombre est premier (nombre premier)? Comment déclarer une méthode?

'''
    作者: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)

Insérez la description de l'image ici

7. Veuillez utiliser la fonction pour compléter les trois types de sélection, bouillonnement et insertion

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

8. Quelqu'un entre dans l'échiquier suivant, demande à partir du coin supérieur gauche et sort enfin du coin inférieur droit (nécessaire pour avancer uniquement, pas en arrière),
question: Combien de coups y a-t-il?

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

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_47514459/article/details/112849023
conseillé
Classement