2013-04-22 10 views
7

Po prostu rozrabiam się z notebookiem Ipython i zamierzałem stworzyć grę pancerną ... niestety potrzebuję wierszy w kodzie tak, jak poniżej:Odpowiednik raw_input w laptopie Ipython

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

Notebook Ipython nie zezwala na raw_input ... więc jak mogę uzyskać dane wejściowe od jednego z graczy? Szukałem w pobliżu i nic, co mogłem znaleźć, nie miało bezpośredniej odpowiedzi na to, że nie możesz, albo tak, i tak właśnie jest. Dzięki.

Odpowiedz

-1

Zrobiłem trochę badań i znalazłem to. Czy możesz wypróbować poniższy kod, ponieważ nie wiem jak go przetestować.

import tkSimpleDialog 

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

Jest też podobny wątek: Ipython raw_input work around?

także spróbować tego na przykład raw_input obejścia dla notebooka ipython korzystających dialogi jQueryUI

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

Nie wiem, dlaczego język sprawiłoby, że wejście zbyt skomplikowane

+0

TypeError: askstring() ma dokładnie 2 argumenty (1 podany) ... jaki jest inny argument –

+0

move = tkSimpleDialog.askstring ("Wejście", "Gdzie chciałbyś zaatakować?") Spróbuj tego. Czy znalazłeś coś użytecznego w innych linkach? – Damon

+0

nie działa "TypeError: askstring() ma dokładnie 2 argumenty (1 dany)" – Joop

3

raw_input będzie działać w notebooku w IPython 1.0, p zakończenie this pull request.

+0

Jest scalony i działa. 'input()' w python3. –

0

Zastosowanie

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

Czy możesz dodać trochę wyjaśnienia, dlaczego to działa? –

+1

O ile mi wiadomo, okno dialogowe tk pojawi się na komputerze z uruchomionym serwerem ipython, a następnie tylko wtedy, gdy sesja, która go uruchomiła, jest powiązana z ekranem. Jeśli zdalnie patrzysz na notebooka, nie zobaczysz okna dialogowego. – drevicko

6

ipython 2 obsługuje "raw_input" ipython 3 obsługuje "wejście". Zauważ, że "input" jest obecny w IPythonie 2, ale nie jest taki sam jak w IPython 3! Raczej ma odpowiednik eval (input()).

(nie jest to Specyfika ipython, to jest po prostu zachowanie odziedziczone Python 2/3)

Jeśli chcesz coś Portable w notebooku, wystarczy napisać do początku go:

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