У вас есть несколько проблем, но наиболее очевидной является комбинация нескольких вещей:
random_num = random_num(user_input1, user_input2)
Во-первых, эта строка переназначает символ random_num
как результат вызоваrandom_num
. После того, как эта строка произойдет, любые будущие вызовы random_num
не будут работать, потому что функция «ушла». Во-вторых, и user_input1
, и user_input2
не входят в область действия функции game_begin
(они принадлежат функции game_loop
).
Обе эти проблемы скрыты, поскольку вы используете "голый""excepts:
try:
...
except:
print(...)
Вы должны только ловить ожидаемые исключения и обрабатывать их соответствующим образом, либо сделать так, чтобы эти исключения не возникали.
В конце концов, я былв состоянии получить его до в основном работать со следующим. Дополнительные проблемы, с которыми я столкнулся, упоминаются в комментариях.
import time, os, random
def game_loop():
got_an_int = False
while got_an_int == False:
user_input1 = input("Enter the upper bound integer of the range: ")
user_input2 = input('Enter the lower bound integer of the range: ')
try:
user_input1 = int(user_input1)
user_input2 = int(user_input2)
print("Good job, that is a correct range.")
got_an_int = True
clear()
# Move game_begin call here and use parameters, so that randint call works
game_begin(user_input1, user_input2)
break
except:
print("That is not a correct range. Try again.")
def clear():
time.sleep(3)
os.system('clear')
time.sleep(1)
# Remove this - not needed
# def random_num(a,b):
# random.randint(user_input1,user_input2)
def game_begin(in1, in2):
guess_right = False
# No longer overwriting variable/func symbol
# Also, reverse order since range is taken Highest first then Lowest
random_num = random.randint(in2, in1)
# Initialize total_guess to 0
total_guess = 0
while random_num != guess_right:
guess = input('Guess an integer in your range: ')
# Can't add list and ints. I assume you wanted to keep a running total?
# Lists aren't how you would do that.
total_guess += 1
try:
guess = int(guess)
if random_num > guess:
print("Too Low.")
guess_right = False
if random_num < guess:
print('Too High.')
guess_right = False
guess = int(guess)
if random_num == guess:
print("You got it! Good job.")
guess_right = True
# This function doesn't exist, so the loop won't ever actually end
# NameError exception is raised
the_end()
except:
print("That is not an int. Try again")