![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Paranorma |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Очень нужна помощь. Задание такое: вводится информация о людях в таком формате - имя, фамилия, пол, профессия, после ввода задается вопрос продолжать ввод или нет. Насколько я поняла препода, программа будет работать так: вылезает подсказка "имя", ввожу имя, потом в raw_input появляется подсказка "фамилия", ввожу фамилию, появляется подсказка "профессия", ввожу профессию, потом подсказка "пол", указываю пол, наконец, появляется вопрос остановить ли ввод. Ответ "да" или "нет". И этот вопрос должен появляться после ввода инфы о каждом человеке. Вся инфа о людях должна запихиваться в словарь, потом добавляться в список. От препода четкого объяснения не добилась, но и словарь и список тут точно будут использованы. Рспечатываться будет так: Лоскутова Нина жен студентка Мицкевич Артур муж программист Котов Михаил муж студент То есть вся инфа в 4 столбика, буковка под буковкой, столбики все выравниваем, ясно, что будет использован оператор формата % И еще: пожалуйста, если можно, то напишите без использования оператора lambda. Я его не изучала, о его использовании знаю поверхностно. Всем заранее спасибо. |
|||
|
||||
| doomik |
|
||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: 3 Всего: 15 |
Не доработал правльный вывод данных ( с % ) т.к не помню как он работает в словаре данные хранятся в таком образе;
Это сообщение отредактировал(а) doomik - 9.8.2007, 02:16 -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||
|
|||||
| Paranorma |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Спасибо, с процентом я соображу.
|
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 6 Всего: 78 |
-------------------- Ll 2 |
|||
|
||||
| Paranorma |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Да, вопрос увы, не решен еще.
doomik, не хотела вас расстраивать, но вариант этот не работает. И дело не в том, что ф-ции не связанны меж собой оператором return... Я это сама дописать могу. Сегодня, наконец-то добилась от препода нормального объяснения: Программа должна работать так: while True: # это первый цикл Ввести данные о человеке и запомнить их. Спросить надо ли продолжить ввод # Это второй цикл if not продолжить: break Данные о каждом человеке запоминаются в словаре, словари в свою очередь сохраняются в списке. Печать нас пока не интересует, можете печатать как хотите, исключительно для отладочных целей. Начало, я так понимаю, будет таким:
То есть никаких функций здесь не будет. Еще раз поясню, что у меня проблема в создании словарей. Я лишь поняла, что здесь используются вложенные циклы. Еще раз у всех прошу прощения, что у всех отнимаю время своими совершенно глупыми вопросами, но все мне дается с трудом и очень медленно. Заранее всем спасибо. Это сообщение отредактировал(а) Paranorma - 10.8.2007, 01:05 |
|||
|
||||
| doomik |
|
||||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: 3 Всего: 15 |
Paranorma,
А зачем спициальный цикл для вопроса 'Продолжить ввод ?' Кстати можно и на 'ты' хотя это как вы хотите.
А что в первый раз он не хотел обьяснять ? интересно а тогда он то знал что хотел сказать Вариант без функцей:
Как можно увидить и без вложеных циклов обошлось. -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||||
|
|||||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
||||
|
||||
| Paranorma |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Я немного видоизменила программу, так как назначение некоторых строк мне было непонятно.
Препод говорит, что опять я его неверно поняла. Написал мне: Что требовалось: "Данные о каждом человеке запоминаются в словаре, словари в свою очередь сохраняются в списке. Печать нас пока не интересует, можете печатать как хотите, исключительно, для отладочных целей." Вы вводите данные о человеке и создаете из них словарь {'First name': firstName, ...} именно этот словарь и надо сохранить в dataList. То есть получается инфа об одном человеке - 1 словарь, инфа о другом - другой словарь, но все они сохраняются в списке. Этот вариант, что написал doomik как раз и работает подобным образом.
Но в своем варианте я как всегда упустила какую-то тонкость и у меня нет здесь фамилии. К тому же схематически должно выглядеть так, как я понимаю: [{инфо о 1 человеке}, {инфо о 2 человеке}, {инфо о 3 человеке}] а тут распечатывается, как ["joy: {'First name': 'joy', 'Profession'.... то есть немного не так. Я поняла, что такой результат происходит и-за этой строки
Как мне все это переделать, чтоб не было ["joy: а после квадратной скобки сразу шла фигурная... Помогите, плиз... Очень важно. |
||||||
|
|||||||
| setq |
|
|||
|
Unregistered |
Возможно тебе(вам) имеет смысл отказаться от добавления записей в dataDict и сразу заталкивать словарь {'First name': ... и т.д } в dataList? Например методом .append(...) .
Второй вариант, вместо последнего цикла for написать
|
|||
|
||||
| Paranorma |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Помогите, плиз!
Хоть поясните, что я опять упустила? Мы с преподом уговорились, что задачу можно оставить в таком виде.
Сегодня получила задание чуточку видоизменить это задание. Выделите в программе часть вводящую информацию об человеке и оформите в виде функции. Параметром должен быть список названий полей которые надо ввести на выходе должен быть словарь с введенными полями. Функция должна вызываться в цикле, а результат вызова должен добавляться к списку dataList. По идее тогда должно начинаться как-то так
Но куда и как дальше двигаться? сбивает с толку фраза Функция должна вызываться в цикле, а результат вызова должен добавляться к списку dataList Был еще и такой бредовый вариант, но я и сама вижу, что не очень-то он условию соответствует.
Подскажите, хоть что-нибудь. |
||||||
|
|||||||
| doomik |
|
||||||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: 3 Всего: 15 |
Paranorma,
Угу, только нужно убрать параметры входящие в функцию, ты же читаешь данные внутри функции а ещё надо добавить return как ты сделала в другом коде ниже.
Т.е твоя функция main ( она играет роль чтения данных ) вызывается в цикле while, а её результат помещается в массив. вот полный код:
Это сообщение отредактировал(а) doomik - 7.9.2007, 19:25 -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||||||
|
|||||||||
| Paranorma |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Спасибо!!! |
|||
|
||||
| Paranorma |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Препод мой сновавсем недоволен... А я уже просто не понимаю, как все это записать. Его спрашивала. Он говорит, это все изученный мною материал, должна справиться, но все равно ничего не понимаю
Вот чего он пишет мне, что функция должна иметь параметр: def inputPersonData( infoList ) # У функции всего один параметр !!!!!!!!!!!!!!!! # infoList - список названий данных которые нас интересуют # например: ("firstName", "lastName", "gender", "profession") # или: ("personal number", "address") # Функция вызывается так: # res = inputPersonData( ("firstName", "lastName", "gender", "profession") ) # функция запрашивает у пользователя данные перечисленные # infoList и в качестве результата возвращает словарь # в котором строки перечисленные infoList вляются ключами.
а вот это уже я навертела, но не работает.В чем проблема? почему прога ругается на строку append? Почему пишет, что pData не существует? понятно, что это локальная переменная, но я же для того и return использовала. HELP!!! SOS!!! СРОЯНО НУЖНО!!! ВСЕМ ЗАРАНЕЕ СПАСИБО. Конечно, ориентироваться надо не на мой кривой вариант, а на то, что написал препод. |
|||
|
||||
| Paranorma |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 1.1.2007 Репутация: 1 Всего: 1 |
Параметром должен быть список названий полей
которые надо ввести на выходе должен быть словарь с введенными полями. Функция должна вызываться в цикле, а результат вызова должен добавляться к списку dataList. Вот еще из рекомендаций препода по этому же заданию. |
|||
|
||||
| doomik |
|
||||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: 3 Всего: 15 |
Paranorma,
pData не существует потому что не существует, ты сделала return pData т.е функция возвращает значение и чтобы его не потерять мы его сохраняем в переменной. Если в return ты возвращаеш pData тогда это незначит что в главной программе она будет у тебя видна.
В переменной res сохраняем результат функции а потом добавляем его в список. [имхо] Прежде чем посмотреть внизу ответ попробуй сама опят решить эту проблему ещё лучше пройдись по правилам как работают циклы. как построены функции и т.д, всё таки далеко не уедешь если задачи будут решать за тебя. Не сдавайся\убегай от проблемы так легко. [/имхо]
-------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||||
|
|||||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |