Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 10.02.2021
Сообщений: 4
1

while внутри фунцкии

10.02.2021, 07:35. Показов 3057. Ответов 9

Author24 — интернет-сервис помощи студентам
Здравствуйте. Начал самостоятельно изучать питон и остановился на следующем задании:

пройдите в цикле по списку ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша'] пока не встретится имя "Валера". Когда найдете напишите "ты нашел Валеру". Подсказка: используйте метод list.pop()

мое решение:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
name = ['Вася', 'Маша', 'Петя', 'Валера', 'Саша', 'Даша']
 
while True:
    i = 0
    searh_valera = name.pop(i)
    if searh_valera == 'Валера':
        print('Валера?')
        print('ты нашел Валеру!')
        break #pause
    else:
        print(searh_valera,'?')
        print('это не Валера')
        i += 1
вывод программы:
Вася ?
это не Валера
Маша ?
это не Валера
Петя ?
это не Валера
Валера?
ты нашел Валеру!



след задание:
Перепишите предыдущий пример в виде функции find_person(name), которая ищет имя в списке

вот что написал:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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)
вывод программы:
Кого будем искать? Валера
Вася ?
это не Валера
Маша ?
это не Валера
Петя ?
это не Валера
Валера ?
ты нашел Валера
None

#вопрос 1: что нужно писать в скобках после find_person, который в конце программы? пробовал все имена, работает одинакого, пробовал оставить кавычки - результат такой же, если пустые скобки, то будет ошибка.
#вопрос 2: почему когда программа находит заданное имя после сообщения об успешном поиске пишется None?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2021, 07:35
Ответы с готовыми решениями:

найти нуль фунцкии
найти нуль фунцкии f(x)=x+ln(x); x? комбинированным методом.Выполнить 2,3 итерации

Засечки на графике фунцкии
uses graphABC; function F(x:real):real; begin F:=sin(x); end; var xn,xk,x,y,mx,dx:real; ...

Возвращение динамических массивов из фунцкии
имеется функция double** Relaxpl(double alpha, char** grid, int nodesX, int nodesY, double...

Заменить положительные / отрицательные элементы матриц используя фунцкии
Ввести двумерные массивы X1 (N1xM1) X2 (N2xM2). Если максимальный элемент массива X1 больше...

9
Эксперт Python
8213 / 4333 / 1837
Регистрация: 27.03.2020
Сообщений: 7,154
10.02.2021, 08:12 2
Lunihorn, нет return из def
0
0 / 0 / 0
Регистрация: 10.02.2021
Сообщений: 4
11.02.2021, 01:15  [ТС] 3
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
        return name
 
 
p = find_person('')
print(p)
вывод:
Кого будем искать? Саша
Вася ?
это не Саша
Саша

не видит дальше первого и сразу пишет ответ
0
Эксперт Python
8213 / 4333 / 1837
Регистрация: 27.03.2020
Сообщений: 7,154
11.02.2021, 04:25 4
Лучший ответ Сообщение было отмечено Lunihorn как решение

Решение

Lunihorn,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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(searh_name,'?')
            print('это не', name )
            i += 1
    return 'ты не нашел '+ name
 
 
p = find_person('')
print(p)
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
11.02.2021, 06:02 5
Цитата Сообщение от Lunihorn Посмотреть сообщение
str(input
кто и где вас этому учит? где источник этой скверны?

Добавлено через 3 минуты
и само задание странное или ты его не верно понял, ты не должен менять исходный список иначе твой поиск будет работать только 1 раз - найдем Дашу и все -в списке никого.
0
814 / 526 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
11.02.2021, 06:31 6
Lunihorn, во-первых return нужно вынести за пределы while(при текущем дизайне программы)
во-вторых заданием подразумевается что вы будете применять функцию отдельно для каждого элемента списка, для этого и написано в задании "функция(аргумент)", аргумент как раз нужен будет для передачи туда элемента списка
решение не пишу, вижу что стараетесь, а значит у вас всё получится самостоятельно :wink:
0
0 / 0 / 0
Регистрация: 10.02.2021
Сообщений: 4
11.02.2021, 06:45  [ТС] 7
Gdez,
выдает такое:
Кого будем искать? Валера
Вася ?
это не Валера
Маша ?
это не Валера
Петя ?
это не Валера
Валера ?
ты нашел Валеру!
ты не нашел Валера

если не писать return, то в конце будет None. Может быть проблема в том, что я не правильно вызываю функцию?
0
Эксперт Python
8213 / 4333 / 1837
Регистрация: 27.03.2020
Сообщений: 7,154
11.02.2021, 07:48 8
Лучший ответ Сообщение было отмечено Lunihorn как решение

Решение

Lunihorn, нет последнего print()
Его и не может быть по коду
Миниатюры
while внутри фунцкии  
0
Эксперт Python
8213 / 4333 / 1837
Регистрация: 27.03.2020
Сообщений: 7,154
11.02.2021, 08:07 9
Лучший ответ Сообщение было отмечено Lunihorn как решение

Решение

Lunihorn, песенка "Далеко, далеко..."
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def find_person():
    name = input("Кого будем искать? ")
    while True:
        i = 0
        searh_name = person.pop(i)
        if searh_name[0] == name:
            print(name + '?')
            return 'ты нашел '+ searh_name[1]
        else:
            print(searh_name[0] + '?')
            print('это не', name )
        i += 1
    return 'ты не нашел '+ name
 
person = [['Вася', 'Васю'], ['Маша', 'Машу'],
 ['Петя', 'Петю'], ['Валера', 'Валеру'],
  ['Саша', 'Сашу'], ['Даша', 'Дашу']]
  
print(find_person())
1
0 / 0 / 0
Регистрация: 10.02.2021
Сообщений: 4
11.02.2021, 08:19  [ТС] 10
Спасибо, теперь понятно!
0
11.02.2021, 08:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2021, 08:19
Помогаю со студенческими работами здесь

Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime
Добрый день. В этой программе берётся системное время, сначала выводится на экран(всё нормально), а...

Остановить socket.Accept() внутри блока while который находится внутри потока
Сам код using System; using System.IO; using System.Collections.Generic; using...

Пищит во время игры внутри корпуса. Звуки внутри .rar файла
Господа, добрый день. Заметил странные звуки внутри компьютерного корпуса. Приложу .rar файл со...

Вычислить площадь фигуры внутри лемнискаты и одновременно внутри окружности
\rho ^2=cos(2\varphi )-уравнение лемнискаты \rho =sqrt(2)sin(\varphi )-уравнение окружности ...

Как получить позицию EditText внутри ListView внутри RecyclerView
Здравствуйте, я крайне плох во всем, не бейте. Вопрос : как и где получать конкретный...

Возможно ли создать ячейку внутри ячейки или таблицу внутри таблицы в fpdf php?
Помогите, пожалуйста! Нужно создать внутри ячейки Cell() еще несколько ячеек. Не могу найти как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru