Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 20, 2008 21:04:52

Moonbite2006
От:
Зарегистрирован: 2008-07-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

Здравствуйте.
Облазил книжки, везде как то стороной обходят вопрос ввод данных пользователем. Но если с целочисленными или вещественными числами все решается путем x=int(raw_input(“”)), то со список и масивом не все так понятно. Есть ли какие нибудь средства в питоне где идет заполнения сразу, допустим, 10 элементов массива? Или все делать через цикл? И еще, можно ли сделать так, чтобы конечный пользователь вбил данные не через энтер, а через пробел, как например в паскале или фортране? Получилось как то один раз, но в массив он добавлял каждый следующий элемент не делая поправок на пробелы. Надеюсь нормально объхяснил:) заранее спасибо)



Офлайн

#2 Ноя. 20, 2008 21:34:30

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

data=raw_input().split(' ') # здесь вместо пробела можеш и запятую поставить, да хоть буквой Х данные разделяй :)
print data # и убеждаемся что в data содержится список данных введенных пользователем через пробел



Офлайн

#3 Ноя. 20, 2008 21:38:29

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

в пітоні нема аналога 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)
>>>



Офлайн

#4 Ноя. 20, 2008 21:39:06

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Ввод данных в массив/список

Самый простой способ:

>>> wow = input()
1,2,3,4,5
>>> wow
(1, 2, 3, 4, 5)
Побочные явления описывать не буду.
А вообще, думать и делать руками такие элементарные вещи никто не запрещал.
Что бы суметь сделать split полученной строки, убрать “пустые” значения, проверить элементы на принадлежность целому или вещественному, достаточно обладать элементарными знаниями Python и не менее элементарными познаниями в программировании вообще. Если вы не можете это осилить самостоятельно, вам не стоит продолжать заниматься программированием.

..bw



Офлайн

#5 Ноя. 20, 2008 21:48:40

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

crchemist, не отпугивай новичка :)
bw, это, как мне кажется не тот случай :) человек вроде действительно хочет разобраться, да и вопрос задал правильно. Видно что он в самом начале пути :)



Офлайн

#6 Ноя. 20, 2008 22:09:54

Moonbite2006
От:
Зарегистрирован: 2008-07-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

bw
Я понимаю, что стоит подумать. Я думал, пробовал разные вариации с raw_input, лазил. Я объясню, метод я могу придумать, я не поэтому обращаюсь. А потому, что такое простое действие, по идеи, должно иметь простое решение. Описывать 10-12 строками ввод данных (не форматированых) в масив считаю не гуманно, может мое мнение и расходится с Вашим. Просто пришла в голову идея, что может быть есть какой то специальный оператор, или аргумент к тому что есть, который даст возможность сделать то, что требуется, а я о нем не знаю. Вот и все.
igor.kaist, спасибо, щас попробую)



Отредактировано (Ноя. 20, 2008 22:12:06)

Офлайн

#7 Ноя. 20, 2008 22:10:36

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Ввод данных в массив/список

igor.kaist, значит это просто поколение такое.

..bw



Офлайн

#8 Ноя. 20, 2008 22:17:33

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

В одну строчку не подходит? data=raw_input().split()
Питон чрезвычайно гибкий язык, и слава богу что в нем не так много операторов.
У тебя есть raw_input (в реальности, кстати подобный ввод не используется), и ты можешь сделать о ним все что захочешь.. Не хватает удобства? Допиши… :)

def myinput():return raw_input().split()
# и вызывай потом..
Data=myinput()
вот тебе и недостающий оператор :)



Офлайн

#9 Ноя. 20, 2008 22:21:55

Moonbite2006
От:
Зарегистрирован: 2008-07-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

igor.kaist
В одну строчку не подходит? data=raw_input().split()
Питон чрезвычайно гибкий язык, и слава богу что в нем не так много операторов.
У тебя есть raw_input (в реальности, кстати подобный ввод не используется), и ты можешь сделать о ним все что захочешь.. Не хватает удобства? Допиши… :)
def myinput():return raw_input().split()
# и вызывай потом..
Data=myinput()
вот тебе и недостающий оператор :)
Не, я обратил внимание на Ваше сообщение, что так можно сделать) В том то и дело, что не могу привыкнуть к этой гибкости) Когда несколько лет обучали паскалю и фортрану (опять же азы), а они прямолинейны как палка, то лично мне сложно прийти самому к таким методам) Хотя черт его знает, может bw и прав, и мозги надо поменять.



Офлайн

#10 Ноя. 20, 2008 22:33:40

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Ввод данных в массив/список

Не не не, я считаю что с мозгами все нормально у тебя! Просто тут в последнее время столько интересных персонажей появилось :)
Насчет гибкости: главное понять принципы, разобраться с ооп (с питоном кстати это легко дается, я не понимаю, как можно изучать ооп в институте целый семестр :)
Я недавно действительно поверил в слова “кодирование со скоростью мысли”.. Сейчас узкое место в скорости написания программ для меня, это время на обдумывание как все должно работать, а не как это реализовать, или как запрограммировать



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version