0

我想在这里尝试使用 != 而不是 = (通过切换ifandelse语句),以防我想添加一个 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)
4

1 回答 1

0

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

给出第二个警告是因为我将max其用作变量名,并且max在 python 中有其他用途,主要是作为与列表和其他可迭代对象一起使用的max内置函数。max如果您真的想使用内置函数,重新定义也可能是一个问题。在这种情况下,它不是,但 IDE 会帮助您警告您,因为这不是一个可取的做法。

于 2017-10-10T16:24:41.867 回答