我怎样才能避免" UnboundLocalError:局部变量' usedrandomnumber'在转让前引用"在我的代码?

时间:2016-11-09 19:05:28

标签: python loops variables

我目前有一个代码,用于让计算机猜出我脑海中的数字。我一直收到错误,因为我在一行中多次使用变量。

import random

N = int(input())

Low = 0
High = N

p=False

guess = random.randint(Low, High)
print(guess)

def get_response():
    response = input()
    global p
    if response == 'l':
        high = guess - 1
        guess = random.randint(Low, high)
        print(guess)

    elif response == 'h':
        low = guess + 1
        guess = random.randint(low, High)
        print(guess)

    elif response == 'c':
        print("He got it")
        p=True

我怎么能解决这个问题,怎么能循环呢? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

你没有调用它什么都不做的功能

p剂量不需要是全局的,因为没有局部影子

p也看起来像是一个停止迭代的标志,但这不是一个中断

语句可以停止一段时间(True)

没有usedrandomnumber,因此没有UnboundLocalError

print('think of a integer in the range [0,100]')
low, high = 0, 100
while(True):
    guess = (low + high)//2 # // int div
    cmd = input('is it %d [Yes(y), higher(h), lower(l)]\n>>> ' % guess)
    if cmd[0].lower()=='y':
        break
    elif cmd[0].lower()=='l':
        high = guess - 1
    elif cmd[0].lower()=='h':
        low = guess + 1
    else:
        print('please answer with "y", "h", or "l" ')
print("I win! your number is %d"%guess)

总之,你需要一个循环来寻找数字

打印以提供说明

输入从用户获取命令 cmd [0]将获得命令的第一个字母以区分它们 .lower()将小写的命令不区分大小写