Introduction à la programmation (Python) TA Tendency pour les débutants

Cet article est l'article du 8ème jour du DSL Advent Calendar 2019.

Cet article peut être plus un rapport pour les éducateurs en programmation. De plus, je n'essaie pas de critiquer une personne ou un groupe en particulier, il serait donc utile que vous compreniez cela.

À partir de cette année, une conférence intitulée "Introduction à la programmation" a débuté pour les étudiants de première année de premier cycle de tous les départements de l'Institut de technologie de Muroran. Dans ce cours, vous apprendrez systématiquement la programmation et le traitement des données en utilisant le langage de programmation "Python". L'exercice utilise le Jupyter Notebook fourni par National Institute of Informatics (NII). De plus, un .ipynb est distribué pour chaque exercice et un devoir pour chaque classe, et les questions sont traitées sous forme de questions et réponses.

Je participe à la conférence en tant qu'assistant pédagogique. Je voudrais présenter quelques points que les débutants en programmation qui ont remarqué dans ce processus trébuchent particulièrement lors de l'apprentissage de Python. J'espère que les personnes et les enseignants dans la même position qui ont vu cet article seront utiles.

Causes des erreurs courantes

  1. Saisie en plein angle
  2. Je ne connais pas les blocs d'indentation
  3. Je ne connais pas le type
  4. Le contenu de l'erreur ne peut pas être lu

Je présenterai le genre d'erreurs que j'ai commises à ce sujet et le type de mesures à prendre avec des exemples.

Je tape en plein angle

Exemple

--Espace pleine largeur

La saisie pleine largeur est également commune aux débutants en programmation. S'il y a un espace pleine largeur, une erreur se produira et le programme ne fonctionnera pas. Notez également que Python peut être facilement utilisé comme str même s'il s'agit d'un caractère pleine largeur. Ceux qui doivent être particulièrement prudents sont ceux qui tapent en pleine largeur de base. Surtout dans les temps modernes, certaines personnes ne sont pas habituées à la saisie au clavier plutôt qu'à la programmation, comme on dit que c'est la génération des smartphones. Dans ce cas, il n'est pas possible de connaître l'emplacement du symbole.

Solution

