在repl.it中的警告的含义?
问题描述:
我想通过切换if
和else
语句来实验!=而不是=(假设我想添加一个elif:after(可能是测试响应,如果输入的猜测大于max)。 我不明白为什么它现在抛出一个警告/错误,或什么警告的手段。在repl.it中的警告的含义?
为了澄清,代码运行,似乎工作,但我得到了我用来写/运行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)
答
这个特殊的警告是由我的IDE给出的(在这种情况下是repl.it)。 它让我知道我正在重用/重新定义一个变量(在这种情况下为guess
)在不同的范围内(即在函数内),这可能是一个问题。
正在得到第二个警告,因为我是用max
作为变量名,并max
有蟒蛇内的其他用途,主要是作为一个列表和其他iterables使用的max
Built-in Function。重新定义max
也可能是一个问题,如果你真的想要使用内置功能。在这种情况下,它不是,但IDE有助于警告您,因为这不是一个明智的做法。
我跑你的代码,我似乎没有得到一个错误:C编辑:这是在Windows上使用python 3.6.1 – Jaxi
我应该澄清,它不会抛出一个错误,因为在不工作,但正确运行,与我的代码中第3行,第21行旁边的警告。 – toonarmycaptain
也许http://*.com/questions/28843079/redefined-outer-name-from-outer-scope-python3 – binboavetonik