2013-04-22 2 views
7

Я просто возился с ноутбуком Ipython, и я собирался создать игру с линкором ... к сожалению, мне нужны строки, подобные следующим в коде, чтобы сделать такую ​​игру:эквивалент raw_input в ноутбуке Ipython

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

Ноутбук Ipython не позволяет raw_input ... так как я могу получить вход от одного из игроков? Я искал вокруг, и ничего, что я мог найти, не имел прямого ответа на это, например, вы не можете или да, и это так. Благодарю.

ответ

-1

Я провел некоторое исследование и нашел это. Можете ли вы попробовать приведенный ниже код, поскольку я не знаю, как его проверить.

import tkSimpleDialog 

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

Существует также аналогичная нить: Ipython raw_input work around?

Кроме того, попробуйте это на примере raw_input обходные для ноутбука IPython с использованием jQueryUI Диалоги

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

Не уверен, почему язык сделает ввод слишком сложным

+0

TypeError: askstring() принимает ровно 2 аргумента (1 задано) ... что является другим аргументом –

+0

move = tkSimpleDialog.askstring ('Input', 'Где бы вы хотели атаковать?) Попробуйте это. Кроме того, вы нашли что-нибудь полезное в других ссылках? – Damon

+0

не работает "TypeError: askstring() принимает ровно 2 аргумента (1 данный)" – Joop

3

raw_input будет работать в ноутбуке в IPython 1.0, p завершено this pull request.

+0

Он слит и работает. 'input()' в python3. –

0

Применение

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

Можете ли вы добавить немного объяснения, почему это работает? –

+1

Насколько я знаю, на компьютере, на котором запущен сервер ipython, появится диалог tk, а затем только если сеанс, который запустил его, связан с экраном. Если вы смотрите на ноутбук удаленно, вы не увидите диалог. – drevicko

6

IPython 2 теперь поддерживает "raw_input", IPython 3 поддерживает "ввод". Обратите внимание, что «input» присутствует в IPython 2, но это не то же самое, что в IPython 3! Скорее, он эквивалент eval (input()).

(это не особенность IPython, это просто поведение наследуется от Python 2/3)

Если вы хотите что-то портативное в ноутбуке, просто написать к началу этого:

try: 
    input = raw_input 
except NameError: #Python 3 
    pass 
Смежные вопросы