Как я могу решить проблему слишком большого ввода в Python

Вот мой вопрос:

Вы придумали новый поворот к традиционному «О каком номере я думаю?» игра, чтобы помочь вашим кузенам выучить их таблицу умножения на 7! Напишите игру, в которой пользователю предлагается угадать число, о котором вы думаете. (В этой игре всегда будет 42.)

Пользователь может сделать 10 предположений и сделать «ошибку!» если они угадывают число, не кратное 7. Пользователь может сделать максимум одну ошибку, иначе он проиграет игру. Когда игра окончена, всегда нужно распечатывать «Это было весело».

Вот пример:

Guess a multiple of 7: 14
Nope!
Guess a multiple of 7: 32
Mistake! That number isn't a multiple of 7.
Guess a multiple of 7: 28
Nope!
Guess a multiple of 7: 86
Another mistake. Too bad.
That was fun.

Вот еще один пример:

Guess a multiple of 7: 7
Nope!
Guess a multiple of 7: 14
Nope!
Guess a multiple of 7: 126
Nope!
Guess a multiple of 7: 133
Nope!
Guess a multiple of 7: 70
Nope!
Guess a multiple of 7: 77
Nope!
Guess a multiple of 7: 63
Nope!
Guess a multiple of 7: 35
Nope!
Guess a multiple of 7: 126
Nope!
Guess a multiple of 7: 77
Nope!
No guesses left!
That was fun.

Если пользователь правильно вводит 42, ваша программа должна распечатать Вы выиграли! вместо "Нет!" Например:

Guess a multiple of 7: 42
You won!
That was fun.

А теперь мой код:

guessCount = 0
mistakeMade = False

while True:
  guess = int(input("Guess a multiple of 7: "))
  if guess % 7 != 0:
    if mistakeMade:
      print("Another mistake. Too bad.")
      break
    else:
      print("Mistake! That number isn't a multiple of 7.")
      mistakeMade = True
  else:
    if guess == 42:
      print("You won!")
      break
    else:
      print("Nope!")
      guessCount += 1
      if guessCount == 10:
        print("No guesses left!")
        break
        
print("That was fun.")

Я прошел все проверки Grok Learning, кроме этой ошибки:

Тестирование скрытого кейса. В вашем материале попытка прочитать слишком много информации! Это произошло в строке 5 вашего сообщения.

Я много думал об этом, но это все еще не решило проблему. Надеюсь получить помощь от всех. Спасибо.


person congdanh1594    schedule 27.10.2020    source источник


Ответы (2)


Вы не увеличиваете guessCount, когда человек совершает ошибку. Попробуйте это

wrongGuess = 0
for _ in range(10):
    guess = int(input("Guess a multiple of 7: "))
    if guess % 7 != 0:
        wrongGuess += 1
        if wrongGuess > 1:
            print("Another mistake. Too bad.")
            break
        else:
            print("Mistake! That number isn't a multiple of 7.")
            wrongGuess += 1
    else:
        if guess == 42:
          print("You won!")
          break
        else:
          print("Nope!")
else:
    print("No guesses left!")
        
print("That was fun.")

Примечание. Для подобных проблем с конечным счетчиком всегда старайтесь использовать for loop.

person Anto Pravin    schedule 27.10.2020
comment
Теперь я понимаю. Спасибо за помощь. - person congdanh1594; 27.10.2020

Вы должны выполнить приращение и постоянно проверять guessCount, поэтому удалите его из условия if.


[Edit] Старый несвязанный ответ.

Может быть:

guess = int(input("Guess a multiple of 7: ").split()[0])

?

person Tiger-222    schedule 27.10.2020