Научите анфису отвечать на вопрос анфиса как дела случайным образом
Перейти к содержимому

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

  • автор:

Яндекс.практикум Python Урок16. почему не пропускает задачу?

Здравствуйте! Я только начала изучение Python. Не могу понять в чем ошибка, на что не обратила внимание.
Задание : Допишите код так, чтобы ваша программа напечатала фразу Привет, Алина, я Анфиса! Подсказка:
Всё, что требуется — присвоить переменной index такое значение, чтобы из списка была выбрана Алина. Какое по счёту место в списке она занимает? С какого индекса начинается отсчёт в списках?
Строку с вызовом print() не изменяйте.

Результат : Привет, Алина, я Анфиса! —- Как бы все получилось, но вышло сист.оповещение : -Переменная index должна быть целым числом.

Почему при изменении значения friends[index] на friends[3] в результате программа напечатала имя Алиса, а при соблюдении условия — Строку с вызовом print() не изменяйте. — ничего не вышло? И как переменную index сделать целым числом?

  • Вопрос задан более двух лет назад
  • 7939 просмотров
  • Facebook
  • Вконтакте
  • Twitter

SoreMix

Для чего?
index =(friends[3])

Вот есть у вас переменная friends , содержащая в себе список имен.
У каждого имени есть свой индекс в списке, начиная с нуля
5ff37b58d0473791774955.jpeg
Все, что вам нужно сделать — это получить нужный элемент из списка friends , использовав индекс.

Вам нужна Алина, ее индекс — 3. Индекс — это просто число, не нужно усложнять, добавляя разные скобки и прочее.
Все, что вам нужно сделать — это
index = 3

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

Анфиса научилась отличать своё имя от других. Теперь надо научить её извлекать суть запроса.
Перепишите функцию check_query() так, чтобы при любом запросе она «отрезала» от строки имя и возвращала только запрос, без имени.

Например, если Анфисе пришёл запрос «Толя, что это за ерунда?» — функция check_query() должна вернуть строку ‘что это за ерунда?’.

подсказка: Верните из функции check_query() второй элемент списка elements

не могу решить задачу check_query()

Анфиса научилась отличать своё имя от других. Теперь надо научить её извлекать суть запроса.
Перепишите функцию check_query() так, чтобы при любом запросе она «отрезала» от строки имя и возвращала только запрос, без имени.

Например, если Анфисе пришёл запрос «Толя, что это за ерунда?» — функция check_query() должна вернуть строку ‘что это за ерунда?’.

подсказка: Верните из функции check_query() второй элемент списка elements

Ответ на вопрос «как дела?» (95 вариантов) ⁠ ⁠

У нас есть три традиционных ответа на вопрос «Как дела?». Если все хорошо — тогда «Хорошо!». Если все не очень хорошо, тогда — «Хорошо». Если все откровенно плохо — то «Хорошо…».

Предлагается еще 95 вариантов, как можно ответить на этот вопрос. Итак, как дела?

