2017-05-05 37 views
0

我想通过切换ifelse语句来实验!=而不是=(假设我想添加一个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) 
+0

我跑你的代码,我似乎没有得到一个错误:C编辑:这是在Windows上使用python 3.6.1 – Jaxi

+0

我应该澄清,它不会抛出一个错误,因为在不工作,但正确运行,与我的代码中第3行,第21行旁边的警告。 – toonarmycaptain

+0

也许http://stackoverflow.com/questions/28843079/redefined-outer-name-from-outer-scope-python3 – binboavetonik

回答

0

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

正在得到第二个警告,因为我是用max作为变量名,并max有蟒蛇内的其他用途,主要是作为一个列表和其他iterables使用的max Built-in Function。重新定义max也可能是一个问题,如果你真的想要使用内置功能。在这种情况下,它不是,但IDE有助于警告您,因为这不是一个明智的做法。

相关问题