2017-10-13 1 views
-1
#Passwordgen 
#Generate a password 

def main(): 

    #Ask the user to input a long string of words, separated by spaces 
    sent = input("Enter a sentance separated by spaces: ") 

    #Ask the user to input a position within each word 
    #Take the position of that word 
    pos = eval(input("Input a position within each word: ")) 
    words = sent.split(" ") 

    wordy = ""         
    #loops through the word to take the position of the letter 
    for word in words: 
     wordy = wordy + word[pos] 

    #Prints out the letters as a password 
    print("Your password is: ", wordy) 


main() 

Mon professeur souhaite que j'imprime un mot de passe généré à partir de cette phrase pour chaque position, de zéro jusqu'à la position que l'utilisateur a saisie. Il doit utiliser la fonction mot de passe (phrase, position) pour générer les mots de passe.Ajustement du code à l'aide des fonctions python

Utilisez le formatage de chaîne pour imprimer chacune des lignes de sortie du mot de passe comme indiqué ci-dessous.

Par exemple:

Enter words, separated by spaces: correct horse battery staple 
Up to position within each word: 3 

Password 0: chbs 
Password 1: ooat 
Password 2: rrta 
Password 3: rstp 
+3

Quelle est votre question? Je ne vois qu'une description du projet. Aussi, pourquoi utilisez-vous 'eval'? – Carcigenicate

+0

C'est trop large. Qu'avez-vous déjà essayé? De quoi avez-vous spécifiquement besoin d'aide? Répondre à cette question dans son état actuel serait juste faire vos devoirs pour vous. Si vous avez une question spécifique concernant ce que vous avez déjà essayé, nous pouvons vous aider avec cela. – Carcigenicate

Répondre

0

Bon travail sur le code à ce jour, a juste besoin de quelques ajustements:

#Passwordgen 
#Generate a password 

def main(): 

    #Ask the user to input a long string of words, separated by spaces 
    sent = input("Enter a sentance separated by spaces: ") 

    #Ask the user to input a position within each word 
    #Take the position of that word 
    pos = int(input("Input a position within each word: ")) 
    words = sent.split(" ") 

    # set a counter variable to count each password generateed 
    count = 0 

    #loops through the word to take the position of the letter 
    for p in range(pos+1): 
     # reset wordy for each new password we are generating 
     wordy = "" 
     for word in words: 
      wordy = wordy + word[p] 
     #Prints out the letters as a password 
     print("Your password {c} is: {pw}".format(c = count, pw = password)) 
     count += 1 

main() 

Nous devons qui garder la trace de la position que nous prenons la lettre en chaque mot, c'est ce que fait la ligne for p in range(pos+1) (nous faisons pos+1 pour obtenir des positions jusqu'à 3+1 (ou 4) parce que la portée va jusqu'à la valeur mais n'inclut pas la valeur

Aussi, comme les instructions notées, nous avons besoin de "Use string formatting to print each of the password output lines", donc en faisant référence à ces python3 format examples, nous pouvons formater la sortie de chaque mot de passe, avec le compte associé.

Espérons que cela vous aide, bravo!

+0

Dois-je toujours abréger ma variable pour la rendre plus facile à formater en chaîne ou y a-t-il eu une raison particulière pour que vous le fassiez de cette façon? print ("Votre mot de passe {c} est: {pw}". Format (c = count, pw = mot de passe)) count + = 1 –

+0

Non, il n'y a pas de raison que j'abrège les variables, vous pouvez les nommer semble raisonnable pour vous :) Je pense que je viens de les nommer abréviations parce que je ne voulais pas remplir le code avec de longs noms de variables qui le rendent difficile à lire. désolé si c'est confus. Utilisez certainement de meilleurs noms de variables si vous le pouvez. La méthode de format peut prendre des variables pour associer les paramètres séquentiels, mais vous pouvez nommer les variables tout ce qui a plus de sens pour vous. – davedwards