Python à l'exception de l'entrée seulement si dans la gamme
Salut, je veux obtenir un nombre à l'utilisateur et uniquement, à l'exception de l'entrée dans une certaine plage.
Ci-dessous semble fonctionner, mais je suis un noob et de la pensée, alors qu'il fonctionne, il y a sans doute le plus bel exemple... juste essayer de ne pas tomber dans de mauvaises habitudes!
Une chose que j'ai remarqué que lorsque je lance le programme CTL+C ne cassera pas à me sortir de la boucle et soulève l'exception de la place.
while True:
try:
input = int(raw_input('Pick a number in range 1-10 >>> '))
# Check if input is in range
if input in range(1,10):
break
else:
print 'Out of range. Try again'
except:
print ("That's not a number")
Toute aide grandement appréciée.
Il semble que deux choses complètement distinctes des questions... Il est préférable de poser une question à la fois. Si vous obtenez deux réponses: l'une à la première question, et un autre pour la seconde, comment savez-vous qui à accepter?
Savez-vous que
Oui je savais que 10 était hors de la plage, mon erreur a été d'inclure dans le raw_input déclaration. Désolé rapidement mettre les valeurs à titre d'exemple. Merci.
Savez-vous que
range(1,10)
ne comprend pas 10? Votre raw_input
texte suggère que vous pourriez voulez que 10 pour être acceptable.Oui je savais que 10 était hors de la plage, mon erreur a été d'inclure dans le raw_input déclaration. Désolé rapidement mettre les valeurs à titre d'exemple. Merci.
OriginalL'auteur hemmy | 2012-07-21
Vous devez vous connecter pour publier un commentaire.
Ctrl+C soulève un
KeyboardInterruptException
, votretry … except
bloc attrape ce:En général, vous devez juste attraper les exceptions vous prévoyez d'arriver (donc pas d'effets secondaires apparaissent, comme votre Ctrl+C problème). Vous devez également garder à l'
try … except
bloc aussi court que possible.< 10
donnérange(1, 10)
par OPJ'ai toujours pensé qu'une autre déclaration de suivre un si ou elif déclaration. Je sais maintenant que c'est pas le cas.
Saviez-vous que
for
etwhile
boucles peut également être suivi par unelse
de l'instruction dans certains cas?merci, fixe que
Non, mais je le fais maintenant. Merci! Aussi l'exemple sur le lien est un sur un million de fois plus court que le premier numéro de programme que j'ai écrit il y a quelques mois... sympa.
OriginalL'auteur dav1d
Il y a plusieurs éléments dans votre code qui pourrait être amélioré.
(1) le Plus important, ce n'est pas une bonne idée de simplement attraper un générique exception, vous devez attraper un spécifiques celui que vous cherchez pour, et sont généralement à court de
try
-bloc que vous le pouvez.(2) Aussi,
serait mieux d'être codé comme
comme actuellement la fonction range() crée une liste de valeurs de 1 à 9, qui n'est probablement pas ce que vous souhaitez ou avez besoin. Aussi, voulez-vous inclure valeur 10? Votre invite de semble impliquer que, alors vous avez besoin d'ajuster votre appel à
range(1, 11)
, comme la liste des produits pas inclure le haut de gamme de la valeur. et leif
-déclaration doit être modifié pourif 1 <= input <= 10:
Mais il est une réponse valable à la première "question". L'OP a écrit "Le dessous semble fonctionner, mais je suis un noob et de la pensée, alors qu'il fonctionne, il y a sans doute le plus bel exemple... juste essayer de ne pas tomber dans de mauvaises habitudes!" Personnellement, bien que je sente que la Fpo première "question" devrait être supprimé ou déplacé dans une autre question, peut-être sur codereview.SE.
Grâce Levon. Tout ce que vous dit a du sens.
OriginalL'auteur Levon