from random import randint
count = 0
Validation = False
def generateNumber():
Number = randint(1, 10)
return Number
def checkNumber(Guess):
Number = generateNumber()
if int(Guess) == Number and count < 1:
return "First time right! Genius?"
Validation = True
elif int(Guess) == Number and count == 2:
return "Correct. Second time, nice!"
Validation = True
elif int(Guess) == Number and count < 4:
return "Correct. Good job."
Validation = True
elif int(Guess) == Number and count > 3:
return "Correct. Took you long enough."
Validation = True
else:
return "Wrong! Try again "
while Validation == False:
Guess = input("Please guess a number between 1 to 10: ")
print (checkNumber(Guess))
count += 1
else:
TryAgain = input("Would you like to try again? y/n \n")
Таким образом, проблема в том, что, когда пользователь угадывает правильное число. Валидация должна быть повернута к True. Таким образом, цикл while прекратит цикл. Но валидация переменных не становится правдой, когда игрок догадывается о правильном числе.Изменение переменной в функции
Проверка считается локальной, если вы не префикс ее глобальным. Если вы хотите ссылаться на свою глобальную проверку на функцию, вам нужно объявить ее так: 'global Validation' в функции, таким образом, когда вы измените значение, оно будет устойчивым –
Хмм. когда я добавляю к нему глобальное значение, я делаю это в самой функции, в объявлении переменной сверху или в цикле while. Это дает мне сильную синтаксическую ошибку. – Soundwave
Еще одна серьезная проблема в вашем коде заключается в том, что вы возвращаете строку, эффективно нарушая функцию перед установкой поля Validation. Пожалуйста, см. Мой ответ для правильного порядка ('Validation = True' только, чем' return '... "') –