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

 import random

t = 0
max_tries = 3
answer = random.randint(0,10)
yes_choice = ['yes', 'y', 'yep']
no_choice = ['no', 'n', 'nope']


while t < max_tries:

    t += 1
    print('GUESS A NUMBER 0-10')
    num = int(input('Choose Thy Number?:'))

    if num < answer:
        print('Higher!')

    elif num > answer:
        print('Lower!')

    elif num == answer:
        t -= 3
        print(f'Congratulations human, your number was {answer: ,}!')
        cont = input('Do you wish to continue playing? (y/n)').lower()
        if cont in yes_choice:
            print('As you wish!')
            continue

        elif cont in no_choice:
            print('Coward!')
            break

    else:
        t -= 3

        print(f'Mistakes Everywhere! Your answer was {answer: ,}!')
        cont = input('Do you wish to continue playing? (y/n)').lower()
        if cont in yes_choice:
                print('As you wish!')
                continue

        elif cont in no_choice:
            print('Coward!')
            break

Он не читает «else» внутри цикла while, и когда условие переходит в «False», он просто «прерывает» программу и выходит. Надеюсь, ты сможешь мне помочь, спасибо за уделенное время.

1
Yarll 2 Май 2021 в 22:43

1 ответ

Лучший ответ

Я хотел бы отметить несколько моментов. Но они ничего не исправят.

  • Вместо вычитания 3 из t установите вместо этого t=0. t-=3 может привести к тому, что t станет отрицательным (если это не было специально)
  • Цикл while остановится, как только t превысит max_tries. Это означает, что он не может «повторять» каждый раз. while True: или while bool исправят это. (bool может быть переменной логического типа).
  • Вы не указываете num после того, как угадываете правильно и играете снова. Просто поместите num = random.randint(1,10) прямо перед continue.

А теперь вернемся к исходному вопросу:

Ваше заявление else никогда не будет достигнуто. Это потому, что все условия (num < answer, num > answer и num == answer) все указаны. Нет другой возможной операции между num и answer, которую вы могли бы выполнить, поэтому else никогда не будет достигнут.

Чтобы исправить это, вы можете использовать оператор if перед первым текущим if .

if t < max_tries:
    t -= 3
    print(f'Mistakes Everywhere! Your answer was {answer: ,}!')
    cont = input('Do you wish to continue playing? (y/n)').lower()
    if cont in yes_choice:
        print('As you wish!')
        continue

    elif cont in no_choice:
        print('Coward!')
        break
0
12944qwerty 2 Май 2021 в 20:19