Quel serait un bon ensemble d'exercices de programmation qui aideraient les débutants Python à apprendre l'utilisation de la construction "si ... autre"? Je pourrais cuisiner ce qui suit, connaissez-vous de plus? P>
La plupart du public envisagé n'ont pas eu une grande partie d'une exposition à la programmation auparavant, et je tiens à les faire avertir de penser correctement à "si ... sinon" (et tout le reste de cela, en temps voulu) . p>
11 Réponses :
J'ai démontré le sujet dans DaniWeb par numéro Guess Jeu . Quelque chose de similaire peut-être? P>
Utiliser si..elez dans l'instruction Imprimer au lieu de Multiline si c'est mon utilisation préférée de la construction. P>
J'ai vu d'autres réponses à suggérer des choses pour la normale si la déclaration, donc j'ai cuisiné un moi-même: p>
Je pense que la valeur pratique serait d'utiliser si dans la déclaration de pause comme réaction à l'entrée de l'utilisateur. En même temps, vous pouvez enseigner à essayer ... Sauf par exemple lorsque vous ne devez pas utiliser si dans Python. P>
Essayez un jeu simple, comme si vous appuyez sur 'L', tournez à gauche, si vous appuyez sur 'R », tournez à droite, s'il y a un monstre, vous mourez, etc. P>
SkilldRick, n'aurons pas besoin de boucles pour ça? Nous n'avons pas encore atteint la boucle. Merci.
Je pense vraiment basique, avec beaucoup de répétition. Donc, plutôt que d'utiliser une boucle, répétez simplement le code. A l'avantage supplémentaire que vous pourriez revenir plus tard et montrer combien de lignes de code dont vous auriez besoin si vous l'avez fait avec une boucle :)
Merci Skilldrick, pensera celui-ci et voir ce que je peux en faire.
"Déterminez si une année donnée est une année de saut" à l'esprit à l'esprit presque immédiatement. Donnez simplement les règles et tournez-les. P>
Autres possibilités (bien qu'avec des trucs autres que Pour rien, mais C'est juste un gros explosion de possibilités que vous pouviez vous échapper. P> si code> déclarations): p>
si code> déclarations si vous ne voulez pas une boucle). li>
si / else code> déclarations, l'année saut est bonne. Vous pouvez également envisager: P>
Merci. La question de l'année bissextile est bonne. Pour TTT et deviner le nombre, n'avons-nous pas besoin d'une sorte de boucle aussi?
@gphilip, ah, oui. Je n'avais pas réalisé que vous vouliez juste i> des déclarations de sélection. Je vais mettre à jour la réponse.
Il existe de nombreuses options ici. Peut-être laissez-les construire une calculatrice simple, en tenant compte de division par zéro strong>, numéros impairs / même strong> etc. P>
EDIT: trouvé ce simple Exercice sur if-sinon (en Java) qui peut être transformé en python. P>
C'est difficile pour ceux d'entre nous qui ont été programmés pendant des années pour "obtenir" de quoi il ressemble de partir de rien. Je tiendrais à éviter tout problème nécessitant plus de 5 lignes de code.
Vous devez décider de la commande dans laquelle vous couvrez des éléments tels que l'entrée utilisateur, la sortie, si, pour, le fichier io, etc. p >
Lorsque vous couvrez si vous savez déjà comment obtenir une entrée utilisateur? Imprimer une certaine sortie? Code A pour boucle? Faire arithmentic sur des entiers? Déterminez si un nombre est divisible par un autre nombre? P>
Les réponses à ces questions limitent vos exemples pour si. P>
Je suggérerais de faire de la production, de l'arithmentique, de la divisibilité (module) , Entrée utilisateur avant de faire si. P>
puis je peux poser des problèmes tels que p>
Djna, nous avons déjà couvert comment obtenir la sortie de l'utilisateur et l'impression de l'utilisateur. Pas encore de boucles. Test entier arithmétique et divisibilité, oui. Nous couvrirons bientôt l'une des boucles, puis je peux utiliser vos suggestions. Merci.
Vous pouvez utiliser si / sinon pour déterminer si un numéro entré est impair ou même.
Je ne sais pas comment l'étudiant le prendrait, mais si je pouvais décider de la planification d'enseignement de Python pour les débutants sans préconception, je serais sûr de remplir la compréhension de la liste Pythonic et d'essayer. Sauf #Finalement (avec une erreur de zérodivision, lorsque vous parlez de arithmétique) Tout d'abord, alors dites: Si vous avez besoin de nombreuses lignes de code avec une mission ici, c'est ceci pour..LLSE, tandis que..LLSE, MULLINE si..LIF..LIF...LIF Pour vous donner le pouvoir de le faire (peut-être après avoir appris Faire des fonctions et apprendre ce genre, max, min sont prêts et ils n'ont pas besoin de les faire eux-mêmes).
À mon avis, le La plupart du temps, je n'utilise pas J'essaie également de suivre le Je pense que vos exemples devraient en tenir compte. Donc, je n'utiliserais pas le jeu code> Monster code> ou la division I Utilisez principalement Je pense que vous ne devriez pas prendre un algorithme difficile à titre d'exemple si votre objectif est d'enseigner la syntaxe de la langue. Apprendre à programmer est certainement un défi suffisant. P> Donc, je pense que tout exemple stupide comme celui ci-dessous devrait fonctionner. p> Il pourrait également s'agir d'une 1ère étape de la compréhension de la liste si vous envisagez de le montrer. P> si code> est un sujet intéressant à Python. Je recommanderais de prendre en compte la philosophie de la langue lors de l'introduction. si code> comme alternative au commutateur C ++ code> . Je préfère un dictionnaire de fonctions. P> Il est plus facile de demander pardon que la permission code> règle et je préfère attraper des exceptions. P> par zéro code> idées. Il peut être drôle de mettre en œuvre mais n'est pas très pythonique à mon avis. P> si code> comme filtre. P> songs = [Song('Blackbird', 1968), Song('Penny Lane', 1967), Song('Jenny Wren', 2005)]
print [song.title for song in songs if song.year<1970]
Luc, j'ai bien peur que votre réponse soit un peu sur la tête pour moi, de ne rien dire de mes étudiants :-)
+1: bons points et exemple (@gphilip s'il vous plaît apprendre ce que @LUC suggère pendant que vous enseignez). En outre, belle sélection de chansons! :-)
Je suis définitivement seconde la compréhension de la liste. N'enseportez pas de réimplémenter une boucle par compteur manuelle, lorsque vous devriez généralement éviter le style d'indexation en Python. Même ma réponse est à dessegalement conçue un code-golf.
Une fois que vous l'avez fait boucler et / ou fonctionner, un excellent serait "quatre est magique" - quatre est le seul mot avec le même numéro de lettres que le numéro et supposément tous les numéros convergent à quatre. Donc, le jeu va quelque chose comme ceci:
one hundred is ten ten is three three is five five is four four is magic
Ceci est Code Golf: Four est magique Stackoverflow.com/questions / 3230978 / Code-Golf-Four-Is-Magic , les solutions Pythos pour cela, y compris la mine, n'ont pas une seule déclaration IF.
@Tony, cela ne veut pas dire si / sinon la logique est inapproprié. Heck, la solution la plus directe pose pratiquement des déclarations de ramification simples. En outre, le code du code est pas i> code typique (si c'est le cas, permettez-moi de savoir où vous travaillez pour que je puisse éviter leurs produits!). Bien sûr, le golf du code et les désirs des OPS sont deux choses entièrement différentes. Et vous avez programmé assez longtemps pour savoir que vous pouvez aborder tout problème de différentes manières (fonctionnelles, OOP, impératif, bla bla bla).
La solution la plus directe pour moi sans truc de code de golf est toujours une recherche de dictionnaire. Bien sûr, tout ce qui peut programmer de nombreuses manières, sûrement le problème retinlerait bien en prolog ou que vous pouvez effectuer un algorithme récursif avec si (si le nombre est supérieur à vingt ... Si Numéro == 4: Print "Four est magique"). J'étais juste inquiet que les étudiants puissent avoir l'habitude d'utiliser si ... Elif quand devrait. Et j'ai inversé les changements que quelqu'un a fait pour rendre ma solution plus courte. Il devrait être facilement compréhensible (recherche simple numéro heex).
L'un des meilleurs est le projet Euler Problème n ° 1. P>
http://projecteuler.net/index.php?section=problèmes&id=1 p>
Cela nécessite des soins considérables pour obtenir exactement les conditions IF-conditions. P>
J'aime les "Trois hommes et un singe sur une île" Problème: P>
Trois hommes sont bloqués sur un désert île avec un singe. Ils collectent toutes les noix de coco et les mettre dans une grosse tasse. Puis tout au long de la nuit Chaque homme se lève secrètement et prend 1 / 3ème de la pile restante et la cache. Lorsque il scindre la pile en tiers il y a 1 restant qu'il donne à la singe. Puis dans la matinée après ils se réveillent tous ils ont divisé la pile en 1 / 3rds ... avec 1 gauche pour le singe. Combien de cocoes étaient dans la pile à l'origine? P> blockQuote>
La stratégie générale de résolution de cela consiste à utiliser une boucle pour vérifier tous les nombres de 1 à 10 000 (ou d'autres grands nombres). Vous devez utiliser
si code> déclarations pour vérifier le reste. Vous pouvez ensuite élargir ce problème à un problème de mot plus général des X-Men et Y-Singes ... Cela nécessite une boucle imbriquée. P>
Vous pouvez également préparer vos programmeurs débutants pour réussir le Test FIZZBUZZ < / a>. Voyant comment il s'agit d'une fonction de filtrage extrêmement courante pour l'embauche de programmeurs que vous pourriez citer: p>
"Après avoir terminé cette affectation, vous
sont supérieurs à 199 sur 200 programmeurs
qui s'appliquent aux postes professionnels " p>
blockQuote>
à ma conférence, je leur ai demandé de mettre en œuvre Si vous leur avez enseigné Récursion, je peux vous donner quelques suggestions supplémentaires :) p> is_between_5_8 (x) code> (j'admette, il n'y a pas de motivation ultérieure avec l'utilisation de 5 code> et 8 code> 8 code>) , et après, je leur ai donné les exercices pour mettre en œuvre ABS (x) code> et le plus proche_to_zero (x, y) code>. p>.
À propos des exemples: 1. Il existe une sorte de max (liste) et min (liste). 2. Il doit y avoir une sorte de date d'arithmétique à Python.
S'il vous plaît faire une question de wiki communautaire.