Форум сайта python.su
Здравствуйте.
Облазил книжки, везде как то стороной обходят вопрос ввод данных пользователем. Но если с целочисленными или вещественными числами все решается путем x=int(raw_input(“”)), то со список и масивом не все так понятно. Есть ли какие нибудь средства в питоне где идет заполнения сразу, допустим, 10 элементов массива? Или все делать через цикл? И еще, можно ли сделать так, чтобы конечный пользователь вбил данные не через энтер, а через пробел, как например в паскале или фортране? Получилось как то один раз, но в массив он добавлял каждый следующий элемент не делая поправок на пробелы. Надеюсь нормально объхяснил:) заранее спасибо)
Офлайн
data=raw_input().split(' ') # здесь вместо пробела можеш и запятую поставить, да хоть буквой Х данные разделяй :)
print data # и убеждаемся что в data содержится список данных введенных пользователем через пробел
Офлайн
в пітоні нема аналога scanf. можна його викликати через ctypes. ще можна використовувати input
http://www.dalkescientific.com/writings/NBN/ctypes.html http://python.net/crew/theller/ctypes/tutorial.html
[crchemist@test Python-Docs-2.5.2]$ python
Python 2.5.2 (r252:60911, Jul 5 2008, 03:54:54)
[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> libc = ctypes.CDLL("libc.so.6")
>>> scanf = libc.scanf
>>> i = ctypes.c_int()
>>> j = ctypes.c_int()
>>> scanf("%i%i", ctypes.byref(i), ctypes.byref(j))
4 5
2
>>> i
c_long(4)
>>> j
c_long(5)
>>>
Офлайн
Самый простой способ:
>>> wow = input()
1,2,3,4,5
>>> wow
(1, 2, 3, 4, 5)
Офлайн
crchemist, не отпугивай новичка :)
bw, это, как мне кажется не тот случай :) человек вроде действительно хочет разобраться, да и вопрос задал правильно. Видно что он в самом начале пути :)
Офлайн
bwЯ понимаю, что стоит подумать. Я думал, пробовал разные вариации с raw_input, лазил. Я объясню, метод я могу придумать, я не поэтому обращаюсь. А потому, что такое простое действие, по идеи, должно иметь простое решение. Описывать 10-12 строками ввод данных (не форматированых) в масив считаю не гуманно, может мое мнение и расходится с Вашим. Просто пришла в голову идея, что может быть есть какой то специальный оператор, или аргумент к тому что есть, который даст возможность сделать то, что требуется, а я о нем не знаю. Вот и все.
Отредактировано (Ноя. 20, 2008 22:12:06)
Офлайн
igor.kaist, значит это просто поколение такое.
..bw
Офлайн
В одну строчку не подходит? data=raw_input().split()
Питон чрезвычайно гибкий язык, и слава богу что в нем не так много операторов.
У тебя есть raw_input (в реальности, кстати подобный ввод не используется), и ты можешь сделать о ним все что захочешь.. Не хватает удобства? Допиши… :)
def myinput():return raw_input().split()
# и вызывай потом..
Data=myinput()
Офлайн
igor.kaistНе, я обратил внимание на Ваше сообщение, что так можно сделать) В том то и дело, что не могу привыкнуть к этой гибкости) Когда несколько лет обучали паскалю и фортрану (опять же азы), а они прямолинейны как палка, то лично мне сложно прийти самому к таким методам) Хотя черт его знает, может bw и прав, и мозги надо поменять.
В одну строчку не подходит? data=raw_input().split()
Питон чрезвычайно гибкий язык, и слава богу что в нем не так много операторов.
У тебя есть raw_input (в реальности, кстати подобный ввод не используется), и ты можешь сделать о ним все что захочешь.. Не хватает удобства? Допиши… :)вот тебе и недостающий оператор :)def myinput():return raw_input().split()
# и вызывай потом..
Data=myinput()
Офлайн
Не не не, я считаю что с мозгами все нормально у тебя! Просто тут в последнее время столько интересных персонажей появилось :)
Насчет гибкости: главное понять принципы, разобраться с ооп (с питоном кстати это легко дается, я не понимаю, как можно изучать ооп в институте целый семестр :)
Я недавно действительно поверил в слова “кодирование со скоростью мысли”.. Сейчас узкое место в скорости написания программ для меня, это время на обдумывание как все должно работать, а не как это реализовать, или как запрограммировать
Офлайн