Parlons des idées de programmation Python

WBOY
Libérer: 2022-06-27 13:55:05
avant
2788 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur python, qui organise principalement les problèmes liés aux idées de programmation. Python est un langage de script oop orienté objet (programmation orientée objet). Le cœur des idées de programmation est la compréhension. Jetons un coup d'œil au fonctionnel. logique ci-dessous. J’espère que cela sera utile à tout le monde.

Parlons des idées de programmation Python

Apprentissage recommandé : Tutoriel vidéo Python

Python est un langage de script oop (Object Oriented Programming) orienté objet.

Orienté objet est une méthode qui utilise le concept d'objets (entités) pour construire des modèles et simuler le monde objectif afin d'analyser, de concevoir et de mettre en œuvre des logiciels.

Dans la programmation orientée objet, les objets contiennent deux significations, l'une étant la donnée et l'autre l'action. L'approche orientée objet combine les données et les méthodes en un tout, puis le modélise de manière systémique.

Le cœur de la réflexion sur la programmation Python est comprendre la logique fonctionnelle Si vous ne comprenez pas la logique de résolution d'un problème, alors votre code semblera très compliqué et difficile à lire, donc une fois que la logique est claire, effectuez une programmation systématique des fonctions en fonction des modules, alors la conception de votre code sera définitivement magnifique ! ! !

1 Modèle de programmation de base

Toute programmation comprend des IPO, qui représentent les éléments suivants :

  • I : Entrée, l'entrée du programme

  • P : Processus, le processus logique principal du programme

  • O : Sortie, la sortie du programme

Donc, si vous souhaitez implémenter une certaine fonction via un ordinateur, alors le modèle de programmation de base contient trois parties, comme suit :

  • Déterminer l'introduction en bourse : Clarifier l'entrée et la sortie des fonctions qui doivent être implémentées, ainsi que le processus logique de mise en œuvre principal ;

  • Écrire des programmes : concevoir et afficher le processus logique de calcul et de solution à travers des langages de programmation ;

  • Débogage de programmes ; : Suivez la logique du programme écrit Déboguez le processus pour vous assurer que le programme s'exécute correctement selon la logique correcte.

2 Méthode efficace pour résoudre des problèmes complexes : top-down (conception)

2.1 Top-down-diviser pour régner

Si la logique pour implémenter la fonction est relativement complexe, elle doit être implémentée Conception modulaire décompose les problèmes complexes en plusieurs problèmes simples, et les problèmes simples peuvent continuer à être décomposés en problèmes plus simples jusqu'à ce que la logique fonctionnelle puisse être réalisée grâce à la programmation de modules, qui est également une programmation De haut en basCaractéristiques. Le résumé est le suivant :

  • Exprimer un problème général sous une forme composée de plusieurs petits problèmes
  • Utiliser la même méthode pour décomposer davantage les petits problèmes
  • Jusqu'à ce que les petits problèmes puissent être résolus simplement et clairement par les ordinateurs

2.2 Exemple 1 : Analyse des compétitions sportives

2.2.1 Cadre général du programme

printlnfo()                                                                                 Étape 2 : Obtenir les paramètres d'exécution du programme : proA, proB, n
simNGames() Étape 3 : Utilisez les valeurs de capacité des joueurs A et B pour simuler n jeux.
printSummary() Étape 4 : Affichez le nombre et la probabilité que les joueurs A et B gagnent la partie.

2.3 Exemple 2 : La méthode descendante de la séquence de Fibonacci

utilise en fait

la récursion pour résoudre le sous-problème

La solution finale n'a besoin que d'appeler Récursive, les sous-problèmes sont. résolu étape par étape de manière récursive vers les niveaux inférieurs. "Programmation :" vers le haut Up (Exécution)

3.1 Bottom-up - Intégration modulaire

自底向上(执行)就是一种逐步组建复杂系统的有效测试方法。首先将需要解决的问题分为各个三元进行测试,接着按照自顶向下相反的路径进行操作,然后对各个单元进行逐步组装,直至系统各部分以组装的思路都经过测试和验证。

理解自底向上的执行思维:模块化集成

自底向上分析思想:

  • 任何时候栈中符号串和剩余符号串组成一个句型,当句柄出现在栈顶符号串中时,就用该句柄进行归约,这样一直归约到输入串只剩结束符、栈中符号只剩下开始符号,此时认为输入符号串是文法的句子,否则报错。

自底向上是⼀种求解动态规划问题的方法,它不使用递归式,而是直接使用循环来计算所有可能的结果,往上层逐渐累加子问题的解。在求解子问题的最优解的同时,也相当于是在求解整个问题的最优解。其中最难的部分是找到求解最终问题的递归关系式,或者说状态转移方程。

3.2 举例:0-1背包问题

3.2.1 问题描述

你现在想买⼀大堆算法书,有一个容量为 V 的背包,这个商店⼀共有 个商品。问题在于,你最多只能拿 W kg 的东西,其中 wi vi 分别表示第 i 个商品的重量和价值。最终的目标就是在能拿的下的情况下,获得最大价值,求解哪些物品可以放进背包。

对于每⼀个商品你有两个选择:拿或者不拿。

3.2.2 自底向上分析

⾸先要做的就是要找到“子问题”是什么。通过分析发现:每次背包新装进⼀个物品就可以把剩余的承重能力作为⼀个新的背包来求解,⼀直递推到承重为0的背包问题。

m[i,w] 表示偷到商品的总价值,其中 i 表示⼀共多少个商品,w 表示总重量,所以求解 m[i,w]就是子问题,那么看到某⼀个商品i的时候,如何决定是不是要装进背包,需要考虑以下:

  • 该物品的重量大于背包的总重量,不考虑,换下⼀个商品;
  • 该商品的重量小于背包的总重量,那么尝试把它装进去,如果装不下就把其他东西换出来,看看装进去后的总价值是不是更高了,否则还是按照之前的装法;
  • 极端情况,所有的物品都装不下或者背包的承重能力为0,那么总价值都是0;

由以上的分析,可以得出m[i,w]的状态转移方程为:

m[i,w] = max{m[i-1,w], m[i-1,w-wi]+vi}

3.2.3 程序设计

# 循环的⽅式,自底向上求解
cache = {}
items = range(1,9)
weights = [10,1,5,9,10,7,3,12,5]
values = [10,20,30,15,40,6,9,12,18]
# 最⼤承重能⼒
W = 4

def knapsack():
    for w in range(W+1):
        cache[get_key(0,w)] = 0
    for i in items:
        cache[get_key(i,0)] = 0
        for w in range(W+1):
            if w >= weights[i]:
                if cache[get_key(i-1,w-weights[i])] + values[i] > cache[get_key(i-1,w)]:
                    cache[get_key(i,w)] = values[i] + cache[get_key(i-1,w-weights[i])]
                else:
                    cache[get_key(i,w)] = cache[get_key(i-1,w)]
            else:
                cache[get_key(i,w)] = cache[get_key(i-1,w)]
    return cache[get_key(8,W)]

def get_key(i,w):
    return str(i)+','+str(w)

if __name__ == '__main__':
    # 背包把所有东西都能装进去做假设开始
    print(knapsack())
Copier après la connexion
29
>>>
Copier après la connexion

推荐学习:python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal