это код анфисы который вы последовательно писали на протяжении нескольких тем

# Строки и форматирование

# Вывод на экран

Вы уже умеете выводить на экран текст, складывая строки. А вот как напечатать без этого? Нужно в скобках функции print() перечислить через запятую аргументы, которые она печатает:

Запятая между аргументами по умолчанию заменяется на пробел.

Это значит, что в сообщения можно не добавлять пробелы, когда составляете сложную фразу. Достаточно разделить аргументы функции print() запятой. И, что приятно, количество этих аргументов не ограничено:

# Упражнения

# Метод split()

Разбить фразу на слова, и вообще разделить строку по определённому символу можно методом split() (англ. «разделить»). В результате получится список строк. Метод split() принимает аргумент, указывающий, какой разделитель использовать.

Тогда появятся лишние точки на концах слов. Их удобнее всего убирать методом strip() — он убирает указанные символы в начале и в конце.

# Упражнения

Код вывода результатов на экран уже написан в основном теле программы.

# Форматирование строк

До сих пор для вывода текста на экран вам приходилось собирать его из нескольких частей. Но есть и другой способ. Для сборки текста из разных элементов удобны f-строки (от англ. formatted string, «форматированные строки»). Эти f-строки включают имена переменных внутри фигурных скобок. Значения переменных подставляются в строку автоматически. В коде f-строки выглядят как обычные, только начинаются с символа f перед кавычками:

Преобразование типов из числа в строку f-строки проделывают автоматически:

# Упражнения

# Подробнее о форматировании

В f-строки можно подставлять не только переменные, но и результаты вычислений. Например, арифметические операции:

И обращение к элементам списка:

А также к элементам словаря по ключу:

Второй намного понятнее, хотя строк стало в четыре раза больше. Не так ли? Лучше придерживаться общего правила: f-строки используются только для форматирования вывода, а вычислять все выражения надо вне их. И вообще, не стоит экономить на количестве строчек кода, принося в жертву его читаемость.

# Упражнения

‘Вы прослушали N песен, общей продолжительностью M минут и S секунд.’

# Запросы к друзьям

В предыдущей теме «Словари и множества» вы добавили в код персонального ассистента Виты данные о том, где живут ваши друзья. И она уже умеет отвечать на следующие запросы:

Сейчас вам предстоит расширить возможности Виты. Научить её отвечать на вопросы про отдельных друзей. Начнём с самого простого вопроса «ты где?» — внутри Виты уже хранятся данные о местоположении. Если, например, Коля и Соня находятся в списке друзей, то запросы о них будет выглядеть следующим образом:

Чтобы различать вопросы про отдельных друзей от общих вопросов к Вите, будем начинать общие вопросы с прямого обращения, вот так:

Тогда различать просто. Если вопрос начинается с имени «Вита», то это общий вопрос. А если с другого имени, то это вопрос про конкретного друга. Полагаем, правда, что у нас нет друзей по имени Вита. 😃

# Упражнения

А. Отредактируйте список запросов queries. Все запросы должны начинаться с обращения Вита:

В. Добавьте в список queries новые запросы вида:

Источник

Что я сделал не так?

Измените код Анфисы. Оставьте вывод на экран, т.е. вызовы функции print(), только в одном месте — в основном теле программы. Эти вызовы уже написаны в предварительном коде задания.
Все прошлые выводы на экран — в функциях show_count_friends() и process_query() — замените на возвращения результатов из функции оператором return.
Подсказка

Не забудьте вернуть результат выполнения функции show_count_friends() из process_query(), чтобы первому вызову print() было что печатать.

не могу понять, куда вставлять «return»

Простой 1 комментарий

это код анфисы который вы последовательно писали на протяжении нескольких тем. Смотреть фото это код анфисы который вы последовательно писали на протяжении нескольких тем. Смотреть картинку это код анфисы который вы последовательно писали на протяжении нескольких тем. Картинка про это код анфисы который вы последовательно писали на протяжении нескольких тем. Фото это код анфисы который вы последовательно писали на протяжении нескольких тем

> Что я сделал не так?

Как минимум, не использовал теги для форматирования кода

пропущен count в функции

FRIENDS = [‘Серёга’, ‘Соня’, ‘Дима’, ‘Алина’, ‘Егор’]

