Merci de révision du code mon exemple de programme en Python
Je suis encore à apprendre Python que je veux enseigner les concepts essentiels de la langue à onze ans, les enfants (je travaille en tant qu'enseignant). Nous avons fait un peu de travail de base pour l'aider à comprendre les éléments essentiels de la programmation et de la décomposition des tâches en morceaux et telles. Python est le langage qui va être enseigné à tous à travers le royaume-UNI avec le nouveau programme à venir et je ne veux pas apprendre aux enfants les mauvaises habitudes. Ci-dessous est un petit programme que j'ai écrit, oui je sais que c'est mauvais, mais tous les conseils sur les améliorations serait très apprécié.
Je suis toujours le labour à travers des tutoriels sur le langage, de sorte s'il vous plaît être doux! :o)
# This sets the condition of x for later use
x=0
# This is the main part of the program
def numtest():
print ("I am the multiplication machine")
print ("I can do amazing things!")
c = input ("Give me a number, a really big number!")
c=float(c)
print ("The number", int(c), "multiplied by itself equals",(int(c*c)))
print("I am Python 3. I am really cool at maths!")
if (c*c)>10000:
print ("Wow, you really did give me a big number!")
else:
print ("The number you gave me was a bit small though. I like bigger stuff than that!")
# This is the part of the program that causes it to run over and over again.
while x==0:
numtest()
again=input("Run again? y/n >>>")
if x=="y":
print("")
numtest()
else:
print("Goodbye")
Quelle est votre question?
Après
print("Goodbye")
, toujours à l'intérieur de la else
, je mettrais x = 1
de sorte que la boucle ne se répète pas lorsque l'utilisateur tente de quitter. Aussi, ce que les autres ont répondu, vous avez besoin de vérifier if again=="y"
Éviter de mettre un espace entre l'appel de la fonction et de la parenthèse. Vous pouvez (pas sûr) ont une certaine ambiguïté avec Python 2, car
print ("string", 10)
impression d'un n-uplet mais print("string", 10)
impression des deux valeurs.
OriginalL'auteur Kirk Rogers | 2013-03-25
Vous devez vous connecter pour publier un commentaire.
Vous ne semblez pas besoin de la variable
x
numtest()
deux fois de suite sans se poser entre les deux si vous voulez l'exécuter à nouveau. Je ne pense pas que la premièreif
branche ajoute quoi que ce soit.bon spotting. Il ajoute simplement une ligne vide maintenant
Je vous remercie. En quelques lignes vous ont aidé à m'en sortir avec le while true commande et m'a introduit à la commande "pause" merci.
OriginalL'auteur John La Rooy
Depuis que vous désirez enseigner la bonne style:
De ne pas utiliser des noms de variables comme
x
sauf si vous créez un graphique. Voir PEP008 pour les conventions de nommage et de style.Être cohérent avec vos espaces:
n'est pas cohérente. Quel est le meilleur style?
Si vous voulez vraiment une boucle infinie alors:
Puis de nouveau, certaines personnes pensent que l'utilisation de
break
est mauvais style, faites votre accord? Comment voulez-vous réécrire la boucle afin de pause n'est pas utilisé? Un exercice de vos élèves, peut-être?Merci pour les conseils. Je pense que j'ai posté dans le mauvais forum mais hé ho! Je n'en ai aucune idée (pour le moment) comment réécrire afin de pause n'est pas utilisé, sauf à coller à la fin et espérer pour le mieux :o) Le niveau, je suis en train de travailler avec les enfants est très simple, il suffit de les introduire à la langue. Ils ne sont que neuf ans!
Depuis vos élèves sont "seulement" neuf ans, alors vous avez une responsabilité encore plus grande pour montrer lisible, clair, code. Si vous vous montrez le plus impénétrable de gâchis, alors vous pourriez vous mettre d'eux ou de leur faire croire que bâclée est OK. Les leçons à apprendre, à cet âge, rester avec vous le reste de votre vie, et sont difficiles à briser plus tard.
OriginalL'auteur cdarke
vous devez sortir de la boucle
de votre temps devrait être
tout nouveau == 'y':
ainsi
OriginalL'auteur Zokis
Certains je l'espère utile commentaire:
Utiliser une docstring au lieu d'un commentaire pour décrire votre fonction
Utilisation cohérente de style pour votre code et essayer d'obtenir vos étudiants à suivre, trop.
Si vous n'êtes pas absolument sûr de ce style à suivre, l'utilisation PEP-8. (Dans votre cas, il existe des différences dans la façon dont vous traitez les espaces dans la même opération sur des lignes différentes).
Pourquoi faire un float et int plus tard?
Il pourrait être utile d'apprendre les ordinateurs de traiter les opérations en virgule flottante différemment des opérations sur entiers, mais ce n'est pas vraiment illustré ici.
Vous appelez
numtest
deux fois dans la boucleEssayez plutôt ceci:
Pour être sûr, @KirkRogers, qu'il n'est pas juste Python fonctionne avec des nombres. C'est la façon arithmétique à virgule flottante œuvres, et très peu de langages de programmation ne pas travailler de cette façon. Il serait difficile de donner un très bon traitement de que sans l'enseignement en mathématiques binaires, cependant.
Merci pour vos conseils. nous avons fait un peu de travail avec la mathématique binaire (bien que probablement nulle part sur le niveau que vous pensez de la. Le plus gros problème que je vais faire face est de savoir comment Python traite avec des nombres.
Par exemple, Dans la BASE INT, c'est tout simplement tomber tout ce qui est après la virgule, mais en Python une variable peut être définie comme étant de type int. Le flotteur de le nombre sera toujours x.o
Je vais vous donner un exemple, lorsque nous avons écrit un programme en basic vérifier la divisibilité d'un nombre, nous avons comparé le nombre entier de la division de l'original de la réponse de la division. Si les deux sont le même, alors que le nombre est un multiple de x. . C'est à dire. 10/2 est le même que le nombre entier de 10/2 donc dix est un multiple de 2. En python bien que, cette langue est totalement hors de la fenêtre. Le nombre doit être converti en un flotteur et le lorsque vous comparez le flotteur à l'entier de la comparaison de 5,0 à 5 Évidemment pas le même. Comment voulez-vous faire? Je suis presque déchirant mes cheveux ici. :o) Merci & en ce qui Concerne Kirk
OriginalL'auteur kojiro