Лучше всех!
По тихой грусти
Всё ок!
Нормально.
Спасибо-все хорошо-а у вас? — очень приятно-до свидания
Ничего
Чего только ни…
Эх, какие у нас дела? У нас делишки, а ДЕЛА у прокурора
Да пока живу, и вроде умирать не собираюсь
Пенсия хорошая. повысили.
Зарплата хорошая. Маленькая, но хорошая.
Потому что
Что потому?
Просто так
Что, так просто?
Все пучком
Как в «Брат 2»
Отлично! Чего и вам желаю
А у вас?
Все хорошо, а будет еще лучше!
Лучше всех. Хорошо, что никто не завидует.
Отлично, не дождётесь.
Хорошо — не поверишь, плохо — не поможешь
Поцелуй меня сперва!
Вчера сломал два ребра…
Как сажа бела
Как в сказке
Как всегда, то есть хорошо
Как всегда, то есть плохо
C точки зрения банальной эрудиции игнорирую критерии утопического субъективизма, концептуально интерпретируя общепринятые дефанизирующие поляризаторы, поэтому консенсус, достигнутый диалектической материальной классификацией всеобщих мотиваций в парадогматических связях предикатов, решает проблему усовершенствования формирующих геотрансплантационных квазипузлистатов всех кинетически коррелирующих аспектов, а так нормально.
Хорово
Регулярно!
Как у тебя?
Как у тебя.
Как у тебя?!
Как в Польше: у кого телега тот и пан
Какие, собственно, дела?
Как всегда
Как видишь
Ещё жива.
Окей
Не умер и не женился
А как в самом деле дела?
А дела ли это?
А что такое?
Нет никаких дел
Какие дела? Я не при делах нынче!
Ах я бедный-несчастный, так устал, мне каждый день приходится придумывать ответ на вопрос «Как дела?»
Старушенция Агата Кристи однажды сказала замечательную фразу: «Не обязательно что-то говорить, если нечего сказать».
Есть два способа поставить человека в тупик: спросить у него «Как дела» и попросить рассказать что-нибудь
Не знаю
Затрудняюсь ответить
Амбивалентно
Вялотекуще
Дела идут, контора пишет
А вы не торопитесь?
Вы хотите об этом поговорить?
День на карете, два пешком!
Как у попугая, которого кошка тянет за лапу по полу, а он радостно кричит «Поехали!»
Как у зебры
Как в такси. Чем дальше, тем дороже.
Как у колобка — слева и справа одинаково.
Как сосиска в тесте, весело и сердито
По сравнению с Бубликовым неплохо
Так же как у Майкла Джексона 15 лет назад.
Лучше чем вчера, но хуже чем завтра…
Какие дела с такими делами!
Дела? ?? Нет их, не деловой я…
Также, как и пять минут назад…
Тебе все сразу или частями?
Я от природы бездельник.
Столько не сделано, столько не сделано! А сколько еще предстоит не сделать!
Дел много
Ногсшибательно
Женщинам можно отвечать так-скосив кокетливо глаза — «А что?»
Хорошо! И у тебя?
Регулярно!
Терпимо.
Безусловно.
В Анголе дети голодают, а так все в порядке
Всё в шоколаде, даже клавиатура!
Расту, цвету, старею…Всё как обычно
Да ты меня прям до экстаза доводишь своими вопросами… Спроси ещё чем я занимаюсь и я твоя на веки…
Вы несравненно оригинальны в своих вопросах
Да нормально, вчера нобелевскую премию получила за вклад в развитие экоструктурных подразделений в области китообразных инфузорий туфелек и тапочек и за открытие нано-технологий, которые помогут пингвинам преодолеть ледниковый период в африканских борах и гавайских пустынях в штате Масса Чуссетс округ Вашингтон.
Как Скрудж Макдак
Тяжела жизнь без Ново-Пассита…
Мне тоже всё равно, как у тебя дела, но так как мы с тобой давно не виделись, из приличия надо что-то спросить.
Вашими молитвами
Дела мои отлично! Жду дальнейших расспросов о своей личной жизни!
Задай другой вопрос пожалуйста
Завидуйте молча
Пока еще никого не загрызла
В среднем по району
Относительно. Если сравнивать с Лениным — то хорошо, если с миллионером — то не очень.

Задача по питону

Научите Анфису отвечать на вопрос «Анфиса, как дела?» случайным образом.

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

# Подключите библиотеку random и дайте ей краткое имя

answers = ['Норм.', 'Лучше всех :)', 'Ну так', 'Отличненько!', 'Ничего, жить буду']

# Напишите ваш код здесь

Я вот так сделала:
А вот какой получается дурацкий диалог (Алиса, наверное, думала, что она разговаривает с мужчиной):
Получилось так)

или так.. )
import random as r
answers = ['Норм.', 'Лучше всех :)', 'Ну так', 'Отличненько!', 'Ничего, жить буду']

def how_are_you():
return r.choice(answers)
print(how_are_you())

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

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

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

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

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

# Упражнения

  1. Продолжим учить Виту вести беседы о погоде. Напечатайте на экран данные из списка weather_today в формате 'Сегодня гроза и на градуснике 21' . Вместо сложения строк и приведения чисел к строкам просто перечислите аргументы в скобках функции print() .