def show_count_friends(count_friends):
if count_friends == 1:
return (‘У тебя 1 друг’)
elif 2 = 5:
return (‘У тебя ‘ + str(count_friends) + ‘ друзей’)

def process_query(query):
if query == ‘Сколько у меня друзей?’:
count = len(FRIENDS)
return show_count_friends(count)
elif query == ‘Кто все мои друзья?’:
friends_string = ‘, ‘.join(FRIENDS)
return friends_string
else:
return ‘ ‘

# Внимание! Это те самые вызовы, которые не надо трогать
show_count_friends(5)

print(process_query(‘Сколько у меня друзей?’))
print(process_query(‘Кто все мои друзья?’))
print(process_query(‘Как меня зовут?’))

Eщё надо дописать return query

FRIENDS = [‘Серёга’, ‘Соня’, ‘Дима’, ‘Алина’, ‘Егор’]

def show_count_friends(count_friends):
if count_friends == 1:
return(‘У тебя 1 друг’)
elif 2 = 5:
return(‘У тебя ‘ + str(count_friends) + ‘ друзей’)

def process_query(query):
if query == ‘Сколько у меня друзей?’:
count = len(FRIENDS)
return show_count_friends(count)
elif query == ‘Кто все мои друзья?’:
friends_string = ‘, ‘.join(FRIENDS)
return(‘Твои друзья: ‘ + friends_string)
else:
return(‘ ‘)
return query

# Внимание! Это те самые вызовы, которые не надо трогать
print(process_query(‘Сколько у меня друзей?’))
print(process_query(‘Кто все мои друзья?’))

Источник

Яндекс.Практикум. Функции. Где ошибка?

Народ! Хелп! Нифига смысла не пойму!

1. На основе заготовленного кода напишите функцию print_friends_count() для вывода количества друзей. Аргументом сделайте friends_count. Вызовите эту функцию не менее трёх раз с разными аргументами. Значениями friends_count могут быть любые натуральные числа.

2. Напишите цикл для запусков print_friends_count() c аргументами от 1 до 10.

Вот тут я не пойму, что имеется ввиду.

С этим кодом вылезает ошибка:
«Проверьте, работает ли функция print_friends_count() в соответствии с условием.»

Помогите разобраться пожалуйста. Что не так?

Простой 1 комментарий

это код анфисы который вы последовательно писали на протяжении нескольких тем. Смотреть фото это код анфисы который вы последовательно писали на протяжении нескольких тем. Смотреть картинку это код анфисы который вы последовательно писали на протяжении нескольких тем. Картинка про это код анфисы который вы последовательно писали на протяжении нескольких тем. Фото это код анфисы который вы последовательно писали на протяжении нескольких тем

А, все! дошло! Спасибо!

у меня так получилось

это код анфисы который вы последовательно писали на протяжении нескольких тем. Смотреть фото это код анфисы который вы последовательно писали на протяжении нескольких тем. Смотреть картинку это код анфисы который вы последовательно писали на протяжении нескольких тем. Картинка про это код анфисы который вы последовательно писали на протяжении нескольких тем. Фото это код анфисы который вы последовательно писали на протяжении нескольких тем

У меня так получилось:

Правда не понятно, если вызвать не функцию print_friends_count, а как print(print_friends_count), то выдается строка вроде:

None
У тебя 1 друг
None
У тебя 2 друга
None
У тебя 3 друга
None
.

А что значит «None» в этом случае непонятно как то.

for friends_count in range(1, 11):
def print_friends_count(friends_count): # объявите функцию здесь
if friends_count == 1:
print(‘У тебя 1 друг’)
elif 2 = 5:
print(‘У тебя ‘ + str(friends_count) + ‘ друзей’)

print_friends_count(friends_count) #Учись, щегол

Не понятно зачем каждый раз в цикле определять функцию. Думаю, в самой задаче ошибка. Имелось в виду что-то такое:

def print_friends_count(friends_count):
if friends_count == 1:
return(‘У тебя 1 друг’)
elif 2 = 5:
return(‘У тебя ‘ + str(friends_count) + ‘ друзей’)
for i in range(1, 11):
print(print_friends_count(i))

Источник

Урок 5. Разбиение на функции. Задание 3 Яндекс Практикума.

