Python limite de temps

J'ai un devoir maison à faire et j'ai vraiment besoin d'une solution. J'ai essayé de le faire depuis hier, mais je ne sais pas comment.

Programme doit générer et imprimer une lettre ou d'un chiffre, puis l'utilisateur doit saisir aussi rapidement que possible et appuyez sur ENTRÉE. Le jeu est terminé au bout de 30 secondes.

Eh bien, je ne sais pas comment mettre de limite de temps pour un jeu. J'étais à la recherche par le biais de stackoverflow et je n'ai pas trouve quelque chose d'utile. S'il vous plaît aider moi.

**Ici, c'est ce que j'ai fait jusqu'à présent. J'ai essayé le code de la réponse par SYSS.STDER, mais il ne fonctionne pas très bien parce que quand les 30 secondes, le jeu devrait également être sur, mais ici, dans ce code, le jeu est terminé quand je tape le dernier caractère.

BOUCLE NE S'ARRÊTERA PAS JUSQU'À CE QU'IL TERMINE ET NOUS DÉCOUVRONS QUE NOUS SOMMES AU-DELÀ DE LA DATE LIMITE. LA TÂCHE DOIT ÊTRE INTERROMPU EN COURS DÈS QUE LE TEMPS S'ÉCOULE.

max_time =30
start_time = time.time()  # remember when we started
while (time.time() - start_time) < max_time:

    response = "a"      # the variable that will hold the user's response
    c = "b"             #the variable that will hold the character the user should type
    score = 0
    number = 0

    c = random.choice(string.ascii_lowercase + string.digits)
    print(c)
    number = number + 1

    response = input("Type a letter or a number: ") #get the user's response

    if response == c and (time.time() - start_time) < max_time:
         # if the response from the previous loop matches the character
         # from the previous loop, increase the score.
         score = score + 1
  • C'est maintenant mieux rédigé que origine. Encore, puisque vous avez déjà mis la suggestion d'essayer de boucle, la question demeure: Qu'avez-vous essayé jusqu'à présent à cet égard?
  • Quelqu'un peut-il regarder mon code et m'aider s'il vous plaît?
  • Donc à part un tout petit peu de re-factoring sys.stderr réponse - dans le dernier 21 heures - qu'avez-vous essayé de vous-même pour résoudre ce problème?
  • Jon Clements. Je suis nouveau à python et j'ai besoin d'un peu d'aide. S'il vous plaît pouvez-vous résoudre ce problème que j'ai. J'ai vraiment aprécier il.
  • Conserver cette base de code. Le jeu ne prendra fin que lorsqu'il y a un dernier personnage, car input est le blocage, ce qui signifie qu'il ne reviendra pas jusqu'à ce que quelque chose est entré - de sorte que vous pourriez exécuter et ne rien faire pendant quelques heures... Ne vous inquiétez pas à ce sujet (à moins de à l'aide d'enfilage et d'interrogation vous êtes coincé avec elle (et ce n'est pas de devoirs niveau des techniques). Faire quelque chose de il - vérifier au moment de la incrémenter le score que vous êtes encore en dessous de la max_time
  • Jon Clements. Eh bien j'ai corrigé condition. Mais est-il loin que le programme se termine et vous n'avez plus qu'à saisir quelque chose?
  • comme @Jon Clements a noté, de contourner ce problème nécessite un peu plus de Python que vous avez probablement couvert. Si vous n'êtes pas déjà familier avec les signal module, alors je ne serais pas s'inquiéter à ce sujet. C'est ce que l' "(Après 30 secondes, le programme devrait encore offrir à l'utilisateur d'écrire une dernière lettre/numéro, mais il ne peut pas être compté dans les résultats)" a été d'essayer de vous dire -- vous n'avez pas à interrompre input(), il vous suffit de vous assurer que si l'utilisateur appuie sur entrée après 30 s le score ne compte pas. Je serait plutôt de commencer à travailler sur les parties de la question impliquant des fichiers.
  • pas trop sûr au sujet du fichier de chose que je ferais probablement travailler sur la statistique suivante (bien que ce peu de il est encore frais pour l'OP) et puis au moins si c'est incomplet, l'affectation, vous serez autonome et fonctionnelle dans un sens...
  • bien sûr, cela va trop de travail, et vous avez probablement raison qu'il a un meilleur mode de défaillance.
  • Quel système d'exploitation utilisez-vous. Une façon de résoudre ce problème est d'être capable de détecter si l'utilisateur a appuyé sur une touche ou pas, et de faire que est OS dépendante.
  • Je suis avec Windows 7. Merci beaucoup!

InformationsquelleAutor Miki | 2012-12-15