Библиотека game_lib :
import random
import os.path
import os
global KEY_GENERATE
KEY_GENERATE = random.randint(0, 100)
def human_game():
try:
print("Игра началась !")
INPUT_KEY = int(input("Введите число :\n"))
return INPUT_KEY
except ValueError:
print("Введите именно число !")
def validator_number(INPUT_KEY):
global KEY_GENERATE
if KEY_GENERATE == INPUT_KEY:
return True
else:
return False
def validator_sign(INPUT_KEY):
global KEY_GENERATE
if KEY_GENERATE > INPUT_KEY:
VALUE = "+"
return VALUE
else:
VALUE1 = "-"
return VALUE1
Бот который я пытался сделать, он должен угадывать число в диапазоне от 0 до 100. Но почему то выпадает много ошибок на счёт бесконечной рекурсии (обращения к циклу) и с недавнего изменения кода стала выпадать ошибка UnboundLocalError: local variable 'THE_SECOND_NUMBER' referenced before assignment.
Вот сама функция или бот :
import game_lib
def g1(attemps_value, value_id, dict_id):
dict_attemps = {
-4 : -4,
-3 : -3,
-2 : -2,
-1 : -1,
0 : 0,
1 : 5,
2 : 10,
3 : 15,
4 : 20,
}
START_NUMBER = 50
if value_id == 0:
print("Бот начал свою работу !")
CHECK_FIRST_RESULT = game_lib.validator_number(START_NUMBER)
print(START_NUMBER)
if CHECK_FIRST_RESULT == True:
attemps_value += 1
print("Бот закончил свою работу и угадал загаданное число !\nЧисло попыток затраченных ботом на угадывание числа: " + str(attemps_value) + " !")
else:
CHECK_ERROR_SIGN = game_lib.validator_sign(START_NUMBER)
if CHECK_ERROR_SIGN == str("+"):
attemps_value += 1
dict_id += 1
print("Загаданное число больше введённого ботом !")
g1(attemps_value, 1, dict_id)
elif CHECK_ERROR_SIGN == str("-"):
attemps_value += 1
dict_id -= 1
print("Загаданное число меньше введённого ботом !")
g1(attemps_value, 1, dict_id)
else:
print("Неопознонная ошибка !")
elif value_id == 1:
THE_SECOND_NUMBER = START_NUMBER + dict_attemps[dict_id]
CHECK_FIRST_RESULT = game_lib.validator_number(THE_SECOND_NUMBER)
print(THE_SECOND_NUMBER)
if CHECK_FIRST_RESULT == True:
attemps_value += 1
print("Бот закончил свою работу и угадал загаданное число !\nЧисло попыток затраченных ботом на угадывание числа: " + str(attemps_value) + " !")
else:
CHECK_ERROR_SIGN = game_lib.validator_sign(THE_SECOND_NUMBER)
if CHECK_ERROR_SIGN == str("+"):
attemps_value += 1
dict_id += 1
print("Загаданное число больше введённого ботом !")
g1(attemps_value, 2, dict_id)
elif CHECK_ERROR_SIGN == str("-"):
attemps_value += 1
dict_id -= 1
print("Загаданное число меньше введённого ботом !")
g1(attemps_value, 2, dict_id)
else:
print("Неопознонная ошибка !")
elif value_id == 2:
THE_THIRD_NUMBER = THE_SECOND_NUMBER + dict_attemps[dict_id]
CHECK_FIRST_RESULT = game_lib.validator_number(THE_THIRD_NUMBER)
print(THE_THIRD_NUMBER)
if CHECK_FIRST_RESULT == True:
attemps_value += 1
print("Бот закончил свою работу и угадал загаданное число !\nЧисло попыток затраченных ботом на угадывание числа: " + str(attemps_value) + " !")
else:
CHECK_ERROR_SIGN = game_lib.validator_sign(THE_THIRD_NUMBER)
if CHECK_ERROR_SIGN == str("+"):
attemps_value += 1
dict_id += 1
print("Загаданное число больше введённого ботом !")
g1(attemps_value, 3, dict_id)
elif CHECK_ERROR_SIGN == str("-"):
attemps_value += 1
dict_id -= 1
print("Загаданное число меньше введённого ботом !")
g1(attemps_value, 3, dict_id)
else:
print("Неопознонная ошибка !")
elif value_id == 3:
THE_FOURTH_NUMBER = THE_THIRD_NUMBER + dict_attemps[dict_id]
CHECK_FIRST_RESULT = game_lib.validator_number(THE_FOURTH_NUMBER)
print(THE_FOURTH_NUMBER)
if CHECK_FIRST_RESULT == True:
attemps_value += 1
print("Бот закончил свою работу и угадал загаданное число !\nЧисло попыток затраченных ботом на угадывание числа: " + str(attemps_value) + " !")
else:
CHECK_ERROR_SIGN = game_lib.validator_sign(THE_FOURTH_NUMBER)
if CHECK_ERROR_SIGN == str("+"):
attemps_value += 1
dict_id += 1
print("Загаданное число больше введённого ботом !")
g1(attemps_value, 4, dict_id)
elif CHECK_ERROR_SIGN == str("-"):
attemps_value += 1
dict_id -= 1
print("Загаданное число меньше введённого ботом !")
g1(attemps_value, 4, dict_id)
else:
print("Неопознонная ошибка !")
elif value_id == 4:
THE_FIFTH_NUMBER = THE_FOURTH_NUMBER + dict_attemps[dict_id]
CHECK_FIRST_RESULT = game_lib.validator_number(THE_FIFTH_NUMBER)
print(THE_FIFTH_NUMBER)
if CHECK_FIRST_RESULT == True:
attemps_value += 1
print("Бот закончил свою работу и угадал загаданное число !\nЧисло попыток затраченных ботом на угадывание числа: " + str(attemps_value) + " !")
else:
CHECK_ERROR_SIGN = game_lib.validator_sign(THE_FIFTH_NUMBER)
if CHECK_ERROR_SIGN == str("+"):
attemps_value += 1
dict_id += 1
print("Загаданное число больше введённого ботом !")
g1(attemps_value, 5, dict_id)
elif CHECK_ERROR_SIGN == str("-"):
attemps_value += 1
dict_id -= 1
print("Загаданное число меньше введённого ботом !")
g1(attemps_value, 5, dict_id)
else:
print("Неопознонная ошибка !")
elif value_id == 5:
THE_SIXTH_NUMBER = THE_FIFTH_NUMBER + dict_attemps[dict_id]
CHECK_FIRST_RESULT = game_lib.validator_number(THE_SIXTH_NUMBER)
print(THE_SIXTH_NUMBER)
if CHECK_FIRST_RESULT == True:
attemps_value += 1
print("Бот закончил свою работу и угадал загаданное число !\nЧисло попыток затраченных ботом на угадывание числа: " + str(attemps_value) + " !")
else:
CHECK_ERROR_SIGN = game_lib.validator_sign(THE_SIXTH_NUMBER)
if CHECK_ERROR_SIGN == str("+"):
attemps_value += 1
dict_id += 1
print("Загаданное число больше введённого ботом !")
g1(attemps_value, 1, 1)
elif CHECK_ERROR_SIGN == str("-"):
attemps_value += 1
dict_id -= 1
print("Загаданное число меньше введённого ботом !")
g1(attemps_value, 1, -1)
else:
print("Неопознонная ошибка !")
g1(0, 0, 0)
Так же он почему то косолапит цифры:
А если заглянуть в бота он подавно не должен складывать так числа потому что там идёт словарь .