repl.it中警告的含义?

时间:2017-05-05 12:49:06

标签: python warnings redefine

我想试验!=而不是= here(通过切换ifelse语句),以防我想添加elif:after(如果输入可能是测试响应)猜测大于最大值)。 我不明白为什么它现在发出警告/错误,或者警告意味着什么。

为了澄清,代码运行并且似乎有效,但我在repl.it中收到警告我正在使用写/运行。

第3行def make_guess

它说 - Redefining name 'guess' from outer scope (line 21) < =这是什么意思?

然后在第21行max=int(input("Guess number between 1 and what?"))

它说Redefining built-in 'max' [虽然我猜这不是问题所在,因为如果我重命名该变量maxi它就不会显示第21行的警告]

原始代码:

import random

def make_guess(guess):
    if guess == randomnumber:
        print()
        print("Congratulations, you guessed my number!")
    else:
        guess = int(input("Guess again?"))
        make_guess(guess)

print("GUESS MY NUMBER")
print()
max = int(input("Guess number between 1 and what?"))

randomnumber = random.randint(1, max)

guess = int(input("What is your best guess?"))
make_guess(guess)


print("My number was", randomnumber)

新代码:

import random


def make_guess(guess):
    if randomnumber != guess:
        guess = int(input("Guess again?"))
        make_guess(guess)
    else:
        print()
        print("Congratulations, you guessed my number!")


print("GUESS MY NUMBER")
print()

max = int(input("Guess number between 1 and what?"))

randomnumber = random.randint(1, max)

guess = int(input("What is your best guess?"))
make_guess(guess)

print("My number was", randomnumber)

2 个答案:

答案 0 :(得分:0)

我的IDE(在这种情况下是repl.it)发出了这个特别的警告。 它让我知道我在一个不同的范围内(即在函数内)重用/重新定义变量(在这种情况下为guess)并且这可能是一个问题。

第二个警告是因为我使用max作为变量名,max在python中有其他用途,主要是与列表和其他迭代使用的max Built-in Function 。如果您确实想要使用内置函数,则重新定义max也可能是一个问题。在这种情况下它不是,但IDE有助于警告你,因为这不是一个明智的做法。

答案 1 :(得分:0)

我将您的代码复制并粘贴到了repl中,它似乎运行得很好。也许设置有误,或者运行时不小心按了一个字母。一个小写字母或一个小写字母可能会弄乱您的工作页面。