[Python] Rétrospective de ce que j'ai enseigné aux débutants en programmation à partir des fonctions

Pas limité à Python, quand il s'agit de démarrer avec les programmes, après la construction de l'environnement, Hello World et quatre règles de fonctionnement,

  1. Branchement conditionnel par if ... else
  2. Traitement itératif de for et while Après ça
  3. Fonction Je pense que cela ressort souvent.

Mais personnellement, est-il préférable d'enseigner aux débutants dans cet ordre afin de «créer un programme d'entreprise résistant au changement»? J'ai toujours pensé.

Ainsi, quand j'ai eu la chance d'enseigner la programmation python à une petite équipe, je leur ai enseigné des «fonctions» qui ne sont pas des procédures générales du manuel. Ensuite, j'ai d'abord essayé de mettre l'idée de ne pas utiliser "else" dans l'instruction if.

Nous reviendrons sur le processus de réponse et résumerons ce que nous avons remarqué.

Ce qui suit n'est qu'une description évidente pour ceux qui la connaissent, et il n'y a pas de nouvelles techniques ou sujets. De plus, je vais résumer ce qui s'est passé après la construction de l'environnement, Hello World, et les quatre règles de calcul ont été complétées.

Contexte

L'un des membres était un débutant en programmation, mais il y avait aussi un membre qui a écrit un programme pour sa propre recherche en utilisant "R" et ainsi de suite.

Le but ultime de l'équipe était «Je veux être en mesure de créer un système d'entreprise à la fin», j'ai donc expliqué tout d'abord que les trois points suivants devraient être soulignés comme politique de départ.

«Afin de réduire les bogues, le programme est construit avec l'idée que la réduction du nombre de branches est la première priorité. ―― En supposant que les changements se produiront toujours, réfléchissez ensemble aux programmes qui résistent aux changements. —— Pensez à la «lisibilité» des programmes créés par d'autres membres et des programmes que vous avez créés il y a quelques mois.

environnement

thème

L'équipe cherchait un programme à utiliser pour une certaine tâche, donc le thème de l'introduction a été créé en fonction du thème de la tâche.

--Calculez le taux par habitant en fonction du nombre de personnes selon la liste de prix.

Nombre de personnes Frais
moins de 10 980
11~20 840
21 ou plus 720

La première chose que j'ai enseignée était une fonction

Nous leur avons demandé de réfléchir à ce dont ils avaient besoin pour obtenir le prix souhaité. Ensuite, il a appris à écrire une «fonction» avec la valeur cible comme «valeur de retour» et l'entrée comme «argument».

fee_calculate.py


#squelette
def fee_calculate(num): #Fonction pour calculer la charge à partir du nombre de personnes
    #do_something
    fee = 980 #Pour bouger pour le moment
    return(fee)

num = 5 #Définissez le nombre de personnes
fee = fee_calculate(num) #Utilisez une fonction pour trouver le prix
print(fee) #"980" pour afficher le résultat

Il n'y a rien à l'intérieur de la fonction, mais j'ai écrit que "j'obtiens la valeur que je veux en utilisant la fonction".

La prochaine chose que je t'ai apprise est de ne pas utiliser d'autre

Ensuite, j'ai appris à déterminer le prix en fonction du nombre de personnes. En outre, il a introduit l'idée que «vous devriez être capable de lire différentes manières d'écrire des déclarations, mais vous n'avez pas à les utiliser activement vous-même».

fee_calculate.py


#Calcul des frais
def fee_calculate(num): #Fonction pour calculer la charge à partir du nombre de personnes
    if 1 <= num <= 10:
        fee = 980
        return(fee) #Revenir dès que le résultat sort

    if 11 <= num <= 19:
        fee = 840
        return(fee) #Revenir dès que le résultat sort

    if 20 <= num:
        fee = 720
        return(fee)

num = 5 #Définissez le nombre de personnes
fee = fee_calculate(num) #Utilisez une fonction pour trouver le prix
print(fee) #"980" pour afficher le résultat

Si vous demandez des frais, il vous suffit de «retourner». Nous avons discuté de la facilité d'écriture, de lecture et de changement avec les membres par rapport aux anti-patterns qui utilisent ʻelse et ʻelif.

#Anti-motif
def fee_calculate_a(num):
    if 1 <= num <= 10:
        fee = 980
    elif 11 <= num <= 19: #Essayez d'utiliser elif
        fee = 840
    else: #Essayez d'utiliser else
        fee = 720
    return(fee) #Résultat de retour

num = 21 #Définissez le nombre de personnes
fee = fee_calculate_a(num) #Utilisez une fonction pour trouver le prix
print(fee) #"720" pour afficher le résultat

Je pensais qu'avec un si petit programme, je ne serais peut-être pas en mesure de réaliser la différence de facilité d'écriture, de lecture et de changement, mais les membres ayant une expérience en programmation étaient d'accord avec cette idée dans le bon sens. donné. En conséquence, cela a été utile car il est devenu un lieu pour les participants d'échanger des opinions et de réfléchir. Les opinions de l'équipe sont décidées démocratiquement, il semble donc que les membres débutants aient pensé: "C'est ce que c'est".

Conscience de ce que j'ai appris de la fonction