Je pense que la meilleure solution est de s'habituer au clavier. En dehors de cela, il peut être préférable de transformer le problème lui-même en un problème qui ne nécessite pas d'entrée pleine largeur. (Par exemple, toutes les parties qui produisent des phrases japonaises sont remplacées par l'anglais)

Je ne peux pas être conscient des blocs d'indentation

Exemple

Je vois souvent cette erreur.

for i in range(10):
    for j in range(10):
    print(f'i + j = {i + j}')  #Erreur:Le retrait n'est pas aligné

A l'origine, j'ai dû abaisser le retrait avec print (), mais il n'a pas été abaissé correctement. S'il s'agit d'une instruction double for comme ci-dessus, il n'y a pas tellement d'erreur, mais il semble que le nombre d'erreurs augmentera à mesure que le nombre de structures imbriquées augmente, comme l'inclusion de branches conditionnelles telles que if.

Ceci est favorisé par le copier / coller du programme et la fonction d'auto-indentation du jupyter. Il semble que beaucoup de gens trébuchent lorsqu'ils copient et collent un programme, plutôt que de tirer le programme d'une autre personne, lorsqu'ils conçoivent un problème en utilisant une partie du problème précédent et en l'incorporant dans le problème suivant. Par exemple, si le problème est que seule la branche conditionnelle est créée dans la première question et qu'elle est incorporée dans la boucle for de la deuxième question, la structure d'imbrication peut être en désordre avec la fonction d'indentation automatique et elle peut ne pas fonctionner en raison d'une erreur. De plus, il existe certains modèles dans lesquels la structure devient de plus en plus difficile à comprendre lorsque le retrait est pris dans plusieurs espaces.

Solution

--Comprendre la structure de nidification

Je pense que ces trois points fonctionnent généralement. En Python, contrairement au langage C, les boucles sont contrôlées par des retraits au lieu de parenthèses, une attention particulière doit donc être accordée à la structure d'imbrication. Il devient important que la commande nous dise d'abord l'importance du retrait quel que soit le programme. De plus, l'utilisation de la touche Tab rend la fonction de complétion et le travail de retrait un peu plus facile, donc je pense qu'il est important d'apprendre à l'utiliser tôt pour résoudre ce problème. Et lire l'erreur est la meilleure solution, mais je pense qu'il est essentiel de comprendre la structure car certains codes ne savent pas ce qui ne va pas.

Je ne peux pas être conscient du type

Exemple

C'est une telle erreur.

#modèle 1
a = 1
b = "1"
print(a + b)  #Erreur: int +str ne peut pas
print(a + int(b))  # 2

#Motif 2
a = (1, 2, 3)
b = [1, 2, 3]
a.append(4)  #Erreur:Taple ne peut pas ajouter
b.append(4)  # [1, 2, 3, 4]

Le modèle 1 est courant pour les débutants en programmation, mais comme il déclare des types dans des langages autres que Python, puis déclare des variables, je pense que vous devez être particulièrement prudent si vous apprenez un langage de programmation pour la première fois en Python. .. La même chose est vraie pour le modèle 2, où a est un taple et b est une liste, mais lorsque vous voulez ajouter des éléments à ces "tableaux", vous utilisez append, mais si vous êtes un débutant en programmation, vous pouvez utiliser des tapples même si le tableau est une liste. Il semble que cela ressemble presque au même (même dans un dictionnaire).

Solution

Je ne connais pas l'histoire difficile du type, donc je suis désolé, mais ça va car il est rapide de vérifier le type de variables etc. que je ne comprends fondamentalement pas en Python avec type (). De plus, si vous comprenez la différence entre les types, ce qui précède ne devrait pas se produire, il peut donc être préférable de passer plus de temps à enseigner. Et comme cela peut également être résolu en lisant l'erreur, l'affichage d'erreur est toujours excellent. Le reste concerne le module de saisie. Cela dépend de l'environnement Python, mais cette utilisation seule est susceptible de nécessiter un article, je vais donc omettre une explication détaillée, mais l'utilisation du module de saisie peut rendre le type plus conscient. ..

Je ne peux pas lire les détails de l'erreur

Il est particulièrement difficile de donner un exemple ici, je voudrais donc proposer une petite solution. En outre, cela peut être le plus important car la plupart des problèmes énumérés ci-dessus doivent être résolus simplement en étant capable de lire l'erreur.

Solution

――Résumé les phrases des erreurs attendues et leurs solutions

Je pense que ces deux points peuvent être facilement abordés. Tant que le contenu de l'erreur résout le même problème, on pense que la plupart des gens trébuchent souvent au même endroit. Par conséquent, je pense qu'il est bon de résumer à l'avance le contenu des erreurs attendues et leurs contre-mesures. De plus, en ce qui concerne la recherche Web, les débutants en programmation n'ont pas l'habitude des erreurs googlées. Avec Python, la plupart des erreurs peuvent être résolues simplement en copiant l'instruction d'erreur et en copiant les résultats de la recherche, il peut donc être plus facile de prendre une telle habitude.

Autres causes de problèmes insolubles

À partir de là, je voudrais énumérer brièvement ce qui semble être une erreur causée par l'utilisation de matériel didactique et de jupyter plutôt que la cause de l'erreur. Je pense que c'est un problème qui peut être facilement résolu à la fois du côté de l'enseignement et du côté de l'enseignement en comprenant les spécifications de jupyter.

  1. S'il n'y a pas d'erreur dans la cellule Jupyter, il est mal compris que la réponse est correcte.
  2. Le problème est divisé en plusieurs cellules et le résultat n'est pas celui attendu.

S'il n'y a pas d'erreur dans la cellule Jupyter, je comprends mal que c'est la bonne réponse

Dans l'environnement Jupyter Notebook actuellement fourni, lorsque la cellule est exécutée, le vert est affiché s'il n'y a pas d'erreur et le rouge est affiché s'il y a une erreur. Fondamentalement, il n'y a pas de problème si tout le vert est affiché, mais au contraire, cela peut gêner la progression. Par exemple, dans une cellule qui ne définit qu'une fonction, même si le comportement du contenu est un peu étrange, aucune erreur n'est affichée, donc la cellule peut être exécutée sans aucun problème. Par conséquent, il existe un problème que vous ne savez pas où chercher lorsqu'une erreur se produit après avoir effectué un traitement à l'aide de cette fonction dans la cellule inférieure.

Le problème est divisé en plusieurs cellules et le résultat n'est pas celui attendu

Ce problème est lié à ipynb distribué par mon université dans la conférence, et il est étroitement lié au problème ci-dessus, mais le problème est divisé en plusieurs cellules et le comportement lors de l'exécution est étrange. .. Veuillez vous référer à l'image ci-dessous pour un exemple.

スクリーンショット 2019-12-08 4.53.51.png

Si chaque problème dépend du résultat de l'exécution de la cellule ci-dessus comme ci-dessus, le comportement peut être suspect. Dans l'exemple ci-dessus, q3 est demandé en utilisant la liste et la fonction créées par q1 et q2, mais en réalité, cela peut être un processus ou un problème plus compliqué. Le problème, c'est que l'ordre d'exécution de la cellule est supposé être uniquement de haut en bas. Par conséquent, si vous l'exécutez à nouveau, le résultat peut être différent de la sortie existante. De plus, lorsque le notebook cesse de répondre en raison d'une erreur de serveur, etc., il peut être nécessaire de redémarrer le noyau, mais de nombreuses personnes ne l'exécutent qu'au milieu de la cellule. (C'est parce que je ne comprends pas que toutes les variables etc. sont réinitialisées en redémarrant)