Задание: Добавьте в функцию process_query() обработку ещё одного запроса ‘Кто все мои друзья?’. В ответ нужно выводить на экран Твои друзья: <список_друзей>, где <список_друзей>— строка, состоящая из списка друзей, разделённых запятой и пробелом.
Добавьте вызов process_query(‘Кто все мои друзья?’) в тело основной программы.

Что не так в коде? Помогите, пожалуйста, исправить ошибку.

FRIENDS = [‘Серёга’, ‘Соня’, ‘Дима’, ‘Алина’, ‘Егор’]

def process_query(query):
print(«Привет, я Анфиса!»)

if query == ‘Сколько у меня друзей?’: count = len(FRIENDS)
print_friends_count(count)
elif query == ‘Кто все мои друзья?’:
friends_string = ‘, ‘.join(FRIENDS)
print(‘Твои друзья: ‘ + friends_string)
else:
print(‘ ‘)

def print_friends_count(friends_count):
if friends_count == 1:
print(‘У тебя 1 друг’)
elif 2 = 5:
print(‘У тебя ‘ + str(friends_count) + ‘ друзей’)

process_query(‘Сколько у меня друзей?’)
process_query(‘Как меня зовут?’)
process_query(‘Кто все мои друзья?’)

Traceback (most recent call last):
File «main.py», line 9

elif query == ‘Кто все мои друзья?’:

IndentationError: unexpected indent

Поддержка объяснила так:

Вы записали функцию print_friends_count​ в теле функции process_query​.

Удалите лишние отступы, чтобы обе функции выполнялись в теле основной программы.

Источник

# Функции

Создание функции называется определение. Оно начинается с ключевого слова def (от англ. definition, «определение»), затем идут имя функции, её аргументы, или параметры в круглых скобках и двоеточие. Начиная со следующей строки, с отступом в 4 пробела от начала, записывают тело функции — код, который она выполняет. Обращение к функции называется вызов функции. Функция вызывается по имени, при вызове ей передают аргументы, с которыми она должна что-то сделать.

Напишем приветствие как функцию:

# Упражнения

# Упражнения tkinter

Напишите оконное приложение выводящее список количества друзей.

Напишите оконное приложение с полем ввода количества друзей. Кнопкой при нажатии на которую выводится сообщение о количестве друзей.

# Аргументы функции

В Python аргументам функций может быть присвоено значение по умолчанию. Оно подставляется, когда при вызове функции вы не оставляете насчёт аргументов никаких инструкций.

Функция say_hello() принимает два аргумента — current_hour и name (англ. name, «имя»), которому задано значение по умолчанию. При вызове только с одним аргументом current_hour значением второго аргумента name станет пустая строка.

При вызове функции можно явно указывать, какому аргументу какое значение соответствует. В таком случае порядок следования аргументов в скобках роли не играет.

# Упражнения

Анфиса может анализировать списки. Например, подсчитывать дни, когда в вашем городе или в городах ваших друзей стояла хорошая погода.

Есть списки средних дневных температур в Москве за май 2017 и 2018 годов. Создайте функцию comfort_count(temperatures) для подсчёта в переданном списке комфортных дней — дней с температурой воздуха от 22 до 26 градусов включительно.

# Разбиение на функции

В больших проектах, написанных на Python, принято выносить весь повторяющийся код в отдельные функции перед телом основной программы. Посмотрим на пример:

Функция say_hello() содержит основную логику, а runner() (от англ. run, «запускать») выполняет роль управляющего механизма. Такое разделение придаёт коду программы аккуратный внешний вид, делает его более выразительным, упрощает чтение.

# Упражнения

# Возврат значений из функции

Пока что все наши функции печатали результаты своей работы на экран. Но обычно задача функции не сводится к выступлениям в печати. Как правило, это код, производящий специальные вычисления. Он не выводит результаты на экран, а возвращает их как значения. Значение вернётся в вызывающий код, и там будет использовано. Например, сохранено в переменной. Если программе нужно, к примеру, несколько раз посчитать одно и то же, эти вычисления поручают особым функциям:

Ключевое слово return (англ. «возвращать») указывает, какое значение функция вернёт основному коду.

# Упражнения

# Вызов функции из функции

Функцию можно вызвать не только из основного кода, но и из другой функции.

Хорошая привычка — выделять вычисления и вывод в отдельные функции, чтобы печать результатов не была разбросана по всему коду.

Если бы мы ошиблись и забыли вернуть строку text из функции show_info(), то вывод получился бы странный:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *