repl.it中警告的含义?

Meaning of warning in repl.it?

我想在这里尝试使用 != 而不是 =(通过切换 ifelse 语句),以防我想添加一个 elif: 之后(可能是一个测试响应如果输入的猜测大于最大值)。 我不明白为什么它现在抛出 warning/error,或者那个警告是什么意思。

澄清一下,代码运行并且似乎工作正常,但我在 repl.it 中收到警告,我正在使用 write/run。

第 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)

我的 IDE(在本例中为 repl.it)给出了这个特殊警告。 它让我知道我是 reusing/redefining 一个不同范围(即函数内)的变量(在本例中为 guess),这可能是个问题。

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