Étant donné que les spécifications de ce jupyter sont maladroites, je pense qu'il est prudent de combiner un problème dans une seule cellule pour le résoudre.

Résumé

J'ai brièvement évoqué ce que je pensais lorsque je faisais de l'AT pour l'introduction à la programmation Python, mais j'ai eu l'impression que je trébuchais souvent parce que les professeurs n'y accordaient pas assez d'importance. Je suis fatigué d'écrire trop longtemps, donc je vais mettre un pinceau ici, mais en réalité, je trébuche sur un point plus trivial, donc c'est toujours difficile d'enseigner la programmation. se sentait. J'espère que cet article aide quelqu'un.

Recommended Posts

Introduction à la programmation (Python) TA Tendency pour les débutants
Une introduction à la programmation orientée objet pour les débutants par les débutants
Une introduction à la programmation Python
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Introduction à Python pour, pendant
Premiers pas avec Python pour les non-ingénieurs
[Python] Introduction à la création de graphiques à l'aide de données de virus corona [Pour les débutants]
Une introduction à Python pour l'apprentissage automatique
Une introduction à Python pour les programmeurs en langage C
Système de notation IPynb réalisé avec TA d'introduction à la programmation (Python)
Mémo n ° 4 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Python pour les super débutants Super débutants Python # Facile à éliminer
Mémo n ° 3 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Introduction au langage Python
Mémo n ° 1 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Introduction à OpenCV (python) - (2)
Manuel python pour les débutants
Essayez de calculer RPN avec Python (pour les débutants)
[Introduction à l'application Udemy Python3 +] 43. instruction for else
Mémo n ° 2 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Mémo n ° 7 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Guide du débutant Python (Introduction)
Mémo n ° 6 pour les débutants Python à lire "Explication détaillée de la grammaire Python"
Comment rendre le Python des débutants plus rapide [numpy]
[Pour les débutants] Comment étudier la programmation Mémo privé
OpenCV pour les débutants en Python
Mémo n ° 5 que les débutants Python lisent "Explication détaillée de la grammaire Python"
[Introduction pour les débutants] Manipuler MySQL avec Python
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Introduction à la base de données Graph Neo4j en Python pour les débutants (pour Mac OS X)
Comprendre le développement de Python pour Pepper. -Introduction à Python Box-
[Pour les débutants] Comment utiliser la commande say avec python!
Python que je voudrais recommander aux débutants en programmation
[Pour les débutants] Comment étudier le test d'analyse de données Python3
[Introduction à python] Introduction rapide à Python pour les programmeurs C ++ occupés
Préparation au démarrage de «Python Machine Learning Programming» (pour macOS)
Python # Comment vérifier le type et le type pour les super débutants
[Introduction à Python] Comment écrire des instructions répétitives à l'aide d'instructions for
AOJ Introduction à la programmation Sujet 1, Sujet 2, Sujet 3, Sujet 4
Introduction à Python Django (2) Win
Flux d'apprentissage pour les débutants en Python
Construction de l'environnement Python3 (pour les débutants)
3 raisons pour lesquelles les débutants en programmation devraient commencer avec Python
AOJ Introduction à la programmation Sujet n ° 5, Sujet n ° 6
Python #function 2 pour les super débutants
Grammaire de base Python pour les débutants
[Introduction à Python] <liste> [modifier le 22/02/2020]
Introduction à Python (version Python APG4b)
Pandas 100 coups pour les débutants en Python
Python #function 1 pour les super débutants
#List Python pour les super débutants
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 4 Utiliser l'interface graphique
[Introduction à l'application Udemy Python3 +] 42. pour instruction, instruction break et instruction continue
■ Kaggle Practice pour les débutants - Introduction de Python - par Google Colaboratory
[Explication pour les débutants] Introduction au traitement du pliage (expliqué dans TensorFlow)
Méthode d'apprentissage TensorFlow pour les professionnels des arts libéraux et les débutants en Python
Comment convertir le type Python # pour les super débutants de Python: int, float
[Pour les débutants] Script dans 10 lignes (4. Connexion de python à sqlite3)
Introduction à Python pour les utilisateurs de VBA - Appeler Python depuis Excel avec xlwings -
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image par eux-mêmes