# Метод split()

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

Замечание. Да, Python позволяет использовать отрицательные индексы для обращения к элементам списка. При этом -1 соответствует последнему элементу, -2 — предпоследнему, и т.д. В общем случае, blok_list[-k] — это то же самое, что blok_list[len(blok_list) — k] , только короче. Например, если нужен пятый символ с конца списка s , можно написать s[len(s) — 5] или, короче, s[-5] . Если в вызове split() не указывать разделитель, то строка разобьётся по пробелам:

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

# Упражнения

  1. Имеется список запросов queries . Необходимо определить, какие из них адресованы Вите, а какие — другим людям. Напишите функцию check_query() , которая принимает запрос как параметр, анализирует его и возвращает один из двух вердиктов:
  • строку 'запрос к Вите', если запрос начинается с обращения к Вите,
  • строку 'запрос к кому-то ещё', если нет.

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

  1. Вы умеете звать Виту. Теперь надо научить её распознавать суть запроса. Отделите обращения — перепишите функцию check_query() так, чтобы она возвращала: Например, для запроса 'Вита, сколько у меня друзей?' верните строку 'сколько у меня друзей?'. Для запроса 'Серёга, ты где?' — строку 'ты где?'. У строки, которую она возвращает, не должно быть пробелов в начале и конце.

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

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

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

# Упражнения

  1. Замените объединение строк на f-строку.
  1. В коде финальной задачи из темы «Циклы и ветвления» замените все объединения строк на f-строки.

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

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

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

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

Хоть Python и позволяет вставлять очень сложные выражения внутрь f-строк , не злоупотребляйте этой возможностью. Иначе получится перегруженный код, в котором будет сложно разобраться. Сравните два эквивалентных примера:

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

# Упражнения

  1. Научите Виту сообщать время в формате ЧЧ:ММ:СС (часы, минуты, секунды). Например На часах 19:28:06 .
  1. Вите передали список listened (англ. listen, "слушать") с хронометражем прослушанных песен в секундах. Выведите на экран суммарную статистику: 'Вы прослушали N песен.', где N — длина списка listened .
  1. Вите передали список listened (англ. listen, "слушать") с хронометражем прослушанных песен в секундах. Выведите на экран суммарную статистику:

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

  • N — длина списка listened ;
  • M — количество целых минут общей продолжительности прослушанного;
  • S — остаток от целых минут.

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

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

  • Сколько у меня друзей?
  • Кто все мои друзья?
  • Где все мои друзья?

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

  • Коля, ты где?
  • Соня, ты где?

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

  • Вита, сколько у меня друзей?
  • Вита, кто все мои друзья?
  • Вита, где все мои друзья?

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

# Упражнения

  1. Это код Виты, который вы последовательно писали на протяжении нескольких тем. Можете запустить его, вспомнить как выполняются запросы из списка queries .

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

  • Вита, сколько у меня друзей?
  • .

Б. Напишите функцию process_query(query) . Значение параметра query должно быть обработано методом split() . Отделите имя в начале от тела запроса (т.е., от оставшейся части).

Если запрос начинается с имени "Вита", то вызовите функцию process_anfisa() , передав в неё тело запроса как параметр. И верните результат выполнения этой функции. Если запрос начинается с другого имени, то пока ничего не делайте — это отложим до следующей задачи.

В. Измените в функции runner() вызов process_anfisa() на вызов process_query() .

  1. А. Напишите функцию process_friend(name, query) (англ. friend, "друг"), принимающую имя друга name и запрос query .
  • Если друга с указанным именем Н нет в списке, то функция должна вернуть сообщение об ошибке У тебя нет друга по имени Н .
  • Если запрос — "ты где?", то функция должна вернуть сообщения 'Н в городе Г', где Г определяется по данным словаря DATABASE .
  • Если запрос не "ты где?", а какой-то другой, то функция должна вернуть сообщение об ошибке <неизвестный запрос>.

Б. Допишите функцию process_query() . Если запрос начинается не с "Вита", а с другого имени, то вызовите функцию process_friend(name, query) , передав в неё имя друга и тело запроса. И верните результат выполнения этой функции.

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

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