En apprenant l'idée «d'obtenir la valeur que vous voulez en utilisant une fonction» et en me rappelant comment appeler une fonction, j'ai senti que j'aurais pu commencer dès le début pour essayer d'utiliser la bibliothèque. Il y a. (Par exemple, utilisez «calendrier» pour trouver le nombre de jours dans un mois.)

Il est important de penser vous-même à l'algorithme et de le créer, mais comment trouver et utiliser de nombreuses «bibliothèques pratiques» dans le monde et comment les combiner? Je pense qu'il est important d'apprendre de telles choses si vous apprenez un langage de programmation maintenant.

Qu'est-il arrivé après ça?

J'ai appris Python sous forme de sessions d'étude divisées en plusieurs fois, mais je pense que les membres débutants ne cessent de croître. En d'autres termes, le comportement de "penser à ce que vous voulez faire et d'abord google pour trouver la bibliothèque" est né. Si vous comprenez comment utiliser la fonction, il existe de nombreuses bibliothèques que vous pouvez utiliser si vous vous souvenez de ʻimport`.

Dans la session d'étude, tout en vous entraînant à donner un thème, réfléchissez à la manière de le résoudre et créez un programme, un «test», une «gestion des erreurs» et une «sortie de journal» indispensables à la création d'un système d'entreprise Nous apprenons ensemble la manière de penser et comment y faire face.

Python3 possède une riche bibliothèque d'outils de "test", de "gestion des erreurs" et de "sortie de journal", mais il est important d'apprendre et de réfléchir à un stade précoce comment il est fait et comment il est préférable de l'utiliser. Parce que ça devient.

Quand as-tu enseigné la répétition

Pour conclure, chacun a pu le faire sans le leur dire clairement. Une fois que vous avez appris à apprendre, il est plus rapide d'apprendre par vous-même que d'enseigner.

À propos, dans le programme de calcul des frais mentionné précédemment, la répétition est utilisée lorsque vous souhaitez traiter plusieurs candidats à la fois.

L'échantillon pour calculer à plusieurs reprises la charge pour la liste du nombre de candidats est le suivant.

#répétition
list = [5, 11, 21, 7, 15, 30] #Liste du nombre de candidats

def fee_calculate(num): #Fonction pour calculer la charge à partir du nombre de personnes
    if 1 <= num <= 10:
        fee = 980
        return(fee)

    if 11 <= num <= 19:
        fee = 840
        return(fee)

    if 20 <= num:
        fee = 720
        return(fee)

for num in list: #Extraire le contenu de la liste un par un
    fee = fee_calculate(num) #Utilisez une fonction pour trouver le prix
    print(fee) #Voir les résultats

Choses qui ont tendance à se produire lorsque vous apprenez d'abord la répétition

L'idée est de commencer par tourner la boucle, puis la fonction ne peut pas être coupée. (Parce que ce n'est rien de plus qu'un tracas pour créer une fonction plus tard dans cette procédure.) Je pense qu'il est difficile d'améliorer vos compétences en programmation si vous ne faites que ce type de programme, sauf lorsque vous créez personnellement un programme jetable.

#Anti-motif
list = [5, 11, 21, 7, 15, 30] #Liste du nombre de candidats

for num in list: #Extraire le contenu de la liste un par un
    if 0 <= num <= 10: #Jugez du nombre de personnes éliminées ...
        fee = 980
    elif 11 <= num <= 19:
        fee = 840
    else:
        fee = 720
    print(fee)

En comparant les deux programmes, le plus court est l'anti-pattern, mais celui qui est le plus facile à lire, j'espère que cela vous donnera l'occasion d'y réfléchir.

Personnellement, il est facile d'écrire ʻelse et ʻelif, mais en lisant, je trouve gênant de voir les conditions précédentes. Même en japonais, il est plus facile de comprendre si vous dites «Cette fois». Quand les gens disent: "Dans d'autres cas comme celui-ci", cela devient "Lequel?" Par conséquent, j'essaye de ne pas utiliser «else» et «elif», qui ne sont pas inévitables.

référence

Anti-pattern de branche

Recommended Posts

[Python] Rétrospective de ce que j'ai enseigné aux débutants en programmation à partir des fonctions
J'ai repensé à la classe Python
Débutants en Python accro à Django
Ce que j'ai fait lors de la mise à jour de Python 2.6 vers 2.7
Guide du débutant Python (fonctions)
Python que je voudrais recommander aux débutants en programmation
Retour sur ABC155
J'ai essayé d'envoyer des courriels depuis sendgrid régulièrement avec heroku, avec python
J'ai pensé à un cours pour débutants sur Python basé sur des jeux blockchain
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
Retour sur iOS'Healthcare App '2019
Python #function 1 pour les super débutants
J'ai exécuté python sur Windows
Ce que j'ai appris en Python
Ce que les débutants pensent de la programmation en 2016
Remarques sur l'accès à dashDB à partir de python
Appeler C / C ++ depuis Python sur Mac
Mettre à jour Mac Python de 2 à 3
J'ai refactoré "J'ai essayé de faire d'Othello AI lorsque les débutants en programmation ont étudié python"
Rétrospective 2019 ~ Un an depuis que j'ai commencé à poster sur Qiita ~ + Où je me suis retrouvé coincé avec python pip