Форум сайта python.su
0
Здравствуйте. Начал самостоятельно изучать питон и остановился на следующем задании:
пройдите в цикле по списку пока не встретится имя “Валера”. Когда найдете напишите “ты нашел Валеру”. Подсказка: используйте метод list.pop()
мое решение:
name = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] while True: i = 0 searh_valera = name.pop(i) if searh_valera == 'Валера': print('Валера?') print('ты нашел Валеру!') break #pause else: print(searh_valera,'?') print('это не Валера') i += 1
person = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] def find_person(name): name = str(input("Кого будем искать? ")) while True: i = 0 searh_name = person.pop(i) if searh_name == name: print(name,'?') print('ты нашел', name) break #pause else: print(searh_name,'?') print('это не', name ) i += 1 p = find_person('Маша') print(p)
Офлайн
1
p = find_person('Маша')
что должна сделать функция find_person('Маша')? и какое значение функция должна передать переменной p? внутри функции нет такой инструкции как return name
person = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] def find_person(name): name = str(input("Кого будем искать? ")) while True: i = 0 searh_name = person.pop(i) if searh_name == name: print(name,'?') print('ты нашел', name) return name else: print(searh_name,'?') print('это не', name ) i += 1 p = find_person('Маша') print(p)
Отредактировано rumactep (Фев. 11, 2021 10:42:18)
Офлайн
27
LunihornПерво-наперво, после имени функции в скобках пишется имя аргумента функции. Имя может быть любым допустимым именем переменной. Внутри функции эта переменная будет содержать то, что ты передал функции. Рассмотрим первые две строки твоей функции:
вопрос 1: что нужно писать в скобках после find_person, который в конце программы?
def find_person(name): name = str(input("Кого будем искать? "))
LunihornТвоя функция не содержит return значение и поэтому функция вернет None. Это напечатает print, который у тебя после вызова функции.
#вопрос 2: почему когда программа находит заданное имя после сообщения об успешном поиске пишется None?
Офлайн
0
RafikПривет, изначально я пылался сделать, чтобы в name передавалось значечние из спика:
Может быть стоит в функцию передать твой список person и на певой строке имя переменной изменить на какое-либо другое?
person[0 + 1]
i = 0, person[i + 1]
person = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] def find_person(name): name = str(input("Кого будем искать? ")) while True: i = 0 searh_name = person.pop(i) if searh_name == name: print(name,'?') return 'ты нашел '+ name[:-1] + 'у!' else: print(name,'?') print('это не', name ) i += 1 return 'ты не нашел '+ name p = find_person('') print(p)
Отредактировано Lunihorn (Фев. 12, 2021 00:40:24)
Офлайн
0
rumactepя не знал что писать в скобках при вызове фунуции
что должна сделать функция find_person('Маша')
Lunihorn
#вопрос 1: что нужно писать в скобках после find_person, который в конце программы? пробовал все имена, работает одинакого, пробовал оставить кавычки - результат такой же, если пустые скобки, то будет ошибка.

Офлайн
1
persons = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] def find_person(name): while len(persons) > 0: iter_name = persons.pop(0) if iter_name == name: print(name,'?') print('ДА! Это ' + name) return iter_name else: print(name,'?') print('это не', name ) return None who = str(input("Кого будем искать? ")) found = find_person(who) if found != None: print('Имя ' + found + ' найдено') else: print('Имя ' + who + ' не найдено')
Отредактировано rumactep (Фев. 12, 2021 08:07:16)
Офлайн
27
rumactep, вот чуточку подправленный вариант
persons = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] def find_person(name): while len(persons) > 0: iter_name = persons.pop(0) if iter_name == name: print(iter_name,'?') print('ДА! Это ' + name) return iter_name else: print(iter_name,'?') print('это не', name ) who = input("Кого будем искать? ") found = find_person(who) if found: print('Имя ' + found + ' найдено') else: print('Имя ' + who + ' не найдено')
Офлайн
0
RafikСпасибо!
rumactep, вот чуточку подправленный вариант
Офлайн