Книга «Изучаем Python»



Pdf көрінісі
бет84/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   80   81   82   83   84   85   86   87   ...   238
Байланысты:
2 5343781172763690906

person.py

def build_person(first_name, last_name):

    """Возвращает словарь с информацией о человеке."""

    person = {'first': first_name, 'last': last_name}



    return person

musician = build_person('jimi', 'hendrix')

print(musician)



Функция 

build_person()

 получает имя и фамилию и сохраняет полученные зна-

чения в словаре в точке . Значение 

first_name

 сохраняется с ключом 

'first'

а значение 



last_name

 — с ключом 

'last'

. Весь словарь с описанием человека 



возвращается в точке . Возвращаемое значение выводится в точке  с двумя 

исходными фрагментами текстовой информации, теперь хранящимися в словаре:

{'first': 'jimi', 'last': 'hendrix'} 

Функция получает простую текстовую информацию и помещает ее в более удоб-

ную структуру данных, которая позволяет работать с информацией (помимо про-

стого вывода). Строки 

'jimi'

 и 


'hendrix'

 теперь помечены как имя и фамилия. 

Функцию можно легко расширить так, чтобы она принимала дополнительные 

значения: — второе имя, возраст, профессию или любую другую информацию о че-

ловеке, которую вы хотите сохранить. Например, следующее изменение позволяет 

также сохранить возраст человека:

def build_person(first_name, last_name, age=''):

    """Возвращает словарь с информацией о человеке."""

    person = {'first': first_name, 'last': last_name}

    if age:

        person['age'] = age

    return person

musician = build_person('jimi', 'hendrix', age=27)

print(musician)

В определение функции добавляется новый необязательный параметр 

age


, кото-

рому назначается пустое значение по умолчанию. Если вызов функции включает 

значение этого параметра, то значение сохраняется в словаре. Функция всегда 

сохраняет имя, но ее также можно модифицировать, чтобы она сохраняла любую 

необходимую информацию о человеке.



146    Глава 8  •  Функции

Использование функции в цикле while

Функции могут использоваться со всеми структурами Python, уже известными 

вам. Например, используем функцию 

get_formatted_name()

 в цикле 

while

, чтобы 


поприветствовать пользователей более официально. Первая версия программы, 

приветствующей пользователей по имени и фамилии, может выглядеть так:



greeter.py

def get_formatted_name(first_name, last_name):

    """Возвращает аккуратно отформатированное полное имя."""

    full_name = first_name + ' ' + last_name

    return full_name.title()

# Бесконечный цикл!

while True:

    print("\nPlease tell me your name:")



    f_name = input("First name: ")

    l_name = input("Last name: ")

    

    formatted_name = get_formatted_name(f_name, l_name)



    print("\nHello, " + formatted_name + "!")

В этом примере используется простая версия 

get_formatted_name()

, без вторых 

имен. В цикле 

while


  имя и фамилия пользователя запрашиваются по отдель-

ности.


Но у этого цикла 

while


 есть один недостаток: в нем не определено условие завер-

шения. Где следует разместить условие завершения при запросе серии данных? 

Пользователю нужно предоставить возможность выйти из цикла как можно рань-

ше, так что в приглашении должен содержаться способ завершения. Команда 

break

 

позволяет немедленно прервать цикл при запросе любого из компонентов:



def get_formatted_name(first_name, last_name):

    """Возвращает аккуратно отформатированное полное имя."""

    full_name = first_name + ' ' + last_name

    return full_name.title()

while True:

    print("\nPlease tell me your name:")

    print("(enter 'q' at any time to quit)")

    


    f_name = input("First name: ")

    if f_name == 'q':

        break

        


    l_name = input("Last name: ")

    if l_name == 'q':

        break

    


    formatted_name = get_formatted_name(f_name, l_name)

    print("\nHello, " + formatted_name + "!")

В программу добавляется сообщение, которое объясняет пользователю, как за-

вершить ввод данных, и при вводе признака завершения в любом из приглашений 




Передача списка    147

цикл прерывается. Теперь программа будет приветствовать пользователя до тех 

пор, пока вместо имени или фамилии не будет введен символ 

'q'


:

Please tell me your name:

(enter 'q' at any time to quit)

First name: eric

Last name: matthes

Hello, Eric Matthes!

Please tell me your name:

(enter 'q' at any time to quit)

First name: q



Достарыңызбен бөлісу:
1   ...   80   81   82   83   84   85   86   87   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет