2013-04-22 12 views
7

Sto solo scherzando con il taccuino Ipython, e stavo per creare un gioco di battaglia navale ... purtroppo ho bisogno di linee come le seguenti nel codice per fare un gioco del genere:equivalente di raw_input nel notebook Ipython

move = raw_input("Where would you like to attack? ") 

Il notebook Ipython non consente raw_input ... quindi come posso ottenere input da uno dei giocatori? Ho cercato in giro e nulla di quello che ho potuto trovare aveva una risposta diretta a questo come no non puoi o si e questo è come. Grazie.

risposta

-1

Ho fatto qualche ricerca e ho trovato questo. Puoi provare il codice qui sotto perché non so come testarlo.

import tkSimpleDialog 

move = tkSimpleDialog.askstring("Where would you like to attack? ") 

C'è anche una discussione simile: Ipython raw_input work around?

Inoltre, provate questo per un esempio di soluzioni raw_input per il notebook IPython utilizzando le finestre di dialogo jQueryUI

https://github.com/minrk/ipython_extensions/blob/master/nbinput.py

Non capisco perché una lingua renderebbe un input troppo complicato

+0

TypeError: asktring() richiede esattamente 2 argomenti (1 dato) ... qual è l'altro argomento –

+0

move = tkSimpleDialog.askstring ('Input', "Dove vorresti attaccare?") Prova questo. Inoltre, hai trovato qualcosa di utile su altri link? – Damon

+0

non funziona "TypeError: asktring() richiede esattamente 2 argomenti (1 dato)" – Joop

3

raw_input funzionerà nel notebook in IPython 1.0, p che termina con this pull request.

+0

È unito e funzionante. 'input()' in python3. –

0

Usa

import tkSimpleDialog 

#askstring(Title_WIndow, mensage) 

move = tkSimpleDialog.askstring("Title Window","Where would you like to attack? ") 

tkSimpleDialog.mainloop(0) #close window after input. 
+2

Puoi aggiungere un po 'di spiegazione sul motivo per cui funziona? –

+1

Per quanto ne so, la finestra di dialogo tk apparirà sul computer che esegue il server ipython e solo se la sessione che l'ha lanciata è associata a uno schermo. Se stai guardando il notebook da remoto, non vedrai la finestra di dialogo .. – drevicko

6

IPython 2 ora supporta "raw_input", IPython 3 supporta "input". Si noti che "input" è presente in IPython 2, ma non è lo stesso di IPython 3! Piuttosto fa l'equivalente di eval (input()).

(questa non è una particolarità di IPython, si tratta solo di un comportamento ereditato da Python 2/3)

se volete qualcosa di portatile in un notebook, basta scrivere verso l'inizio di esso:

try: 
    input = raw_input 
except NameError: #Python 3 
    pass 
Problemi correlati