Member 13842073 Ответов: 3

Вызов функции во вложенном IF в Python


Я должен взять вводимые пользователем имена птиц и проверить список bird_names.

Я попробовал следующий код:
первый вход: бабочка
выход:
2nd try fail, please do 3rd try

Со 2-й попытки
вход: попугай
выход: <
1st try fail, do 2nd try
'


Код, выделенный курсивом, не работает.

Будьте добры, скажите мне, где я ошибаюсь в своей логике.

Заранее спасибо!

Что я уже пробовал:

bird_names=('crow', 'parrot', 'eagle')
def bird_guess():
    bird_guess1=input('Enter the bird guess :')
    return bird_guess1

bird_guess()

if(bird_guess not in bird_names):
        print('1st try fail, do 2nd try')
         bird_guess()
        if(bird_guess not in bird_names):
            print('2nd try fail, please do 3rd try')
            bird_guess()
            if(bird_guess not in bird_names):
                print('Sorry, exhausted tries')
            else:
                print('corect on 3rd try')
        elif(bird_guess  in bird_names):
                    print('good work! correct on 2nd try')
elif(bird_guess  in bird_names): 
                        print('great work!, correct on 1st try itself')
    
else:
    print('Not Valid')

Richard MacCutchan

Почему бы просто не использовать простой цикл, который подсчитывает количество попыток, и выйти из цикла, когда будет достигнуто максимальное количество попыток?

Кроме того, вы не фиксируете значение, возвращаемое вашей функцией.

Member 13842073

Привет Ричард,
Спасибо за ответ.

Я попытался захватить значение и все еще получаю тот же результат.

Я новичок в программировании и отстаю в некоторых концепциях.

Не могли бы вы подробнее объяснить это?
Спасибо снова

Member 13842073

Почему он обязан фиксировать возвращаемое значение функции?

Richard MacCutchan

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

Member 13842073

Круто! Большое вам спасибо за объяснение

3 Ответов

Рейтинг:
25

CPallini

Вы используете bird_guess функция, а не ее возвращаемое значение в ваших тестах. Попробуй

bird_names=('crow', 'parrot', 'eagle')
def bird_guess():
    bird_guess1=input('Enter the bird guess :')
    return bird_guess1

guess = bird_guess()

if(guess not in bird_names):
    print('1st try fail, do 2nd try')
    guess = bird_guess()
    if(guess not in bird_names):
        print('2nd try fail, please do 3rd try')
        guess = bird_guess()
        if(guess not in bird_names):
            print('Sorry, exhausted tries')
        else:
           print('corect on 3rd try')
    else:
       print('good work! correct on 2nd try')
else:
    print('great work!, correct on 1st try itself')


Member 13842073

Бинго!
Когда я попытался захватить переменную, я сделал это один раз, примерно так:
х= bird_guess()
if(x не в bird_names):
print('1-я попытка не удалась, сделайте 2-ю попытку')
bird_guess()
if(x не в bird_names):
print("2-я попытка не удалась, пожалуйста, сделайте 3-ю попытку")
bird_guess()

Понял свою ошибку.
Большое спасибо!!

CPallini

Добро пожаловать.

Рейтинг:
1

Richard MacCutchan

Попробовать это:

bird_names=('crow', 'parrot', 'eagle')
def bird_guess():
    bird_guess1=input('Enter the bird guess :')
    return bird_guess1

def birdtest():

    for count in range(1,4):
        bird = bird_guess()
        if(bird not in bird_names):
            print('try', count, 'failed, ', end='')
            if count < 3:
                print('try again')
            else:
                print('no more guesses allowed.')
                break
        else:
            print("correct, it is in the list")
            break

Но, как новый программист, ваше время было бы лучше потратить на следующее Учебник По Python[^]


Member 13842073

- Спасибо, Ричард.
Как только я закончу с основами, я также попробую ваше решение.
Спасибо снова.

Рейтинг:
1

Member 14742689

# [ ] Решение

# [ ] Создайте программу "Угадай птицу"




bird_guess = вход()
bird_name = "орел, сокол, ворона, голубь, голубь,"

bird_guess в bird_name

если bird_guess == "Орел":
печати("1-й попытки!: ", bird_guess в bird_name)
bird_guess = вход()

если bird_guess =="ворона":
печати("2-й попытки!: ", bird_guess в bird_name)
bird_guess = вход()

если bird_guess =="Сокол":
print("3-я попытка!: ", bird_guess в bird_name)
bird_guess = вход()

если bird_guess =="голубь":
печати("4-й попытки!: ", bird_guess в bird_name)
bird_guess = вход()

если bird_guess =="голубь":
печати("5-й попытки!: ", bird_guess в bird_name)
bird_guess = вход()


еще:
print("попробуйте еще раз!: ")
bird_guess = вход()
если bird_guess =="ворона":
печати("2-й попытки!: ", bird_guess в bird_name)
bird_guess = вход()



еще:
print("2 попробуйте еще раз!: ")
bird_guess = вход()
если bird_guess =="Сокол":
печати("3-й попытки!: ", bird_guess в bird_name)
print("извините за поворот: ")


CHill60

Не делай этого таким образом. Правда, не делай этого таким образом.