Найти - Пользователи
Полная версия: Словарь и вывод данных.
Начало » Python для новичков » Словарь и вывод данных.
1 2
warriorofpython
 pers_001 = {'name': {'last_name': 'Иванов', 'first_name': 'Иван', 'middle_name': 'Иванович'},
'address': ['г. Майкоп, ул. Коновалова д.34/1, кв.53'],
'phone': {'home_phone': '67-87-92', 'mobile_phone': '8-929-232-84-96', 'mobile_phone_2': 'Нет'}
}
pers_002 = {'name': {'last_name': 'Егоров', 'first_name': 'Егор', 'middle_name': 'Егорович'},
'address': ['г. Сочи, переулок Ромашковый д.65, кв.17'],
'phone': {'home_phone': '241-65-18', 'mobile_phone': '8-925-278-96-87', 'mobile_phone_2': '8-928-658-82-77'}
}
pers_003 = {'name': {'last_name': 'Семенов', 'first_name': 'Семен', 'middle_name': 'Семенович'},
'address': ['г. Екатеринбург, ул. Победы д.56, кв.25'],
'phone': {'home_phone': 'Нет', 'mobile_phone': '8-921-247-66-77', 'mobile_phone_2': 'Нет'}
}
call_crew = [pers_001, pers_002, pers_003]
call = str.capitalize(input('Введите Имя или Фамилию '))
def crew(call):
    for personal in call_crew:
        if call in personal['name']['first_name'] or call in personal['name']['last_name']:
             print('ФИО:', personal['name']['last_name'], personal['name']['first_name'], personal['name']['middle_name'])
             print('Адрес:', personal['address'][0])
             print('Телефон:', '\nДомашний.', personal['phone']['home_phone'], '\nМобильный.',
              personal['phone']['mobile_phone'],
              '\nДополнительный.', personal['phone']['mobile_phone_2'])
    if call not in call_crew:
        call_reset = str.capitalize(input('Дополнительной информации не найдено. Повторить? Да/Нет '))
        if call_reset == 'Да':
            return call
            '''call = str.capitalize(input('Введите Имя или Фамилию '))
            return call'''
crew call
Есть такой код. По идее он ищет в словаре введенные искомые координаты (Имя или Фамилию), после чего он должен выводить на экран данные из словаря в случае обнаружения искомых данных либо строку указанный в переменной
 call_reset
.
В настоящий момент при выводе искомой информации или строки об её отсутствии, код (программа) прекращает свою работу.
Необходимо вывести команду, которая повторит весь цикл поиска с самого начала, если выведенные данные не устроят пользователя либо он захочет повторить поиск снова.
ZerG
 while True:
     тратата
warriorofpython
ZerG
пробую впихнуть
ZerG
Вадик?
warriorofpython
ZerG
Вадик?
возможно
warriorofpython
 crew_1 = {'name':{'first_name': 'Edward', 'last_name': 'Snowden'},
        'function':['Senior analyst'],
        'extention number':['12-89']}
crew_2 = {'name':{'first_name': 'Garry', 'last_name': 'Poter'},
        'function':['Junior analyst'],
        'extention number':['32-74']}
crew_all = [crew_1, crew_2]
#exit_for_programm = str(input('If you want to exit, press \"x\". '))
#first_name = str.capitalize(input('Enter Name '))
while True:
    name = str.capitalize(input('Enter First name or Last name. For the exit press \"x\" '))
    for personal in crew_all:
        if name == 'x':
            break
        if name in personal['name']['first_name'] or name in personal['name']['last_name']:
            print('First name:',personal['name']['first_name'],
            '\nLast name:',personal['name']['last_name'],      
            '\nFunction:',personal['function'][0],
            '\nExtention number:',personal['extention number'][0])
            break
    else:
        print('Not information')
вроде разобрался. с
 while True:
теперь проблема в другом, если в словаре указано два одинаковых имени: например
crew_1 = {'name':{'first_name': 'Edward', 'last_name': 'Snowden'},
и
 crew_2 = {'name':{'first_name': 'Edward', 'last_name': 'Poter'},
то выводится только информация по первому найденному имени.
Если вместо последнего оператора break вывести continue то выводится искомая информация и строка “Not information”
ZerG
В словаре КЛЮЧ уникальное значение.
warriorofpython
с первой проблемой все ясно. со второй не пойму вообще ничего
выводится таким образом:

Enter First name or Last name. For the exit press “x” edward
First name: Edward
Last name: Snowden
Function: Senior analyst
Extention number: 12-89
First name: Edward
Last name: Poter
Function: Junior analyst
Extention number: 32-74
Not information <= как убрать эту строку в случае обнаружения информации?
ZerG
 else:
        print('Not information')
else:
        pass
warriorofpython
ZerG
ничего не получается!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB