2011-05-05 6 views
0

J'ai commencé à déconner en python en essayant de créer un exe gelé, je l'ai finalement mis au travail, puis découvert que la fonction d'entrée ne semble pas fonctionner correctement lorsque l'invite de commande à inactif, ou la session interactive. Des idées pourquoi, ou comment résoudre ce problème? Edit: Quand je dis pas correctement, je veux dire qu'il demande une entrée, mais quand j'en ai entré une, ça ne fait rien. Quand j'entre quelque chose au repos, il fait exactement ce qu'il est censé faire. Il agit comme si je n'avais rien fait. J'utilise cx_freeze, cela n'a pas semblé pertinent parce que j'ai essayé d'exécuter le script dans CMD sans le geler et il a fait la même chose.En utilisant input() dans cmd

while idea != 'new': 
    idea = input('...') 
    if idea == 'hit': 
     del hand2[0:] 
     del hand4[0:] 
     hand2.append(random.choice(num)) 
     for i in hand2: 
      if i == 10: 
       a = random.choice(num2) 
       hand.append(10) 
       hand3.append(a) 
      elif i == 1: 
       if sum(hand) + 11 < 21: 
        hand.append(11) 
        hand3.append('Ace') 
       else: 
        hand.append(1) 
        hand3.append('Ace') 
      else: 
       hand3.append(i) 
       hand.append(i) 

Il ne reconnaîtra pas que j'ai tapé hit, même si c'est le cas en mode inactif et la session interactive.

+2

Définir "pas correctement". – orlp

+0

Si vous répondez à ces questions en l'état, il est préférable de développer votre question avec autant d'informations que possible sur votre problème, et de préférence, au moins un code pertinent. Sinon, je ne pense pas que vous obtiendrez de bonnes réponses. Merci! S'il vous plaît également, consultez notre [FAQ] (http://stackoverflow.com/faq) – Trufa

+0

Définissez également "exe gelé". Utilisez-vous py2exe, PyInstaller, ou essayez-vous de le faire vous-même avec un core dump? – kwatford

Répondre

1

Si vous essayez d'obtenir une entrée de chaîne d'utilisateur, la fonction s'appelle raw_input() (du moins c'est ce qu'on appelle dans Python 2.7). Ce code fonctionne comme prévu de cmdline en utilisant Python 3.2:

idea = '' 
while idea != 'new': 
    idea = input('...').strip() 
    if idea == 'hit': 
     print("It's not nice to hit people (or computers).") 
    else: 
     print('you input [{}]'.format(idea)) 

Had pour ajouter le .strip() sur appel d'entrée pour l'obtenir pour correspondre à la chaîne « hit » comme l'entrée semble inclure le retour chariot.

+0

Ah, désolé, fait l'erreur de supposer 2.x ... Mais êtes-vous sûr que vous exécutez 3.x dans les deux cas (IDLE vs cmdline)? Exécutez "python -V" à partir de la ligne de commande et comparez ce que vous voyez dans IDLE lorsque vous le lancez. –

+0

C'est Python 3.2 dans le cmd, juste vérifié. – Jake

+0

Cela fonctionne parfaitement, merci. Si j'avais le représentant, je l'avouerais. – Jake

Questions connexes