@xLexaStav

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

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

Задача:

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

Решение:

# объявите функцию здесь
def print_friends_count(friends_count):
    if friends_count == 1:
        print('У тебя 1 друг')
    elif 2 <= friends_count <= 4:
        print('У тебя ' + str(friends_count) + ' друга')
    elif friends_count >= 5:
        print('У тебя ' + str(friends_count) + ' друзей')

print_friends_count(1)
print_friends_count(2)
print_friends_count(3)

Все верно.

Далее:

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

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

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


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

Помогите разобраться пожалуйста. Что не так?
  • Вопрос задан
  • 13532 просмотра
Решения вопроса 1
Вы функцию написали, теперь её нужно в цикле вызывать, а вы этот цикл засунули в функцию
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
@Dmitry242
у меня так получилось

for i in range(1,11):
    def print_friends_count(friends_count):
        if friends_count == 1:
            print('У тебя 1 друг')
        elif 2 <= friends_count <= 4:
            print('У тебя ' + str(friends_count) + ' друга')
        elif friends_count >= 5:
            print('У тебя ' + str(friends_count) + ' друзей')
    print_friends_count(i)
Ответ написан
@yastas
Привет! У нас в Практикуме есть классная служба образовательной поддержки, с такими вопросами как раз можно туда — расскажем не просто как правильно, а ещё и почему именно так делать нужно. Вот здесь все способы, как с нами связаться можно: https://yandex.ru/support/praktikum/feedback.html — будем ждать :)
Ответ написан
Комментировать
verbalistus
@verbalistus
У меня так получилось:
for friends_count in range (11):
    def print_friends_count(friends_count):
        if friends_count == 1:
            print('У тебя 1 друг')
        elif 2 <= friends_count <= 4:
            print('У тебя',str(friends_count),'друга')
        elif friends_count >= 5:
            print('У тебя',str(friends_count),'друзей')
    print_friends_count(friends_count)


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


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


А что значит "None" в этом случае непонятно как то.
Ответ написан
Комментировать
@Hackerock
for friends_count in range(1, 11):
def print_friends_count(friends_count): # объявите функцию здесь
if friends_count == 1:
print('У тебя 1 друг')
elif 2 <= friends_count <= 4:
print('У тебя ' + str(friends_count) + ' друга')
elif friends_count >= 5:
print('У тебя ' + str(friends_count) + ' друзей')

print_friends_count(friends_count) #Учись, щегол
Ответ написан
@VanDerDark
Не понятно зачем каждый раз в цикле определять функцию. Думаю, в самой задаче ошибка. Имелось в виду что-то такое:

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

И ещё, чтоб не выводилось None после каждой строчки, вместо принтов в функии ставим return, тем самым возвращая значение функции строку текста, без него она ничего не вычисляет, поэтому после каждого принта возвращает отсутствие данных - None
Ответ написан
Ilovewhenugoaway
@Ilovewhenugoaway
def print_friends_count(friends_count):
remainder = friends_count % 10
if friends_count == 0:
print('У тебя нет друзей')
elif remainder == 0 or remainder >= 5 or (10 <= friends_count <= 19):
print('У тебя', friends_count, 'друзей')
elif remainder == 1:
print('У тебя', friends_count, 'друг')
else:
print('У тебя', friends_count, 'друга')
for friends_count in range(11):
print_friends_count(friends_count)
Ответ написан
Комментировать
@ShocoShow
# Добавьте вторым аргументом переменную name.
# Её значением по умолчанию должна быть пустая строка
def print_friends_count(friends_count, name=''):
if friends_count == 1:
text = '1 друг'
elif 2 <= friends_count <= 4:
text = str(friends_count) + ' друга'
elif friends_count >= 5:
text = str(friends_count) + ' друзей'
# Здесь проверьте, что содержит переменная name
# и в зависимости от её значения напечатайте нужные варианты фразы
if name == '':
print('У тебя ' + text)
else:
print(name + ', у тебя ' + text)
# дальше код не меняйте
print_friends_count(3, 'Артём')
print_friends_count(friends_count=7, name='Марина')
print_friends_count(6)
print_friends_count(4, name='Настя')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы