Pourquoi uniquement l'entrée de travail, si j'entre un nombre?
J'ai réussi à faire un python mot de passe système, mais le mot de passe ne peut être hors de chiffres, pas de lettres. Voici le codage derrière elle:
password = str(input("Please enter password to continue: "))
if password == 'dog':
print ("Welcome")
else:
print ("WRONG PASSWORD")
Cela ne fonctionne pas, tout en ayant le mot de passe d'un nombre entier fonctionne.
Edit: Désolé de mettre le mauvais code, nouveau sur ce site.
J'ai maintenant ajouté des guillemets à "chien", mais il donne maintenant cette erreur dans le terminal
Please enter password to continue: dog
Traceback (most recent call last):
File "pass.py", line 1, in <module>
password = str(input("Please enter password to continue: "))
File "<string>", line 1, in <module>
NameError: name 'dog' is not defined
Final edit: résolu en changeant str(input à la str(raw_input. C'était parce que j'étais à l'aide de terminal qui utilise python 2. Personne ne sait comment faire de terminal python 3 au lieu de 2?
- vous êtes à la recherche pour
password == '123'
? - S'il vous plaît montrer le code qui ne, pas le code qui fonctionne.
- si le mot de passe == "chien"
- Python pense que
dog
est un nom de variable, vous avez besoin de le citer, par exemple:if password == "dog":
- De l'intérêt pourrait être de la bibliothèque standard du module de
getpass
. Remplacez l'appel àinput()
avecgetpass.getpass()
. Aussi, si vous voulez vérifier qu'une chaîne de caractères est des chiffres, essayezpassword.isdigit()
.
Vous devez vous connecter pour publier un commentaire.
Vous essayez de passer un
string
type à uneinteger
, qui ne fonctionnera pas. Vous pouvez comparer d'un string en int!Chaînes de caractères en python besoin de marques de reconnaissance vocale (
"STRING"
) autour d'eux. Si il n'y a pas de discours de marques, python supposerons qu'il est un integer ou float.Correcte de votre code devrait être:
EDIT:
Il apparaît également que vous êtes à l'aide de Python 2 (parce que vous êtes à l'aide de terminal). Le
input
fonction en Python 2 tente de pénétrer à l'entrée comme une expression python, pas une chaîne de caractères. Essayez d'utiliserraw_input
au lieu de cela, si vous utilisez Python 2. Cela permettra d'obtenir l'entrée une chaîne de caractères.La chaîne de marques de reconnaissance vocale s'applique toujours. Votre code devrait ressembler à:
"Types" sont la clé ici.
Vous êtes à la coulée de l'entrée que vous obtenez de l'utilisateur (qui est une Chaîne de caractères) à
int
Entier:C'est Faux! une Chaîne ne peut jamais être égal à un nombre Entier.
Je conseillerais de ne pas moulage
int
, garder unstr
et il devrait fonctionner très bien.Pour le rendre non-récurrents:
Cependant à faire rcurring vous venez de le faire:
Si vous êtes à l'aide de python 2, essayez d'utiliser:
str
.raw_input
retourne déjà mal interprété les chaînes.