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

import random
lives = 3
while lives > 0:
   print("If the number is divisible by 3, type FIZZ (all caps)")
   print("If the number is divisible by 5, type BUZZ (all caps)")
   print("If the number is divisible by 3 and 5, type FIZZ BUZZ (all caps)")
   print("If the number is none of the above, type the number")
   print("You have three lives and then the game is over")
   print("Try and beat me!")
   for number in range(1,101):
      if number % 3 == 0 and number % 5 == 0:
          correct_answer = "FIZZ BUZZ"
      elif number % 3 == 0:
          correct_answer = "FIZZ"
      elif number % 5 == 0:
          correct_answer = "BUZZ"
      else:
          correct_answer = number
      first_go = random.randint(0,1)
      if first_go == 0:
          computer_go = True
      else:
          computer_go = False
      if computer_go == True:
          print("CPU:", correct_answer)
          computer_go == False
      elif computer_go == False:
          answer = input("Your go:")
          if answer == correct_answer:
              computer_go = True
          else:
              print("Wrong answer!")
              lives - 1

Я попытался использовать оператор if 'if answer == correct_answer', но, похоже, он не работает для значений, которые не являются ни FIZZ, BUZZ, ни FIZZ BUZZ. У меня также возникают проблемы с циклом while; печатается сообщение «неправильный ответ», однако цикл while не заканчивается после трех неправильных попыток, как это должно быть с жизнями - 1, в результате чего жизни становятся равными 0 и цикл while завершается.


person RetainedFlame7    schedule 26.09.2016    source источник
comment
Сначала проверьте, является ли значение целым числом или словом. в операторах if, таких как if input_variable.isdigit() and ... или if input_varible.isalpha() and.... Хотя я должен отметить, я не вижу нигде в вашей программе, где вы получаете пользовательский ввод.   -  person Christian Dean    schedule 26.09.2016
comment
Спасибо за совет, ввод в 28-й строке.   -  person RetainedFlame7    schedule 26.09.2016
comment
Вероятно, вам нужно пересмотреть всю логику. Помимо живого счетчика, программа не остановится, даже если вы трижды потерпите неудачу в первых 100 попытках из-за большего цикла for.   -  person josoler    schedule 26.09.2016


Ответы (1)


Вместо

correct_answer = number

do

correct_answer = str(number)

Таким образом, вы сравниваете строки со строками.

Вы не меняете значение lives. Делать

lives = lives - 1
person Patrick Haugh    schedule 26.09.2016